软件测试人员发现更多程序bug

软件测试人员发现更多程序bug

1. 理解需求和业务,需求评审时候发现bug

熟悉了产品的业务流程、才能迅速找出软件中存在的一些重要的缺陷,发现的软件缺陷才是有价值的。否则即使你能找到一些软件缺陷,那也是纯软件的缺陷,价值不大。阅读需求文档的时候,在需求评审阶段,识别和处理潜在的bug。常见的问题包括:
需求不明确或模糊:
需求文档中的描述不够清晰,导致理解上的歧义。需求缺少必要的细节,使得开发无法准确实现功能。
用户体验问题:
需求没有考虑到用户的易用性,可能导致用户体验不佳。需求与业务目标或用户期望不一致。需求的交互设计不符合用户习惯,需要调整。
安全性问题:
数据泄露风险:需求没有考虑数据保护措施,可能导致用户数据泄露,数据库存放明文密码,导出用户信息。
权限控制不当:需求的权限控制不合理,可能导致未授权访问。
性能问题:
需求没有考虑性能优化,可能导致系统响应缓慢,用户、设备数量超过10万,授权和登录功能、同步到其他设备。导入和导出没有限制数量。
可维护性问题:
需求的实现方式不利于未来的扩展和维护,每一个功能需要有日志记录,限制单个日志空间占用大小,增加新组件注册。云平台系统需要支持磁盘扩容。
一旦发现这些问题,应立即记录并向测试经理反馈,团队成员共同分析bug的原因和影响,确定是否需要修改需求。及时提出问题,可以有效减少后期开发中的返工和修改成本。

2. 写测试用例多思考发现更多bug

测试用例的全面性和有效性,写出能够发现更多bug的测试用例。

理解需求和设计
详细阅读需求文档:理解软件的功能需求、业务逻辑和非功能需求(如性能、安全等)。输入内容限制格式长度,新增和修改功能没有限制名字不能重复。查询功能精确查询和模糊查询,多条件查询。
参与需求讨论:参与需求讨论,确保对需求的理解没有偏差。明确哪些功能是本次测试的重点,用户最常用的业务流程,确保这些路径被充分测试。
设计测试用例
正常流程:设计覆盖所有正常业务流程的测试用例。
异常流程:考虑各种可能的错误情况和异常输入,设计相应的测试用例。模拟真实的使用场景,包括用户可能遇到的意外情况。
边界条件:针对每个输入,设计边界值测试用例,包括最小值、最大值、刚超过最小值、刚低于最大值等。
等价类划分:将输入数据划分为有效和无效的等价类,从每个类中选取代表性的值进行测试。验证系统如何处理非法或无效的输入。
边界值分析:专注于输入域的边界,因为这些地方最容易出错。
安全性测试:考虑潜在的安全漏洞,设计测试用例来检查输入验证、权限控制、数据加密等方面,导入功能需要限制文本格式和大小。
性能测试:设计测试用例来评估系统在高负载下的表现。
查看历史bug:参考以前发现的bug,提供更多参考思路。

用例评审和优化
用例评审:让同事审查你的测试用例,他们可能会发现你遗漏的测试点。
持续改进:根据发现的bug和新的需求,参考维护的文档,不断更新和优化测试用例。

3. 测试时候发现bug

测试每一个功能都需要考虑:外观、功能、性能、安全、易用性和兼容性。每天花一点时间查看其他人提交的bug,拓展自己的测试思路,多问一下维护组的同事,重点测试用户反馈的一些问题。集中测试的时候要使用二八原则。
外观
布局问题:元素错位、间距不一致、格式不统一、对齐问题、翻页功能和浏览器滚动条等。颜色搭配不合理、字体不统一或不清晰、中英文切换查看显示字体。
图片和图标问题:图片格式不同加载失败、不同显示屏图标分辨率低或显示错误。

