软件测试各过程的意义
时间:2026-01-22
时间:2026-01-22
软件测试过程
海辉软件应用测试部门在长期的行业测试经验中,在软件测试过程模型方面总结出了如下图所示的改进W模型:
软件测试改进W模型
相对于传统V模型,W模型更科学,由一个开发的“V”和一个与之并行的测试“V”组成,体现了“尽早地和不断地进行软件测试” 的软件测试基本原则,强调的是测试伴随着整个软件开发周期,测试与开发是同步进行的,而且测试的对象不仅仅是程序代码,需求、设计同样要进行测试(图中的“V&V”即表示对需求文档、设计文档的验证Verification和确认Validation)。
根据金融行业应用系统IT架构复杂、应用系统间关联度高的特点,在单一应用系统系统测试完成后,应进一步在具备其他应用系统的测试环境中执行“系统集成测试”(System Integration Testing,SIT),以验证各应用系统间数据传递正确、业务功能正常完成。
鉴于金融行业对应用系统准确性、稳定性、安全性要求高及应用系统失败将造成巨大损失的特点,为保证万无一失,在用户验收测试完成后、系统正式上线前,一般还会在准生成环境中进行“上线版本验证”测试,再次验证系统功能性能是否满足要求,系统在使用过程中是否会出错等
等。
按照当前金融行业开发测试现状,一般情况下,单元测试、集成测试由开发项目组执行,系统测试、系统集成测试、用户验收测试、上线版本验证测试由测试部门执行或参与(用户验收测试由业务部门组织执行,测试部门提供测试工具支持和测试环境支持等)。
第一章 测试阶段说明
根据海辉测试W模型,测试按阶段划分可分为:单元测试、集成测试、系统测试和用户验收测试(UAT),在系统测试完成后,根据被测系统具体情况可选择实施系统集成测试(SIT)和上线版本检验测试。 测试在不同阶段涉及到的部分测试内容如下表所示:
1.1 单元测试
单元测试是测试的基础级别。单元测试着眼于程序或系统的较小构建模块,是执行每个模块以证实其履行了指定功能的过程。单元测试由开发人员完成。
单元测试过程是根据详细设计文档和编码规范的要求,对系统中程序单元并行进行测试。单元测试阶段形成的文档包括:《单元测试计划》、《单元测试案例》、《单元测试报告》、《代码审查表》等。
1.1.1 测试方法
单元测试的方法主要采用静态测试方法和动态测试方法。 静态测试
静态测试方法能快速找到缺陷,发现30%~70%的逻辑设计和编码缺陷。静态测试方法的依据是项目的程序设计文档、程序的源代码清单、编码规范和代码审查表等。静态测试中最常用的手段是代码审查。
审查是一种正式的评估方法,将由非制作者本人的个人或小组详细检查阶段成果,以查明是否有错误、是否违反开发标准及是否存在其他问题。代码审查可以发现违背编码规范的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。执行代码审查前,各个项目组需制定适用于本项目的《代码审查表》,覆盖以下几类问题,并对每类问题进行细化和补充:
Comment:注释没写,或者格式不对,或者毫无意义
Coding Standard:没遵守编码规范
Existing Wheel:重复现成的代码,或者是开源项目,或者其他项目已有代码
Performance bottle and Improvement:性能问题
Code Logic Error:代码逻辑错误
Business Logic Error:业务逻辑错误
动态测试
针对代码只进行静态测试是不完整的。动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。动态测试的必要手段是设计和执行单元测试案例,其覆盖标准有:
语句覆盖:每条语句至少执行一次
判定覆盖:每个判定的每个分支至少执行一次
条件覆盖:每个判定的每个条件应取到各种可能的值
判定/条件覆盖:同时满足判定覆盖条件覆盖
条件组合覆盖:每个判定中各条件的每一种组合至少出现一次 路径覆盖:使程序中每一条可能的路径至少执行一次。
要达到较强的覆盖程度,需要付出案例设计和编写的工作量。动态测试案例的设计一般和代码重构并行完成,可以采用以下方法进行补充和完善:
基本路径法:在程序控制流图的基础上,通过分析控制构造的环
路复杂性,导出基本可执行路径集合,从而设计测试案例的方法。设计出的测试案例要保证在测试中程序的每个可执行语句至少执行一次。
边界值分析法:合理的输入条件与不合理的输入条件。
错误推测法:列举出程序中所有可能的错误和容易发生错误的特
殊情况,根据它们选择测试案例。
1.1.2 测试流程
单元测试对应开发过程中的编码阶段,其流程包括测试计划、测试设计、测试执行、测试总结、测试过程审计等环节。
单元测试流程图
在单元测试过程中体现了静态测试(代码审查)和动态测试相结合的方法。代码审查一般在动态测试之前启动,并允许交错或同步进行。
1.2 集成测试