测试过程
- 需求分析:分析需求文档,包括功能需求和非功能需求。理解需求有助于确保测试用例覆盖所有预期的功能和边界情况。
- 测试计划:确保参与人员能明确测试的范围、资源、方法、时间表,帮助团队更好地管理和控制测试过程,提高软件质量,并在开发周期内及时发现和解决问题。
- 测试设计:详细设计测试用例,包括输入数据、预期输出、测试步骤等。
- 测试实现:根据设计的测试用例进行准备工作,包括配置测试环境、准备测试数据等
- 测试执行:执行测试用例,记录测试结果,标记通过或失败的测试用例,及时将问题记录并反馈给开发团队。
- 测试评估:评估测试覆盖率、测试有效性和测试结果。分析未通过的测试用例和未被覆盖的功能,决定是否需要进行进一步测试。
测试计划
- 测试目标和范围:定义测试的目标、期望结果以及测试要覆盖的功能或模块。
- 测试资源:明确参与测试资源、测试所需软件、硬件
- 测试策略:描述测试使用的方法和技术,如黑盒测试、白盒测试等
- 测试环境:说明测试所需配置的环境,如服务器、网络、数据等
- 测试计划和日程:列出测试的时间安排和每个阶段的具体任务
- 测试用例:详细描述测试用例,包括输入数据,执行步骤,预期结果等。
- 风险管理:指出可能影响测试的风险和应对措施
- 退出测试标准:确定什么时候测试可以结束,如达到一定的测试覆盖率或发现缺陷在可接受范围内
- 文档与报告:明确测试过程中产生的各类文档和报告
测试用例
测试用例是针对某一功能、模块或特定场景设计的一套通过自动化或手动方式验证系统正确性的操作步骤、输入数据和预期结果的集合。其目的是为了确保系统在不同情况下都能按照预期工作,从而提高软件质量,减少缺陷,保证用户体验。
重要性
- 确保软件的正确性和可靠性。通过全面的测试用例,可以覆盖各种可能出现的场景,寻找潜在的问题。
- 提高软件质量。测试用例能帮助找出代码中的bug,从而在开发阶段就能修复这些问题,减少产品发布后的缺陷。
- 节省时间和成本。提前发现并修复问题,比在后期发现bug并进行修复更经济高效。
- 提供开发和测试团队的沟通桥梁。测试用例能清晰地描述系统应如何工作,方便团队在开发和测试过程中明确需求和期望。
- 提高维护性。良好的测试用例文档可以在系统更新或功能扩展时,迅速验证新改动是否影响了现有功能。
结构
- 编号:唯一标识编号,方便追踪管理
- 测试用例描述:描述测试用例功能
- 前置条件:执行测试用例前需要满足的条件,如环境设置、数据状态
- 执行步骤:测试用例的执行步骤
- 预期结果
- 实际结果
测试方法
黑盒测试
无需知道程序内部具体结构和代码,仅设计输入值测试代码功能和性能。常用的黑盒测试方法有:
- 等价类划分:将输入数据划分为不同的等价类,选取代表性数据进行测试。例如,输入年龄要求在18到60之间,18到60为有效等价类,小于18和大于60为无效等价类。
- 边界值分析:针对输入或输出的边界进行测试。例如,输入年龄要求在18-60之间,17、18、60、61都为边界值。
- 决策表测试:使用决策表确保覆盖所有可能的情况组合。
通过构造决策表,可以很清楚地表示出复杂的业务规则和条件。假设有一个贷款审批系统,根据贷款金额和信用分数来决定是否批准。一个简化的决策表可能是:
贷款金额<5000且信用分> 700-> 批准
贷款金额>5000且<2000且信用分>750->批准
贷款金额>20000 且信用分>800->批准
其他情况->不批准 - 因果图:用于处理输入条件和输出结果之间的依赖关系生成测试用例。
- 状态迁移测试:测试不同状态之间的转移情况,适用于带有状态机的系统。
当你的系统存在多个状态并且可以在这些状态之间转移时,你会用到这种方法。比如一个简单的自动售票机:有"待机",“选择票”.“付款”,出票"四个状态,通过不同"操作如按按钮,投市等行为在状态之间迁移。测试用例需覆盖所有状态以及状态转移。
白盒测试
需要知道程序内部具体结构和代码,目的在于代码的覆盖。
- 路径覆盖:if和else都需要执行。
- 语句覆盖:每一条语句都至少被执行一次。
- 分支覆盖:if(true)和if(false)都需被执行。
- 条件覆盖:当条件语句有多个布尔表达式,需要测试每个组合。
- 逻辑覆盖:包括上面所有方法,每一种方法都从不同的角度验证程序的逻辑结构是否被充分测试。
- 数据流测试:重点在于检查变量的定义,使用和销毁过程。
不同阶段的测试
- 单元测试:对软件的最小可测试单元(方法、函数)进行测试,确保其单独工作正常。
- 集成测试:经过测试的模块集成在一起之后,验证它们之间能否正常交互合作。主要测试模块间的接口和数据传递。
- 系统测试:对整个软件进行全面测试,验证系统是否满足其规格要求。测试内容包括功能、性能、用户体验、安全性等。
- 验收测试:在系统交付前进行测试,验证系统是否满足期望和要求,是否达到交付标准。
- 回归测试:软件修改后验证新版本没有引入新错误,之前修复的错误不会再出现,保证软件的稳定性和可靠性。
测试报告
- 测试概述:这包括测试的目的,范围,目标,背景信息等。
- 测试环境:描述测试所使用的硬件,软件,网络环境及其配置。
- 测试方法:具体说明采用了哪些测试方法(单元测试,集成测试,系统测试,回归测试等)。
- 测试案例:列出所有执行的测试用例及其详细信息,包括预期结果和实际结果。
- 缺陷报告:详细记录在测试过程中发现的所有缺陷,包括缺陷的描述,类别,严重程度,状态等。
- 测试结果分析:对测试结果进行分析,说明测试是否达到了预期目标,有哪些问题需要解决。
- 结论与建议:给出测试的最终结论,并提出改进建议或解决方案。
测试结论应包括:
- 测试范围覆盖情况:说明测试覆盖了产品的哪些功能和模块,有哪些未测到。
- 缺陷统计分析:详细统计测试过程中的发现的缺陷数量,类型,严重程度等,并进行分
析。 - 测试指标完成情况:对比预设的测试指标(如缺陷密度,修复效率等),评估是否达到
了测试标准。 - 风险分析:评估残留缺陷风险和未覆盖区域的潜在风险,考虑可能对产品质量的影响。
- 改进建议:总结测试过程中发现的改进空间,并提出具体建议。
JMeter
- 创建测试计划Test Plan,测试计划是所有测试对象的容器。
- 测试计划下添加线程组,可设置线程数量、启动时间、循环次数。
- 线程组下添加采样器,一般是HTTP Request。
- 设置采样器,url、请求方法、参数。
- 线程组下添加监听器Listener,常用结果树View Results Tree、Summary Report。
- 执行测试,监听器查看结果,响应时间、吞吐量、错误率等。