功能
预期的功能未实现或部分实现。功能实现与需求不符,导致操作结果错误。业务正向和逆向流程,不同入口使用业务流程,导致业务流程错误。
新增功能:名称重复、所有字段填写后保存后丢失或错误,页面内容显示错误,字母大小写没有校验,多次点击保存按钮保存了多次,关键信息没有tooltips。
修改功能:没有限制输入字符类型和长度、没有区分大小写字母、时间先后没有校验、修改操作完后记录结果错误,修改名称和已存在资源相同名称保存成功,修改操作日志记录错误,修改内容没有同步到已注册的其他组件。
删除功能:删除失败、删除自定义内容失败、删除前没有提示信息、批量删除失败、物理删除用户数据、删除操作日志记录错误,删除内容没有同步到已注册的其他组件。
查询功能:无查询功能、没有限制输入字符长度、查询结果不准确、内置数据无查询结果、100万条数据查询加载慢、不支持关键词查询。
导入功能:导入数据失败、没有限制输入字符类型和长度、导入数据后位置乱序、导出默认数据后再导入失败、没有限制导入文件格式、没有限制导入文件大小和数据量(建议excel单个sheet限制10000行)、导入提示信息错误、导入数据后没有记录到日志或记录错误。
接口功能:缺少接口、接口没有限制每个字段长度和字符类型、缺少字段、接口文档错误(符号不正确、错别字、缺少字段)、接口返回结果错误与接口文档描述不一致。
网络功能:ipv4(回环127.0.0.1、回环域名localhost)、ipv6(回环::1、回环域名localhost)、纯ipv6环境功能正常、纯域名环境功能正常、使用已经被占用的IP、网口聚合、dchp自动获取地址能正常访问、DNS解析失败、nat地址、各组件配置nat、配置多网卡多个ip地址(一个地址通、一个地址网络不通)、各组件配置多个IP、禁用组件网卡功能继续使用,提示信息准确、高可用配置主备、主备切换、浮动IP地址注册组件切换主备、多个IP地址日志外发使用的IP地址、设备网络带宽瓶颈

性能
响应时间慢:登录系统响应时间长,数据量达到100万条加载慢,影响用户体验。
资源消耗大:系统资源(如内存、CPU)使用率高,可能导致系统崩溃。系统在高并发情况下性能下降,无法满足用户需求。

安全
1.SQL注入:攻击者通过在输入框中输入恶意SQL代码,尝试获取或修改数据库中的数据。
2.重放攻击漏洞:攻击者截获合法用户的请求,然后将该请求重复发送给服务器。
3.XSS(跨站脚本攻击):攻击者通过在网页中插入恶意脚本,当其他用户浏览该网页时,这些脚本会被执行,从而窃取用户信息或进行其他恶意操作。

4.文件上传漏洞:攻击者通过上传恶意文件,尝试执行远程代码或获取服务器权限,上传功能没有校验文件格式和内容。
5.弱密码策略:默认或过于简单的密码可能导致攻击者轻易破解账户。
6.未加密的数据传输:在数据传输过程中未进行加密处理,可能导致数据泄露或被篡改。
7.未经授权的访问控制:未对敏感资源进行严格的访问控制,可能导致攻击者越权访问。登录系统后台使用命令或者脚本越权。
8.缺乏安全更新和补丁:未及时修复已知的安全漏洞,可能导致攻击者利用这些漏洞进行攻击。使用中间件版本低存在漏洞,百度一下中间件的漏洞然后提bug。

易用性
导航困难:菜单结构复杂,用户难以找到所需功能。交互设计不符合用户习惯,需要调整,比如有的功能需要进入后台才能配置,页面需要有配置的选项。
帮助信息不足:缺少必要的帮助文档或提示信息,使用户难以理解如何使用软件,增加tooltips功能。
兼容性
跨浏览器问题:在不同浏览器上表现不一致,某些功能无法正常使用。
跨平台问题:在不同操作系统(国产操作系统)或设备上表现不一致,某些功能无法正常使用。

拓展思路:
参考其他人提交的bug,可以从不同的角度拓展思路,发现更多潜在的bug。也可以参考其他项目中的bug报告,了解常见的bug类型和解决方案;也可以借鉴其他测试人员的经验,学习他们的测试方法和技巧。
自由测试是一种非正式的测试方法,测试人员可以根据直觉和经验进行测试,不受预定义测试用例的限制。这种方法可以帮助发现一些容易被忽视的bug,但也可能因为缺乏系统性而导致漏测。在进行自由测试时,建议结合正式的测试用例一起使用,以获得更全面的测试覆盖。
根据二八原则(帕累托原则),80%的问题往往集中在20%的模块中。统计bug分布时,可以重点关注那些出现bug较多的模块。通过对这些模块的深入测试,可以发现更多bug,有效提高系统的整体质量。

4. 回归bug的时候发现更多bug

