一般而言,软件测试方法分为黑盒测试、白盒测试、灰盒测试、静态测试、动态测试、手动测试、自动化测试和探索性测试等类型。

【1】黑盒测试

黑盒测试又称功能测试、数据驱动测试或基于需求规格说明书的功能测试。该测试方法验证被测对象使用质量及外部质量表现。

采用黑盒测试方法,测试工程师将测试对象看作一个黑盒子,如图所示,完全不考虑程序内部逻辑结构和内部特性,只依据需求规格说明书、设计文档及其他需求描述文档,检查被测对象是否与期望需求一致。

测试工程师无须了解被测对象的内部构造,完全模拟软件产品的最终用户使用该软件,以用户需求规格说明书为评判标淮,检查软件产品是否满足了用户的需求。例如,使用某款社交类工具产品,用户无须知道该产品如何开发出来,仅需从使用者角度来使用收发图文信息、商品支付等功能即可。测试过程无须关注内部设计信息,所采用的测试方法就是黑盒测试。

黑盒测试方法能更好、更真实地从用户角度来考察被测系统的需求实现情况。在软件测试的各个阶段,如单元测试、集成测试、系统测试及确认测试等阶段中都发挥着重要作用,尤其是在系统测试和确认测试中,其作用是其他测试方法无法取代的。但黑盒测试方法的弊端也很明显,由于仅关注被测对象外部特性表现,对于一些结构性、深层次的问题不易揭露,带来漏测的潜在风险。

需注意的是,黑盒测试方法的思想是将被测对象作为一个黑盒子,在系统测试层面,软件系统是黑盒子,是测试工程师的测试对象。在单元测试、集成测试阶段,如果将函数单元、类文件、接口模块作为一个黑盒子,那么使用的测试方法同样称为黑盒测试,并不能说黑盒测试方法只能用在系统测试和验收测试阶段。

【案例:OA 系统图书管理功能结构图 】

如图所示,该功能模块主要包括“图书添加”“图书借阅”“图书归还”“图书类别”“查询图书”这5大功能。使用黑盒测试方法,从用户应用角度来看,可先以系统管理员身份登录系统测试〝图书类别”功能,再以普通用户视角进行“图书查询”“图书借阅”“图书归还”,完全模拟用户使用习惯。

【2】白盒测试

白盒测试,又称结构测试、逻辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师需深入考查程序代码的内部结构、逻辑设计等。同样以某款社交工具软件为例,测试工程师需了解产品的内部设计信息,如编码形式、类文件调用过程、接口参数传递过程等。

白盒测试需要测试工程师具备较深的软件开发功底,熟悉相应的开发语言,一般的测试工程师难以胜任该工作。图中所示是白盒测试示意图,相对于白盒测试工程师来说,软件产品内部构成是透明的。

【案例:图书添加功能页面对象检查功能】

下列代码是“图书添加” 功能页面对象检查功能函数。从白盒测试角度而言,测试工程师仅需关注此段函数所能实现的功能,无须关注该函数的外部功能特性。

【3】灰盒测试

与前面的黑盒测试、白盒测试相比,灰盒测试介于两者之间。黑盒测试仅关注被测对象的外部特性(功能、性能、用户界面、接口)表现,不关注内部的逻辑设计、构成情况,白盒测试则仅从程序代码的内部构成考虑,检查其内部代码设计结构、方法调用等。两种方法从相反角度测试被测对象,但相对来说都比较“偏激”,灰盒测试则结合这两种测试方法,一方面需要考虑被测对象的外部特性表现,另一方面又需要考虑程序代码的内部结构,如图所示。

通俗来说,灰盒测试就是白加黑,性能测试和自动化测试就采用了灰盒测试的方法。

【4】静态测试

静态测试顾名思义,就是不执行被测对象程序代码、不运行被测对象而实施的测试活动,是发现缺陷的过程。静态测试包合阅读程序代码、文档资料等,与需求规格说明书进行比较,找出被测对象设计、描述、编码等方面的错误。

进行程序代码静态测试时,可采用一些代码走查工具,如 QAC++、C++Test等。需要注意的是,代码走查工具一般仅能发现语法或调用效率方面的问题,很难发现业务逻辑错误。

以白盒测试静态测试方法为例,针对一些功能函数、类等文件,可进行阅读、分析,发现被测对象中的缺陷。

【5】动态测试

动态测试运行被测对象的程序代码,执行测试用例,检查系统软件运行结果与预期结果的差异。通过动态行为分析被测对象的正确性、可 靠性和有效性,并分析系统运行速度、系统资源耗用等性能状况。

动态测试由 4 部分组成:设计测试用例、评审测试用例、执行测试用例、输出测试报告。

【6】手工测试

通过模拟终端用户的业务流程应用软件系统,检查被测对象实际表现与预期结果间的差异,测试工程师手工运行被测对象,这种模式即为手工测试。手工测试是最传统的测试方法,也是现在大多数公司普遍采用的测试形式。测试工程师设计、执行测试用例,比较实际结果与预期结果,记录两者的差异,最终输出缺陷报告和测试报告。手工测试方法可以充分发挥测试工程师的主观能动性,将其智力活动体现于测试工作中,能发现很多的缺陷,但该测试方法有一定的局限性与单调枯燥性。当测试周期变长,业务重复性较大时,手工测试容易变得枯燥乏味。

【7】自动化测试

随着软件行业的不断发展,软件测试技术也在不断地更新,出现了众多的自动化功能测试工具,如HP 的 Quick Test Professional(最新版本名为 UFT )、开源的 Selenium(见图)、性能测试工具如 LoadRunner、JMeter 等。

所谓自动化测试,即利用测试工具,编程实现模拟用户业务使用流程的脚本,设定特定的测试场景,自动寻找缺陷。自动化测试的引入,大大地提高了测试效率和准确性,而且封装性较好的测试脚本,还可应用于其他产品项目。业内通常将自动化功能测试称为自动化,而性能测试单独成体系,不含在自动化测试中。

1. 自动化测试优点

自动化测试的优点是快速、可重用,替代人的重复活动。回归测试阶段,可利用自动化测试工具进行,无须大量测试工程师手动重复执行测试用例,极大地提高了工作效率。有时做压力测试,需要几万甚至几十万个用户同时访问某个站点,以保证网站服务器不会出现死机或崩溃现象。一般来说,模拟几万人同时访问某个系统,通过人工很难实现,但利用测试工具,如 LoadRunner,可非常容易地做到。

2. 自动化测试缺点

当然,自动化测试的缺点也很明显,它们只能检查一些比较主要的问题,如崩溃、死机,但却无法发现新的错误。另外,在自动测试中编写测试脚本的工作量也很大,有时该工作量其至超过了手动测试的时间。

在自动化测试活动中,测试工具的应用,可以提高测试质量、测试效率。但在选择和使用测试工具时,也应该看到在测试过程中,并不是所有的测试工具都适合引入;同时,即使有了测试工具,会使用测试工具,也不等于测试工具真正能在测试中发挥作用。

因此,应该根据实际情况选择测试工具,选择使用何种测试工具,千万不可为了使用工具而刻意地使用工具。在目前软件系统研发环境下,自动化测试完全替代手工测试是不可能的。

自动化测试不仅仅运用在系统测试层面,在单元测试、集成测试阶段同样可以使用自动化测试方法进行测试。

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!