2.2 软件测试
测试
测试,是一个软件过程的组成部分,是一个贯穿于软件过程的行为,仅仅在工作流结束之后再测试该工作流的产品是远远不够的。
测试由开发人员和软件质量保证人员共同完成。
两种测试类型
基于非执行的测试和基于执行的测试
基于非执行的测试
测试对象包括各种文档和代码
基于非执行测试的方法包括
评审软件,仔细地读软件文档和代码,或用数学方法分析软件
基于执行测试的测试对象是可执行代码代码
关于测试的错误的认识:测试时为了证明故障不存在
正确的认知是,一个成功的测试是为了找了一个错误
基于执行的测试的定义
基于或部分基于在已知的环境下用经过选择的输入执行该产品而得到的结果来推断产品行为特性的过程。
那么要测试哪些行为特性呢?
- 正确性
- 实用性
- 可靠性
- 健壮性
- 性能
正确性:
如果:输入数据满足规格说明的规定,给产品提供其所需要的所有资源,该产品给出符合规格说明的结果。
实用性:
软件满足了用户的需要了吗?
例如:
- 软件是否易于使用,
- 提供实用的功能,
- 软件相对其他同类的软件来说,是否成本划算。
可靠性
- 故障频率和严重程度的度量
- 软件多长时间出现故障
- 修复故障平均需要多少时间
- 平均修复故障时间和成本
健壮性
- 工作运行条件范围
- 有效输入带来错误输出的可能性
- 产品的输入无效时,输出结果的可接受性
性能
指软件是否符合时间和空间上的要求,满足到说明程度,
例如:对于一个嵌入式的计算机系统要求软件只能使用128m的内存,如果软件要求运行环境为256m内存,那么无论该软件多么优秀,都无法符合要求。
再如:某实时系统,需要每0.6秒采集一次数据,但是,软件无法0.6秒采用一次数据,那么该软件无法使用。
由谁来执行基于执行的测试?
测试是以一种破坏性的工作
- 由SQA人员进行系统测试
- 由程序员自己来调试自己的代码模块
什么时候停止测试?
当软件被放弃时,对软件测试的工作才能彻底停止。