在回归测试时发现更多bug是一个常见且重要的现象。在修复一个bug时,可能会对其他功能模块产生连锁反应,导致新的bug出现。一个模块的修复可能会影响到另一个模块的正常使用。
测试覆盖不全面:在初次测试中,可能由于测试用例设计不充分或者测试时间和环境的限制,未能覆盖所有可能的场景。在回归测试中,通过更全面的测试用例,可能会发现之前未检测到的bug。
需求变更:在软件开发过程中,需求可能会发生变化。这些变更如果没有及时反映到测试用例中,可能会导致新的bug在回归测试中被发现。
环境变化:测试环境和生产环境可能存在差异。在回归测试中,如果使用了更接近生产环境的配置,可能会暴露出之前未发现的环境相关bug。
人为因素:开发人员在修复bug时可能会因为疏忽或误解需求而引入新的bug。
确保之前发现的bug已经修复,并且修复没有引入新的问题。多思考类似的功能有没有同样的问题。

5. 软件发布后,用户使用中的bug

软件发布后,用户在实际使用过程中遇到的各种问题,用户在使用过程中发现的bug是一个不可避免的现象。以下是一些常见的用户使用中发现的bug类型及其描述:
功能问题:某些预期的功能与用户期望不符。
性能问题:应用响应缓慢,加载时间长,在高并发情况下,系统崩溃或服务不可用。
兼容性问题:在不同操作系统、浏览器或设备上表现不一致。
安全性问题:数据泄露或未授权访问,系统容易受到SQL注入、XSS攻击等。
稳定性问题:长期使用,应用崩溃或频繁出错,内存泄漏导致系统资源耗尽。
国际化和本地化问题:多语言支持不完整或翻译错误,日期、货币格式未根据地区正确显示,系统初始化后语言正确。
用户体验问题:界面不友好,操作复杂,缺乏必要的帮助信息或提示。

采取以下措施:
问题分析和定位:对用户报告的问题进行详细分析,重现问题场景,定位问题根源。
记录和跟踪:将用户反馈的bug记录在案,并跟踪其处理状态。这有助于后续的问题管理和质量改进。
测试和验证:在问题修复后,进行充分的测试以确保问题已经解决,并且没有引入新的问题。
持续改进:通过分析用户反馈的bug,不断改进软件测试用例和方法,减少未来类似问题的发生。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CORE MVC 过滤器 (筛选器)《2》 TypeFilter、ServiceFilter

TypeFilter、ServiceFilter ServiceFilter vs TypeFilter ServiceFilter和TypeFilter都实现了IFilterFactory ServiceFilter需要对自定义的Filter进行注册,TypeFilter不需要 ServiceFilter的Filter生命周期源自于您如何注册(全局、区域)&…

SpringCloud-基于Docker和Docker-Compose的项目部署

一、初始化环境 1. 卸载旧版本 首先,卸载可能已存在的旧版本 Docker。如果您不确定是否安装过,可以直接执行以下命令: sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logro…

了解芯片光刻与OPC

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 参考资料: 光刻技术与基本流程 https://www.bilibili.com/video/BV1tP4y1j7BA OPC https://www.bilibili.com/video/BV1o94y1U7Td 论文:计算…

[网络]抓包工具介绍 tcpdump

一、tcpdump tcpdump是一款基于命令行的网络抓包工具,可以捕获并分析传输到和从网络接口流入和流出的数据包。 1.1 安装 tcpdump 通常已经预装在大多数 Linux 发行版中。如果没有安装,可以使用包管理器 进行安装。例如 Ubuntu,可以使用以下…

DBeaver显示PostgreSQL数据库的信息模式

DBeaver连接PostgreSQL数据库后,默认情况下是不加载信息模式的,如果有需要,我们可以通过设置显示信息模式。 具体步骤:点击数据库连接–>右键打开设置–>连接设置–>常规–>导航视图–>自定义–>勾选显示系统对…

前端的全栈混合之路Meteor篇:运行在浏览器端的数据库-MiniMongo介绍及其前后端数据实时同步示例

Meteor 是一个全栈 JavaScript 框架,致力于简化 Web 应用开发。MiniMongo 是 Meteor 框架中的一个独特组件,它将 MongoDB 数据库的功能带到了客户端,使客户端能够像操作数据库一样,进行查询、插入、更新和删除操作。这使得前端开发…

overleaf的使用[4]:图表与插图管理

菜鸟:老鸟,我最近在用Overleaf写论文,但在插入图表和插图时总是遇到问题。你能帮帮我吗? 老鸟:当然可以!图表和插图在LaTeX中是非常重要的部分。你有没有试过用 figure 和 table 环境? 菜鸟&a…

宁夏众智科技OA办公系统存在SQL注入漏洞

漏洞描述 宁夏众智科技OA办公系统存在SQL注入漏洞 漏洞复现 POC POST /Account/Login?ACTIndex&CLRHome HTTP/1.1 Host: Content-Length: 45 Cache-Control: max-age0 Origin: http://39.105.48.206 Content-Type: application/x-www-form-urlencoded Upgrade-Insecur…

