对于一些功能测试,如果测试手段仅局限于黑盒,那么情景中的bug就不会发现。但是情景中的测试方法也不是完全了解内层代码结构发现的问题,不属于白盒测试。那这种测试方法是什么呢?这是一种介于黑盒和白盒之间的测试方法—灰盒测试。
一、概念
灰盒测试,是基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例,执行程序并采集程序路径执行信息和外部用户接口结果的测试技术。测试工作中除了进行黑盒层面的测试之外,对于复杂的功能模块进行实现层面了解,补充实现层面的可以测试的测试点,尽可能在测试广度上和测试深度上进行覆盖,我们称之为灰盒测试。
二、黑盒测试、灰盒测试、白盒测试区别
1、黑盒和灰盒的区别:
如果某软件包含多个模块,使用黑盒测试时,只要关心整个软件系统的边界,无需关心软件系统内部各个模块之间如何协作。而如果使用灰盒测试,就需要关心模块与模块之间的交互。
2、白盒和灰盒的区别:
在灰盒测试中,还是无需关心模块内部的实现细节。对于软件系统的内部模块,灰盒测试依然把它当成一个黑盒来看待。而白盒测试则不同,还需要再深入地了解内部模块的实现细节和各个分支。
3、单元测试和灰盒的区别:
首先,在进行单元测试时,需要写一些测试代码(行话叫“桩代码”,叫stub)。一般来说,测试代码与被测试代码采用同种语言(比如Java的单元测试通常也用Java来写),且测试代码和被测试代码之间的耦合很紧密。因此,单元测试通常由开发人员来完成—测试人员的能力未必能胜任。
其次,单元测试的粒度会更细(会细到模块内部的类一级、函数一级),而灰盒测试仅仅到模块一级。
三、灰盒测试的优缺点
优点:
1、相对于黑盒测试,灰盒测试可以及早介入
2、灰盒测试有助于测试人员理解系统结构,及早发现需求或设计不详细或不完整的问题,避免对测试进度造成影响
3、能够保证设计的黑盒测试用例完整性,防止遗漏软件的一些不常用的功能或功能组合
4、测试结果可以对应到程序内部路径,便于bug的定位、分析和解决,有利于提升测试人员能力
5、相对于白盒能够进行基于需求的覆盖测试和基于程序路径覆盖的测试,但不需要花费大量精力写专用代码,速度比白盒快
缺点:
1、不适用于简单的系统
2、对测试人员的要求比黑盒测试高
3、不如白盒测试深入
四、测试用例设计
从小编实际应用中看,灰盒测试就是产品实现层面的测试,需要在编写测试用例前了解到功能的实现逻辑,要知道特定条件下的数据输入输出情况,需要知道特定条件下数据发送和返回情况,从而在这些情况下设计测试用例,并且执行,从较黑盒深入层次发现问题,举例说明:一些接口的测试、与服务端交互请求测试、数据库层面的测试、容错测试等。本文以对服务器返回的json格式数据容错测试为例。
JSON 结构有两种,JSON 简单说就是 java 中的字典和数组,所以这两种结构就是字典和数组两种结构,通过这两种结构可以表示各种复杂的结构。
Testin云测“一站式应用云测试服务”平台,为应用(Web、移动网页、原生移动应用、H5、公众号、小程序)、移动游戏、VR/AR、可穿戴、人工智能、智能家居、智能驾驶、IoT物联网和工业APP开发者提供必需的一站式应用测试服务和质量保障。
免费测试培训课
Testin 测试课堂是专门为软件测试从业者打造的一个免费学习和提升的在线课堂。培训内容从初级到高级,培训类型涵盖视频和在线直播,全部名师授课,学员免费听课。火热课程报名中:《敏捷下测试的定位和发展》《测试人员的最佳学习成长路径》《功能测试培训精品班》《软件开发流程详解》等20+课程等你报名。
免费测试服务
100款安卓兼容测试
120分钟自动化测试
120分钟远程真机体验时长
自动化安全测试
15位测试专家进行BUG探索测试
免费电子书
《如何用最少的人员批量测试手机应用?》(上下两册)
《2017-2018年行业功能性测试报告》
更多精彩内容: