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