软件测试是一个过程,是哲学思想在软件工程中的运用,更是质量目标的扩展和延伸。软件测试构成了具有丰富内容的三维空间。
1. 测试目标— 质量特性的验证
正确性测试 (Correctness testing) 或功能性测试:是基于产品功能规格说明书、从用户角度针对产品特定的功能和特性所进行的验证活动,以确认每个功能是否得到完整的实现,用户能否正常使用这些功能。功能测试一般要在完成集成测试后进行,而且是针对应用系统、在实际运行环境下而进行的测试。
性能测试(Performance testing):是测试在一定条件下系统行为表现,是否在设计的性能指标范围内。如测试网站在并发用户数为10、100、1000、10000等情况下,页面的响应时间是否在3秒或5秒内,响应时间最长是否不超过15秒或30秒。性能测试不同于负载测试(Stress/load testing),性能测试是在定义的各种条件下去衡量系统的有关性能指标,而负载测试只测试在一些极端条件下,系统还能否正常工作,或加载到系统崩溃而找出系统性能的瓶颈,所以也可以和性能测试结合起来做。
可靠性测试(Reliability testing):是评估软件在运行时的可靠性,即通过测试确认平均无故障时间(MTTF, Mean Time To Failure)或最初平均寿命,即故障发生前平均工作时间(MTTFF, Mean-Time -TO-First-Failure)。可靠性测试强调随机输入,并通过模拟系统实现,很难通过实际系统的运行来实现。可靠性测试,一般伴随着强壮性测试(Robustness/strong testing)。
安全性测试(Safety or Security testing):是测试系统在应付非授权的内部/外部访问、非法侵入或故意的损坏时的系统防护能力,以检验系统有能力使可能存在来自于内/外部的伤害或损害的风险限制在可接受的水平内。软件可靠性要求,通常包括了安全性的要求。但是软件的可靠性不能完全取代软件的安全性,因为安全性还涉及到数据加密、保密、存取权限等方面的要求。
容错性测试(Tolerance testing):是检查软件在异常条件下自身是否具有防护性的措施或者某种灾难性恢复的手段。如当系统出错时,能否在指定时间间隔内修正错误并重新启动。容错性测试看作由系统异常处理测试和恢复测试组成。
恢复测试 (Recovery testing),在系统崩溃、硬件故障、或者其他灾难发生之后,重新恢复系统和数据的能力测试,包括确定软件系统的平均修复时间(MTTR,Mean Time to Repair)。
兼容性测试 (Compatibility testing),测试在各种的硬件/软件/操作系统/网络环境下的软件表现,包括硬件接口、软件新旧版本兼容、已存在数据的兼容能力。
2. 测试方法 — 哲学的思考
测试的方法技术,经过多年的发展,已经相当成熟,方法比较多。如白盒测试方法 (White-box test) 、灰盒测试方法(Gray-box test)和黑盒测试方法(Black-box test),就是一种哲学思想在软件测试中的体现和延伸。从哲学观点看,分析问题和解决问题的方法有两种:白盒子方法和黑盒子方法。如果我们对被测的对象/世界(软件)认知很少,可以不用了解其内部结构,完全只关注其外部的变化,如外部的输入、外部作用或被测的对象所处的条件以及被测的对象输出的结果,就可以完成测试,这就是黑盒测试方法。随着对被测的对象的认知越来越多,就可以采用灰盒测试方法;当我们完全认知被测的对象时,就可以用白盒测试方法。也见: 测试方法的辩证统一 (1)和 第7回 软件测试方法的应用之道。
3. 测试阶段 - 生命周期的显现
随着软件开发的生命周期所包含的活动——进程的不断推进,测试与之对应,也划分了不同的测试阶段,包括单元测试、集成测试、系统测试和验收测试等,我们将在后面陆续讨论。
版权所有,软件测试演义® ——系列讨论的目录,见: 软件测试演义——中高级系列(序)