软件测试人员发现更多程序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,不断改进软件测试用例和方法,减少未来类似问题的发生。

相关推荐
卓码软件测评6 小时前
第三方课题验收测试机构:【API测试工具Apifox使用指南】
功能测试·测试工具·单元测试·压力测试·可用性测试
workflower1 天前
Fundamentals of Architectural Styles and patterns
开发语言·算法·django·bug·结对编程
测试老哥1 天前
测试用例之正交试验法、功能图法
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
lvchaoq1 天前
记录小程序真机bug,而模拟器无法复现
小程序·bug
zhonghaoxincekj1 天前
晶体管的定义,晶体管测量参数和参数测量仪器
功能测试·单片机·学习·测试工具·单元测试·制造
喜欢便码2 天前
禅道提交bug的几种状态
bug
从前慢,现在也慢2 天前
(3)Bug篇
学习·bug·测试
西柚小萌新2 天前
【Bug:docker】--Docker国内镜像源加载失败
docker·容器·bug
川石课堂软件测试2 天前
自动化测试之 Cucumber 工具
数据库·功能测试·网络协议·测试工具·mysql·单元测试·prometheus