设计评审
从软件测试的视角看,设计评审非常重要,通过全面评审软件设计内容,可以在软件开发的早期发现一些潜在与性能和安全性有关的缺陷。如果这些缺陷在编面阶段才被发现,则修正缺陷耗费的时间将比设计阶段修改缺陷大得多。
详细而言,设计评审有助于确保下列问题:
软件设计符合功能规格说明和软件需求的全部内容;
确保软件设计符合全部性能目标;
软件设计考虑了应用程序在不同的布署场景时的全部安全性;
软件设计遵守了程序耦合和内聚、一致性、通讯、类设计、异常管理、资源管理、缓冲区等的代码编写格式要求,以便开发人员可以方便地扩展和定制软件。
软件设计遵守了国际化和本地化有关的指导准则。
此外,软件设计评审还要确保软件能够正确处理可能的安全攻击、性能优化和内存泄漏的问题。
实现编码评审
在实现编码评审阶段,从详细测试计划文档中执行测试用例,对软件的代码进行审阅,这是软件单元测试的重要步骤。通过代码评审,可以在软件开发的早期发现问题。
具体地,实现代码评审有助于确保下列问题:
软件代码遵守了软件需求文档的要求;
软件的类命名、变量、方法名等代码元素遵守了命名规范;
软件代码在合适位置包含了有助于其他开发人员正确理解的注释语句;
软件代码可以正确处理与性能、扩展性、安全性有关的问题;
软件代码对异常管理和内存分配有关的资源管理能正确处理;
软件代码考虑了软件国际化和本地化有关的问题;
软件不包含冗余的从来不被调用的代码。
此外,实现代码评审还要确保软件能够正确处理边界条件、特殊输入、可能的安全攻击、性能优化、内存泄漏和线程安全等问题。
执行白盒测试
白盒测试执行详细测试计划中与白盒测试有关的测试用例,通过分析软件代码的内部工作方式和程序逻辑结构,寻找软件存在的缺陷。
分析源程序编码,确定测试不公 API 和测试代码路径所需要的输入数据,并且更新测试计划。
白盒测试包括以下内容:
剖析应用程序在运行时某些特殊代码的行为特征,包括代码覆盖、内存分配、竞争和死锁( Deadlock )问题;
跟踪代码路径分析与关键性能的相关的时间占用,对于基于 Web 的应用程序,还需要监视请求的执行时间;
测试程序的内部分支路径,确保每个路径正确处理数据,返回期望的输出,而不会引起功能损失或不一致;
测试不同的循环和条件语句,例如简单循环、嵌套循环,关系表达式、简单条件、符合条件、布尔表达式,保证代码组建的精度要求;
安全性测试。如果软件某段代码在目标布署环境存在安全访问为题,应该分析对应的处理安全性的代码,避免程序向攻击者暴露敏感信息。
执行黑盒测试
黑盒测试执行详细测试计划中与黑盒测试有关的测试用例,黑河测试不需要测试者了解程序的内部结构,而主要模拟终端用户的操作方式。
黑盒测试确保应用程序满足以下要求:
应用程序符合需求文档中列出的全部目标;
应用程序包括了功能规格说明指定的全部功能点;
应用程序能够正确地处理期望的和异常的使用场景。
黑盒测试包括以下内容:
测试全部使用场景的外部接口。确保接口符合功能规格说明和系统需求,使用场景既包括期望的处理流程,也包括随机的输入。
测试不同的输入类型。确保软件接口可以输出期望的结果,并且可以正确处理无效的数据和异常情况。测试的输入数据包括合理的数据、边界数据和超出最大和最小的输入数据。
性能测试。验证应用程序在正常情况下和极限负载条件下,程序能够处理不断增加的访问请求,具有良好的扩展能力。性能测试包括负载测试和压力测试。性能测试的测试结果可以作为实现代码审阅和白盒测试的输入。
安全性测试。从黑盒测试的观点看,安全性测试通过模拟软件真实运行环境下攻击者的操作行为,寻找软件不正确的设计和编码的安全隐患。安全性测试包括验证输入数据、破解加密和访问敏感数据、缓冲区溢出、授权和证书功能等。