4.3 测试方法

按照软件测试对软件系统的各种角度,可以有很多种测试方法。

4.3.1 基于规范的测试

基于规范的测试的测试基础是测试项目的外部输入和输出的测试,通常基于规范即需求规格说明书,而不是在源代码或可执行软件中的实现。

功能测试

功能测试根据需求规格说明书、产品特征、操作描述或用户方案,测试一个产品的特性和可操作行为,以确定它们满足设计需求。

性能测试

性能测试主要是通过自动化的测试工具模拟系统负载,以确定系统的处理能力,并通过对CPU、内存、磁盘IO、带宽等性能指标的关注发现系统瓶颈,提高系统容量。

压力测试

压力测试是性能测试的一种,压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。

负载测试

负载测试也是性能测试的一种,负载测试的目标是测试在一定负载情况下系统性能;实际中常从比较小的负载开始,逐渐增加模拟用户的数量(增加负载),观察不同负载下应用程序响应时间、所耗资源,直到超时或关键资源耗尽,这就是所说的负载测试,它是测试系统的不同负载情况下的性能指标。

易用性测试

易用性测试是指用户使用软件时是否感觉方便,是交互的适应性、功能性和有效性的集中体现,在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。

界面测试

界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。

安装测试

确保该软件在正常情况和异常情况的不同条件下,进行首次安装、升级、完整的或自定义的安装都能进行安装。异常情况包括磁盘空间不足、缺少目录创建权限等。核实软件在安装后可立即正常运行。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。

配置测试

配置测试主要是针对硬件而言,其测试过程是测试目标软件在具体硬件配置情况下,是否出现问题,目的是发现硬件配置可能出现的问题,大体来讲硬件配置分为以下几类:平台、组件、外围设备、接口、设备驱动等。

文档测试

文档测试关注于文档的正确性。文档测试有三大类,分别是开发文档、用户文档、管理文档。

  • 开发文档:可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗。
  • 用户文档:用户手册、操作手册。
  • 管理文档:项目开发计划、测试计划、测试分析报告、开发进度月报、项目开发总结报告。

文档测试主要检查文档的正确性、完整性和可理解性。正确性是指不要把软件的功能和操作写错,也不允许文档内容前后矛盾。完整性是指文档不可以漏掉关键性内容。可理解性是指在文档中描述的语言要简明易懂,不能让别的开发人员拿到文档时看不懂文档的内容。

兼容性测试

兼容性测试是验证软件与其所工作环境的依赖程度(包括对硬件、平台软件、其它软件的依赖程度),检查程序能否正常运行的测试。

兼容性测试分为两大类:硬件兼容性测试和软件兼容性测试。

硬件兼容性测试主要有与整机兼容性测试,与板卡及配件兼容性测试,与打印机的兼容性测试,其它部件的兼容性测试等。

软件兼容性测试主要有与操作系统的兼容性测试,与数据库的兼容性测试,与中间件的兼容性测试,与浏览器的兼容性测试,与其它软件的兼容性测试,与其它同类软件,与其它非同类软件的兼容性测试等。

安全性测试

安全性测试主要是测试系统在没有授权的内部或者外部用户对系统进行攻击或者恶意破坏时如何进行处理,是否仍能保证数据和页面的安全。测试人员可以学习一些黑客技术,来对系统进行攻击。另外,对操作权限的测试也包含在安全性测试中。

4.3.2 基于结构的测试

基于结构的测试源自对测试项目结构的检查,通常是能够看到代码,或者了解项目的模块组成进行的测试。

路径测试

路径测试是指根据路径设计测试用例的一种技术,经常用于状态转换测试中。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。

数据流测试

数据流测试是基于程序控制流选择路径的测试策略的一种。其目的是为了在探索事件序列过程中,验证相关的变量、数据对象。数据流测试重点关注变量及变量值的使用。

接口测试

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

数据库测试

数据库测试是依据数据库设计规范对软件系统的数据库结构、数据表及其之间的数据调用关系进行的测试。

4.3.3 探索性测试

探索性测试强调测试设计和测试执行的同时性,这是相对于软件测试过程中严格的“先设计,后执行”来说的。针对于软件系统需求说明书不完整,甚至于没有需求的情况下,测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的角度和方法。

4.3.4 随机测试/猴子测试

除了根据测试计划和测试用例进行测试外,有时还需要进行随机测试,也被称为猴子测试,主要是根据测试者的经验对软件进行功能和性能抽查。

随机测试可以作为计划性测试的一个补充,在已有的测试方法已经找不到多少缺陷时,用来拓展测试角度和思路时使用。