• 黑盒测试方法:原理+实战


    目录

    一、如何设计测试用例

    二、黑盒测试常用方法

    1、基于需求进行测试用例的设计

    2、等价类

     3、边界值

    4、判定表分析法(因果分析法)

    5、正交表

     6、场景设计法

     三、案例补充

    1、使用Fiddler模拟弱网

    2、针对一个接口该如何测试 


    一、如何设计测试用例

    测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、测试步骤、测试数据、测试结果等要素。

    设计测试用例的一个万能公式

    功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试

    二、黑盒测试常用方法

    1、基于需求进行测试用例的设计

    基于需求设计测试用例是测试设计和开发测试用例的基础,第一步就是要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。在需求正确的基础上细化测试需求,从测试需求提炼出一个个测试点或者测试项,然后根据每一个测试点进行测试用例的设计。

    需求文档->梳理需求(掌握需求)->针对文档设计测试用例(基于需求设计测试用例)

    在分析测试需求一般可以分为功能测试需求非功能测试需求

    功能测试需求通常包括以下几个方面:

    1. 系统各个功能界面的验证
    2. 借助业务把功能串起来进行测试
    3. 功能的一致性、交互性(多功能互操作)的测试
    4. 系统的不同输入,结果输出的业务数据测试
    5. 功能的错误操作,异常操作的测试(属于负面测试)
    6. 功能实现用到的算法验证,有时需要运用代码评审
    7. 用户操作的易用性、用户体验、往往结合功能测试同时验证

    非功能测试需求包括:兼容、性能、安全、网络等。

     针对具体的需求,可以根据业务分类,用户角色(餐厅的会员系统)或者用户操作区域等将系统的功能分解成若干个功能模块,然后按照功能模块分别进行测试需求分析。按照功能模块划分,业务模块划分是最常见的做法。

     基于需求设计测试用例的这种方法其实时比较单一的,只使用这种方法进行测试用例的设计难免会有很多的地方考虑不周,所以下面介绍的黑盒测试方法就是在需求的基础上,更精细的进行弥补和设计。

    2、等价类

    依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为锁代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。

    等价类可以分为两种

    • 有效等价类:满足用户需求的输入集合。
    • 无效等价类:不满足用户需求的输入集合。

    等价类思想设计测试用例步骤

    ①、充分理解需求

    ②、划分有效等价类、划分无效等价类

    ③、从有效等价类抽取其中一个数据进行设计测试用例;从无效等价类中抽取其中一个进行设计测试用例。

     比如注册页面用户名限定长度6~15位,那么6~15位就是有效等价类,没有在这个范围内的长度都是无效等价类。

     3、边界值

    边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法时作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

    这里我们还需要了解一下边界点的概念:

    1. 上点:边界上的点
    2. 内点:边界内的点
    3. 离点:边界值附近的一个点。如果是一个闭区间,我们需要在区间外找距离上点最近的点;如果是开区间,则在区间内距离上点最近的点。

     边界值设计测试用例方法

    ①、充分理解需求

    ②、找边界点

    ③、针对边界点设计测试用例

    4、判定表分析法(因果分析法)

    判定表法是因公图法的简化,知识神略了因果图法中的画图过程,是黑盒测试中常用的一个方法,他主要用于测试有多种输入,并且结果会依赖于输入的情况而有所不同的场景。

    判定表中存在以下4中关系:

    :所有的条件必须满足,如果一个条件不满足,此时结果为假。

    :满足其中一个条件结果就为真,如果条件全部为假,结果就为假。

    恒等:条件为真、结构一定为真。

    :条件为佳,结果才为真。

     判定表分析法设计测试用例的步骤:

    1. 分析所有可能的输入和可能的输出。
    2. 找出输入与输出之间的对应关系。
    3. 设计判定表
    4. 把判定表对应到每一个测试用例

    ✨ 案例

    假设业务单据的处理规则为:"淘宝618活动,订单已提交,订单合计金额大于300元或者有红包,则进行优惠"。

    1️⃣第一步确定输入输出

    输入:订单已提交,订单金额大于300,有红包。

    输出:优惠、不优惠。

    2️⃣第二部:输入和输出之间的关系

    订单已提交,金额大于300,有红包,优惠。

    订单已提交,金额大于300,没有红包,优惠。

    订单已提交,金额小于300,有红包,优惠。

    订单已提交,金额小于300,没有红包,不优惠。

    订单未提交,金额大于300,有红包,不优惠。

    订单未提交,金额大于300,没有红包,不优惠。

    订单未提交,金额小于300,有红包,不优惠。

    订单未提交,金额小于300,没有红包,不优惠。

     3️⃣第三步 

     4️⃣第四点:测试用例要素

    5、正交表

    使用判定表法存在用例数目比较多的情况,而正交表法的目的就是为例减少用例数目,用尽量少的用例覆盖输入的两两组合;正交排列是一种系统的,有序的排列方式,用于软件测试用例设计中,可以保证测试用例的相互独立,减少重复测试,提高测试效率。

    1️⃣什么是正交表

    最简单的正交表是L^{4}\left ( 2^{3} \right ),含义是:"L"代表正交表;L上角的数字"4"表示有4横行,简称行,即要做四次试验;括号内的指数"3"表示有3纵列,简称列,即最多允许安排的因素是3个;括号内的数字"2"表示表的主要部分只有2种数字(两种取值),即因素有两种水平1与2.正交表的特点是其安排的试验方法具有均衡搭配特性。

    2️⃣两个重要的概念

    因素:输入变量

    水平:每一个输入变量取值

    3️⃣正交表的两条性质

    每一列种各个数字出现的次数都一样多

    任何两列种的各有序数对出现的次数都一样多

    4️⃣如何通过正交表设计测试用例

    充分理解需求 ->确定因素,确定水平 ->画正交表 ->补充正交表 ->将正交表转换成测试用例

    ✨示例

    继续以注册的需求为例:

    姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册。

    ①列出因素和水平

    因素:姓名、邮箱、密码、确认密码、验证码

    水平:填写、不填写

    ②使用allpairs来画正交表

    • 将因素和水平放到excel表格中

    • 将excel表格内容直接复制到txt文本中

    • CMD进入到allpairs安装路径下面

    • 使用allpairs生成正交表:allpairs 正交表测试.txt > 正交表测试_result.txt

     打开正交表测试_result.txt文件

    正交表生成之后,还需要查看以下,生成的是否完整,如果不完整则需要补充以下。

    ③、将正交表转换为测试用例

    正交表的每一行都是一个测试用例

     6、场景设计法

    场景设计法设计测试用例的步骤

    充分理解需求 ->确定主事件流 ->确定次事件流 ->每一个事件就是一个测试用例

    主要分为基本事件流和多个备用事件流

    • 基本事件流:对于一个场景的最基本的事件流,即软件功能按照正确的事件流,中间无任何差错,从开始一直执行到结束的一条正确流程。
    • 备用事件流:对于一个业务可能发生异常情况的场景进行测试,软件功能在执行过程中,除了基本流之外可能遇到的各种情况,是包含可能存在问题的各个支流。

     三、案例补充

    1、使用Fiddler模拟弱网

    打开弱网设置

     进行用户设置

    打开之后,会出现一个脚本文件,这个时候我们找到 OnBeforeRequest方法,修改其中的代码就可以进行传输速率的设置。在OnBeforeRequest中找到下面的代码,就可以进行设置了。

    2、针对一个接口该如何测试 

    这个时候我们可以打开电脑浏览器搜索内容在,network中查看数据的传输。

     将拷贝的信息,在postman中进行解析,成功之后点击send,向服务器发送请求,服务器返回数据。

     

     这个时候想要测试接口,我们就可以根据请求方法进行测试,将测试方法修改一下查看返回数据。

     也可以根据请求参数进行测试,将参数修改一下来查看返回的数据。

    总结:我们向对一个接口进行测试,可以通过上述的方法,将URL拷贝到postman中,然后针对性的进行测试。

    • 测试HTTP请求方式(get、post、delete)
    • 针对参数进行测试(传递所有参数,传递部分参数、不传递参数,给参数设置null值)。
    • 性能测试。

    ......

  • 相关阅读:
    TCP 如何保证有效传输及拥塞控制
    [C#,Unity面试题]本期主要针对C#跟Unity基础(二)
    解决 jenkins 插件下载失败问题 - 配置 jenkins 插件中心为国内镜像地址
    MVVM 架构和MVI架构的优缺点对比
    云原生时代顶流消息中间件Apache Pulsar部署实操之Pulsar IO与Pulsar SQL
    《对比Excel,轻松学习Python数据分析》读书笔记------数据运算
    MATLAB中writetimetable函数用法
    idea springboot 如何支持数据库配置 redis配置 支持不同环境(uat验证环境、测试环境)切换
    网络割接用VRRP替换HSRP
    Java - List 去重,获取唯一值,分组列出所属对应集合
  • 原文地址:https://blog.csdn.net/m0_73067372/article/details/133689259