4.1 测试策略
根据测试的策略,测试可以从很多角度进行划分,同时一种测试也可以是几种测试划分的交叉结果。
4.1.1 黑盒与白盒
黑盒测试和白盒测试是经典的划分方式,区别在于能否得知产品的内部工作过程,即能否看到软件项目的代码,内部实现。
黑盒测试
看不到软件代码,根据需求进行测试证明每个实现了的功能是否符合软件需求。
白盒测试
能够看到软件代码,利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
除了经典的黑盒,白盒测试的分法之外,还有灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输入、输出的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但要比黑盒测试更关注程序的内部逻辑。
4.1.2 静态与动态
根据执行测试时是否运行软件,可以分为静态测试和动态测试两类。
静态测试
静态测试是对被测程序进行特性分析的一些方法的总称,这种方法的主要特性是不运行被测试的程序,而是通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。
常见的静态测试方法:代码审查、代码走查、桌面检查、技术评审、静态分析。
对于软件项目初期的需求评审也是静态测试的一种。
动态测试
动态测试是实际运行被测程序,输入相应的测试用例,判定执行结果是否符合需求,从而检验程序的正确性、可靠性和有效性。
4.1.3 手工与自动化
早期的测试全过程都需要人工来完成,这就是手工测试。随着一系列的测试工具、脚本的出现,自动化测试也开始逐渐成为测试的重要组成部分。
手工测试
测试过程中的分析,设计,实施,记录等过程,均由人工来完成,称为手工测试。
自动化测试
使用工具或者脚本程序,全部或者部分的替代测试中的一部分,称为自动化测试。
手工测试和自动化测试各有优缺点,并不能够完全替代对方。以下列举自动化测试的优缺点,自动化测试的优点就是手工测试的缺点,反之亦然。
优点 | 缺点 |
---|---|
对程序的回归测试更方便 | 很多判定结果不能取代手工测试 |
可以运行更多更繁琐的测试 | 手工测试比自动测试发现的缺陷更多 |
可以执行一些手工测试困难或不可能进行的测试 | 对测试质量的依赖性极大 |
更好地利用资源 | 测试自动化不能提高有效性 |
测试具有一致性和可重复性 | 工具本身并无想像力 |
4.1.4 国际化与本地化
许多公司都拥有面向全球受众的软件产品(网站或APP)。其中很重要的部分就是提供吸引目标市场地区用户的使用体验。在为这个目标进行产品设计时,会遇到国际化和本地化。显然国际化测试和本地化测试之间存在差异,因为测试人员看问题的角度是会因为不同地区发生变化的。
国际化测试
国际化侧重于吸引全球受众的产品特性和功能。
国际化是一项通常从概念阶段就开始进行的活动,以使产品具有全球吸引力。开发功能、内容和界面以支持给定文化、语言环境或地区的本地化。从产品设计和开发的初始阶段就应该考虑到本地化的各个方面。它确保产品已准备好供全球用户使用。
国际化称为i18n,以下是一些国际化的最佳实践:
支持多种语言
支持不同的地区、语言环境等
将资源(字符串、UI 元素等)与实现分离
支持不同的数字格式
不同格式的文本(即左→右,右→左)
本地化测试
本地化使内容和UI能够适应特定区域或特定区域的文化和语言需求。
本地化测试是从本地化的角度验证内容和界面的活动,它也称为l10n测试。
本地化测试中包含的一些组成部分是:
翻译文本
键盘使用
地址的格式和顺序
与文化一致的图形和其他视觉元素
处理该地区的时间和货币格式
数据对齐