求解不等式来产生满足特定路径的测试数据。
基于程序实际执行的方法中,
Korel 提出了分支函数极小化的方法。对于不满足要求的
分支,利用分支函数极小化,确定新的输入值,直至找到使程序沿指定路径执行的测试数
据。
基于目标路径的方法,
Gupta 提出了迭代逼近法,通过选择一系列与所选路径谓词相
关的语句进行迭代,得到一个线性约束集,用高斯消去法求解该约束集,获得一个输入增
量,最终产生选定路径的测试数据。
(二)组合测试用例生成技术
旨在生成较少的测试用例有效的检测软件系统中的各因素及其相互作用对系统产生的
影响,具有较高的错误检错能力。如今两两组合覆盖方法已经得到广泛应用,使用该方法可
以发现很多传统方法难以发现的错误,但该方法仍存在着一些局限,这一课题很多人在研
究,至今还没得到完美解决。
(三)面向对象测试用例生成技术
面向对象测试用例生成技术通常是根据程序内部结构和规范自动或半自动的生成测试
用例。主要有两种方法,分别是基于外部接口行为的和基于内部结构的测试用例生成。
四、软件测试技术
(一)软件测试阶段
软件测试分为单元、集成、系统和验收测试四个阶段。
(
1)单元测试:在隔离环境中对独立的软件模块进行测试以发现其中的缺陷。
(
2)集成测试:在单元测试基础上,当模块组装后查找模块间接口的错误。
(
3)系统测试:将软件系统与系统中的其它部分(硬件、信息)集成起来,以保证各
组成部分不仅能单独受到检验,而且在系统各部分协调工作的环境下也能正常工作。
(
4)验收测试:以用户为中心,软件开发人员和质量保证人员也参与其中。测试内容
包括:功能测试,特殊情况,文档检查,强度测试,恢复测试,可维护性,用户操作测试
用户友好性检验,安全测试。
(二)静态测试和动态测试
测试技术按是否运行程序分为静态测试和动态测试。
(
1)静态测试:不运行程序,分析、检查和审阅系统的相关文档,如需求、设计文档、
程序原代码等。
(
2)动态测试:执行并使用软件,通过事先设计好的测试用例,比较实际输出与预期
输出,发现存在的还未被发现的错误。
(三)白盒测试和黑盒测试
测试技术按是否查看源代码分为白盒测试和黑盒测试。
(
1)白盒测试:通过分析组件/系统的内部结构,并设计相应测试用例进行的测试。主
要分为基于数据流白盒测试,基于控制流的白盒测试和代码覆盖测试。
(
2)黑盒测试:不需要了解软件内部结构以及代码的具体实现,是基于需求规格说明
书的软件测试。它的技术包括等价类划分、便捷分析、决策表、状态测试、用例
/场景测试、基于
经验的测试等。黑盒测试主要分为功能测试和性能测试两大类。功能测试分为:逻辑功能测
试、界面测试、易用性测试(残疾人)、安装测试、兼容性测试;性能测试分为:一般性测试、
稳定性测试、负载测试和压力测试。
(四)其他测试技术
(
1)回归测试:对软件错误修改后,需要重复执行先前的用例,也可能需要设计新的
测试用例。贯穿于整个软件生命周期,既有黑盒回归也有白盒回归。
(
2)冒烟测试:主要指测试团队对软件系统主要功能进行先期测试,如果连主要功能