高级测试工程师必备的测试方法

灰盒测试是一种结合了黑盒和白盒测试特点的测试方法,关注程序运行时的外部表现和内部逻辑结构。它在不深入内部实现细节的情况下,帮助测试人员理解系统结构,及时发现需求或设计问题,提升测试效率和质量。相比于黑盒测试,灰盒测试可以更早介入,并确保测试用例的完整性,但对测试人员要求较高,不适用于简单系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情景

小A最近接到一个测试联想的任务。其中一个逻辑是要将光标前的前10个字传给内核,内核进行拆词返给客户端联想内容。小A针对此功能进行了如下操作:长按删除了4个字,然后点击删除6个字,上屏删除的第一个字时通过打代码log发现没有进入正常的redo模式。

通过上述案例我们可以看到对于一些功能测试,如果测试手段仅局限于黑盒,那么情景中的bug就不会发现。但是情景中的测试方法也不是完全了解内层代码结构发现的问题,不属于白盒测试。那这种测试方法是什么呢?这是一种介于黑盒和白盒之间的测试方法—灰盒测试。

一、概念

      灰盒测试,是基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例,执行程序并采集程序路径执行信息和外部用户接口结果的测试技术。测试工作中除了进行黑盒层面的测试之外,对于复杂的功能模块进行实现层面了解,补充实现层面的可以测试的测试点,尽可能在测试广度上和测试深度上进行覆盖,我们称之为灰盒测试。

 

、黑盒测试、灰盒测试、白盒测试区别

       1、黑盒和灰盒的区别:

      如果某软件包含多个模块,使用黑盒测试时,只要关心整个软件系统的边界,无需关心软件系统内部各个模块之间如何协作。而如果使用灰盒测试,就需要关心模块与模块之间的交互。

2、白盒和灰盒的区别:

在灰盒测试中,还是无需关心模块内部的实现细节。对于软件系统的内部模块,灰盒测试依然把它当成一个黑盒来看待。而白盒测试则不同,还需要再深入地了解内部模块的实现细节和各个分支。

3、单元测试和灰盒的区别:

  首先,在进行单元测试时,需要写一些测试代码(行话叫“桩代码”,叫stub)。一般来说,测试代码与被测试代码采用同种语言(比如Java的单元测试通常也用Java来写),且测试代码和被测试代码之间的耦合很紧密。因此,单元测试通常由开发人员来完成—测试人员的能力未必能胜任。

  其次,单元测试的粒度会更细(会细到模块内部的类一级、函数一级),而灰盒测试仅仅到模块一级。

 

三、灰盒测试的优缺点

优点

1、相对于黑盒测试,灰盒测试可以及早介入

2、灰盒测试有助于测试人员理解系统结构,及早发现需求或设计不详细或不完整的问题,避免对测试进度造成影响

3、能够保证设计的黑盒测试用例完整性,防止遗漏软件的一些不常用的功能或功能组合

4、测试结果可以对应到程序内部路径,便于bug的定位、分析和解决,有利于提升测试人员能力

5、相对于白盒能够进行基于需求的覆盖测试和基于程序路径覆盖的测试,但不需要花费大量精力写专用代码,速度比白盒快

缺点

1、不适用于简单的系统

2、对测试人员的要求比黑盒测试高

3、不如白盒测试深入

 

四、测试用例设计

从小编实际应用中看,灰盒测试就是产品实现层面的测试,需要在编写测试用例前了解到功能的实现逻辑,要知道特定条件下的数据输入输出情况,需要知道特定条件下数据发送和返回情况,从而在这些情况下设计测试用例,并且执行,从较黑盒深入层次发现问题,举例说明:一些接口的测试、与服务端交互请求测试、数据库层面的测试、容错测试等。本文以对服务器返回的json格式数据容错测试为例。

JSON 结构有两种,JSON 简单说就是 javascript 中的字典和数组,所以这两种结构就是字典和数组两种结构,通过这两种结构可以表示各种复杂的结构。针对我们了解的json结构,容错用例设计如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值