Spring Boot项目中使用MyBatis

在Spring Boot项目中使用MyBatis可以极大地简化配置过程,因为Spring Boot提供了很多自动化配置的功能。以下是一个简单的指南,介绍如何在Spring Boot项目中使用MyBatis。 1. 添加依赖 首先,你需要在pom.xml文件中添加MyBatis和MyBatis-Spri…

【在Linux世界中追寻伟大的One Piece】System V共享内存

目录 1 -> System V共享内存 1.1 -> 共享内存数据结构 1.2 -> 共享内存函数 1.2.1 -> shmget函数 1.2.2 -> shmot函数 1.2.3 -> shmdt函数 1.2.4 -> shmctl函数 1.3 -> 实例代码 2 -> System V消息队列 3 -> System V信号量 1 -> Sy…

【MySQL 06】表的增删查改

目录 1.insert 增添数据 1.1单行数据 全列插入 1.2多行数据 指定列插入 1.3插入否则更新 1.4.插入否则替换 2.select查找 2.1 全列查找 2.2指定列查找 2.3查询字段为表达式 2.4为查询结果指定别名 2.5 结果去重 2.6 where条件查询 2.7结果排序 2.8.筛选分页结果…

Python中深拷贝和浅拷贝

# 在Python中,浅拷贝(shallow copy)和深拷贝(deep copy)是两种不同的复制方法,主要用于复制复杂对象(如列表、字典、集合等)。 # # 浅拷贝: # # 浅拷贝会创建一个新的对象…

侧边菜单的展开和折叠

环境准备&#xff1a;Vue3Element-UI Plus <script setup> import {ref} from "vue";// 是否折叠菜单&#xff0c;默认折叠 const isCollapse ref(true)// 退出登录 function logout() {alert(退出) }// 个人中心 function profile() {alert(个人中心) } <…

Java后端面试题+下一篇答案+实况场景题

uu们大家好&#xff01;市面上面试题很多&#xff0c;这边汇总并更新一下java后端面试的题目&#xff0c;助大家早日斩下心仪的offer&#xff01;&#xff01;&#xff08;下次跟新场景题...等我多碰几次壁...哈哈哈哈哈&#xff09; 这边放题目&#xff0c;下一篇跟新所有另面…

设计模式、系统设计 record part02

软件设计模式&#xff1a; 1.应对重复发生的问题 2.解决方案 3.可以反复使用 1.本质是面向对象 2.优点很多 1.创建型-创建和使用分离 2.结构型-组合 3.行为型-协作 571123种模式 UML-统一建模语言-Unified Modeling Language 1.可视化&#xff0c;图形化 2.各种图&#xff08;9…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十一集:制作法术系统的回血机制和火球机制

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作法术系统的回血机制 1.制作动画以及使用UNITY编辑器编辑2.使用代码和PlaymakerFSM制作回血机制二、制作法术系统的火球机制 1.制作动画以及使用UNITY编…

鸿蒙开发知识点速记全解

入门 1、API涵盖应用框架、系统、媒体、图形、应用服务、AI六大领域。 应用框架相关Kit开放能力&#xff1a;Ability Kit&#xff08;程序框架服务&#xff09;、ArkUI&#xff08;方舟UI框架&#xff09;等。系统相关Kit开放能力&#xff1a;Universal Keystore Kit&#xf…

测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布

2024年9月29日&#xff0c;MeterSphere开源持续测试工具正式发布v3.3版本。 在这一版本中&#xff0c;接口测试方面&#xff0c;接口导入功能支持导入Postman、JMX、HAR和MeterSphere格式的文件&#xff0c;接口场景的自定义请求步骤支持cURL快捷导入&#xff1b;测试管理方面…

VUE3.5版本解读

官网&#xff1a;Announcing Vue 3.5 | The Vue Point 2024年9月1日&#xff0c;宣布 Vue 3.5“天元突破&#xff1a;红莲螺岩”发布&#xff01; 反应系统优化 在 3.5 中&#xff0c;Vue 的反应系统经历了另一次重大重构&#xff0c;在行为没有变化的情况下实现了更好的性能…

HarmonyOS/OpenHarmony 如何将rawfile中文件复制到沙箱中

关键词&#xff1a;h5离线加载、HarmonyOS、OpenHarmony、文件操作、复制、解压 当下有一个场景&#xff0c;需要离线加载 h5离线资源zip包&#xff0c;并实现资源包的动态更新&#xff0c;那么仅靠 $rawfile并不能实现该功能&#xff0c;那么我们该如何实现&#xff1f; 我们…