等价类结和判定表的软件测试方法应用-程序员宅基地

技术标签: 测试  

摘要:软件测试的类型通常分为白盒测试黑盒测试,其中基于等价类的划分法与基于判定表的测试法都是较为典型和实用的黑盒测试技术方法。在实际工作中,为了使测试用例的覆盖更加全面,测试目的更加明确,通常不仅仅局限于某一种测试手段。针对等价类和判定表这两种方法各自的特点,可以将两者有机结合,通过对输入条件进行等价类划分,对输出行为进行判定表列举,用综合的手段进行软件测试工作,从而达到使测试用例的设计覆盖全面、条理清晰的目的。

  关键词:等价类;判定表;软件测试

  1、概述

  软件测试的类型一般来说,可以划分为白盒测试类型和黑盒测试类型。黑盒测试针对的主要是软件功能的正确性和完整性。黑盒测试的理念,是将程序内部的逻辑结构看成一个黑盒子,单纯依据给定的软件需求规格说明中约定的功能要求,设计测试输入数据,观察测试输出结果,通过结果的正确性来验证软件的正确性。黑盒测试的方法比较多,其中较为典型的是等价类划分法和判定表驱动法,实际工作中可以将两种方法有机结合进行软件测试。

  2、等价类划分法

  等价类划分法的一般定义,是依据程序的实际情况,把测试输入划分成具有代表性的几种分类,类与类之间彼此不相交;然后从每个分类中选取部分数据作为测试用例的输入。这其中选取的输入数据在测试中的作用等价于该类中的其他数据,因此对每一个特定的类来说,不需要将该类中所有的输入都作为测试输入,仅选取本类中具有代表性的输入即可覆盖某一方面的验证,大大减少了测试用例的数量,提高了测试效率。

  进行等价类划分时须将对应输入分为有效等价类和无效等价类。有效等价类是指符合程序需求规格说明描述,合理可行且有意义的输入数据所构成的集合。通过有效等价类的输入,可以测试程序是否实现了需求规格说明中所要求实现的功能项。无效等价类是有效等价类的补集,与有效等价类正好相反,通过无效等价类的输入,可以测试程序的功能实现是否会出现意外情况。两种等价类必须同时被考虑,以确保软件的可靠性。

  根据通用的定义,可以根据以下原则进行等价类划分:

  1)如果输入条件规定了输入值的强制集合,则可确定一个有效等价类和一个无效等价类;

  2)如果输入条件规定了取值范围,或者规定了所取值的个数,则可确定一个有效等价类和两个无效等价类;

  3)如果规定了一组输入数据的数量为n,且程序需对每个输入值分别处理,则可确定n个有效等价类和一个无效等价类;

  4)如果输入条件为布尔值,则可确定一个有效等价类和一个无效等价类。

  5)如果输入数据有必须遵守的规则,则可确定一个遵守规则的有效等价类和若干个从不同角度违反规则无效等价类;

  6)已知的大等价类可以根据实际情况进一步划分为更小的等价类。

  等价类一经确定,可以构造等价类划分表。然后为每一个等价类规定一个唯一的编号,并设计测试用例来 覆盖所有的等价类。用例设计原则为:1个用例应覆盖尽可能多的有效等价类,直到所有有效等价类都被覆盖为止;1个用例仅覆盖一个尚未被覆盖的等价类,直到所有无效等价类都被覆盖为止。

  3、判定表驱动法

  判定表也叫决策表,在所有的功能性测试方法中,基于判定表的测试方法是最严格的,因为判定表具有逻辑严格性。从20世纪60年代初开始,判定表就一直被用来表示和分析复杂的逻辑关系,作为编写程序的辅助工具。判定表很适合描述不同条件集合下采取行动的若干组合情况。

  判定表由4个部分组成,分别为条件桩、动作桩、条件项和动作项。其中条件桩列出了各种可能的单个条件,动作桩列出了可能采取的单个操作,条件项列出了所给条件的多组取值组合,动作项列出了在给定条件项的各种取值情况下对应采取的动作。

 判定表的规则是任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。判定表中列出多少组条件取值,也就有多少条规则,条件项和动作项就有多少列。

  应该依据软件需求规格说明来建立判定表,首先确定规则的个数,然后列出所有的条件桩和动作桩,填入动作项形成初始判定表,再通过合并相似规则或相同动作来简化,形成最终判定表。

  4、等价类结合判定表测试

  在实际测试工作中,我们倾向于不仅仅只使用一种测试方法,而是恰当的将多种测试方法有机结合,达到最优的测试效果。这里以实例说明如何将等价类划分与判定表驱动有机结合起来进行软件测试。

  某模块具有数据接收和处理功能,其中接收的数据格式包含了方式字、数据域和校验和3个部分。该模块将接收到的数据进行CRC校验,根据接收的数据进行处理:若接收的数据正确,则将对应缓冲区地址内容设置为接收的数据域内容,且置相应的遥测字;若接收的数据错误,则对应缓冲区地址内容不作设置,且置相应的遥测字。

  这个实例里,我们可以先对输入条件进行等价类划分,然后通过建立判定表,确立规则,从而得出最终的测试用例。这里的输入条件就是需要接收的数据。根据相应的通信协议,数据格式中的方式字可分为AAh、BBh、CCh、DDh共4种,数据域根据其长度可分为16字节、32字节、128字节3种,校验和可分为正确和错误两种。我们通过通信协议的规定,可以划分出输入数据等价类,对每种输入条件的等价类都进行相应的编号。

  根据等价类划分,继续采用判定表驱动法形成测试用例。将已按等价类划分好的输入作为条件桩,产生判定表。

  根据该表,根据规则最终产生了7个测试用例,覆盖了所有输入的有效等价类和无效等价类。下面进行两点说明:

  1)根据测试方法的一般选择原则,若输入条件之间存在组合关系时,一般选用因果图法结合判定表驱动法进行测试用例的设计。本例中的各个输入之间存在简单的组合关系,但由于各输入均为1组数据,且存在有效和无效的情况,而非独立的状态,或独立的输入条件,采用因果图法易造成图的关系复杂,不利于分析;采用等价类划分法则利于信息的归类与分析,再结合判定表驱动法来理清各等价类的组合关系,使用例设计清晰,并可判断是否覆盖所有的等价类,是否存在可合并的冗余用例。

  2)为了简化实例便于说明,本例没有考虑输入边界的取值,实际工作中还可加入对输入条件的边界取值考量,产生更多有效和无效的边界等价类,再加以组合进行测试。

  5、总结

  测试用例的设计方法种类很多,在实际测试中,应当不局限于单个测试手段。依据每个具体的软件的具体特点,制定具有针对性的测试策略,综合使用各种方法,使其有机结合,从各个角度充分测试,从而更加有效的提高测试效率和测试覆盖度。








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33979203/article/details/90493315

智能推荐

FTP命令字和返回码_ftp 登录返回230-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏13次。为了从FTP服务器下载文件,需要要实现一个简单的FTP客户端。FTP(文件传输协议) 是 TCP/IP 协议组中的应用层协议。FTP协议使用字符串格式命令字,每条命令都是一行字符串,以“\r\n”结尾。客户端发送格式是:命令+空格+参数+"\r\n"的格式服务器返回格式是以:状态码+空格+提示字符串+"\r\n"的格式,代码只要解析状态码就可以了。读写文件需要登陆服务器,特殊用..._ftp 登录返回230

centos7安装rabbitmq3.6.5_centos7 安装rabbitmq3.6.5-程序员宅基地

文章浏览阅读648次。前提:systemctl stop firewalld 关闭防火墙关闭selinux查看getenforce临时关闭setenforce 0永久关闭sed-i'/SELINUX/s/enforcing/disabled/'/etc/selinux/configselinux的三种模式enforcing:强制模式,SELinux 运作中,且已经正确的开始限制..._centos7 安装rabbitmq3.6.5

idea导入android工程,idea怎样导入Android studio 项目?-程序员宅基地

文章浏览阅读5.8k次。满意答案s55f2avsx2017.09.05采纳率:46%等级:12已帮助:5646人新版Android Studio/IntelliJ IDEA可以直接导入eclipse项目,不再推荐使用eclipse导出gradle的方式2启动Android Studio/IntelliJ IDEA,选择 import project3选择eclipse 项目4选择 create project f..._android studio 项目导入idea 看不懂安卓项目

浅谈AI大模型技术:概念、发展和应用_ai大模型应用开发-程序员宅基地

文章浏览阅读860次,点赞2次,收藏6次。AI大模型技术已经在自然语言处理、计算机视觉、多模态交互等领域取得了显著的进展和成果,同时也引发了一系列新的挑战和问题,如数据质量、计算效率、知识可解释性、安全可靠性等。城市运维涉及到多个方面,如交通管理、环境监测、公共安全、社会治理等,它们需要处理和分析大量的多模态数据,如图像、视频、语音、文本等,并根据不同的场景和需求,提供合适的决策和响应。知识搜索有多种形式,如语义搜索、对话搜索、图像搜索、视频搜索等,它们可以根据用户的输入和意图,从海量的数据源中检索出最相关的信息,并以友好的方式呈现给用户。_ai大模型应用开发

非常详细的阻抗测试基础知识_阻抗实部和虚部-程序员宅基地

文章浏览阅读8.2k次,点赞12次,收藏121次。为什么要测量阻抗呢?阻抗能代表什么?阻抗测量的注意事项... ...很多人可能会带着一系列的问题来阅读本文。不管是数字电路工程师还是射频工程师,都在关注各类器件的阻抗,本文非常值得一读。全文13000多字,认真读完大概需要2小时。一、阻抗测试基本概念阻抗定义:阻抗是元器件或电路对周期的交流信号的总的反作用。AC 交流测试信号 (幅度和频率)。包括实部和虚部。​图1 阻抗的定义阻抗是评测电路、元件以及制作元件材料的重要参数。那么什么是阻抗呢?让我们先来看一下阻抗的定义。首先阻抗是一个矢量。通常,阻抗是_阻抗实部和虚部

小学生python游戏编程arcade----基本知识1_arcade语言 like-程序员宅基地

文章浏览阅读955次。前面章节分享试用了pyzero,pygame但随着想增加更丰富的游戏内容,好多还要进行自己编写类,从今天开始解绍一个新的python游戏库arcade模块。通过此次的《连连看》游戏实现,让我对swing的相关知识有了进一步的了解,对java这门语言也有了比以前更深刻的认识。java的一些基本语法,比如数据类型、运算符、程序流程控制和数组等,理解更加透彻。java最核心的核心就是面向对象思想,对于这一个概念,终于悟到了一些。_arcade语言 like

随便推点

【增强版短视频去水印源码】去水印微信小程序+去水印软件源码_去水印机要增强版-程序员宅基地

文章浏览阅读1.1k次。源码简介与安装说明:2021增强版短视频去水印源码 去水印微信小程序源码网站 去水印软件源码安装环境(需要材料):备案域名–服务器安装宝塔-安装 Nginx 或者 Apachephp5.6 以上-安装 sg11 插件小程序已自带解析接口,支持全网主流短视频平台,搭建好了就能用注:接口是公益的,那么多人用解析慢是肯定的,前段和后端源码已经打包,上传服务器之后在配置文件修改数据库密码。然后输入自己的域名,进入后台,创建小程序,输入自己的小程序配置即可安装说明:上传源码,修改data/_去水印机要增强版

verilog进阶语法-触发器原语_fdre #(.init(1'b0) // initial value of register (1-程序员宅基地

文章浏览阅读557次。1. 触发器是FPGA存储数据的基本单元2. 触发器作为时序逻辑的基本元件,官方提供了丰富的配置方式,以适应各种可能的应用场景。_fdre #(.init(1'b0) // initial value of register (1'b0 or 1'b1) ) fdce_osc (

嵌入式面试/笔试C相关总结_嵌入式面试笔试c语言知识点-程序员宅基地

文章浏览阅读560次。本该是不同编译器结果不同,但是尝试了g++ msvc都是先计算c,再计算b,最后得到a+b+c是经过赋值以后的b和c参与计算而不是6。由上表可知,将q复制到p数组可以表示为:*p++=*q++,*优先级高,先取到对应q数组的值,然后两个++都是在后面,该行运算完后执行++。在电脑端编译完后会分为text data bss三种,其中text为可执行程序,data为初始化过的ro+rw变量,bss为未初始化或初始化为0变量。_嵌入式面试笔试c语言知识点

57 Things I've Learned Founding 3 Tech Companies_mature-程序员宅基地

文章浏览阅读2.3k次。57 Things I've Learned Founding 3 Tech CompaniesJason Goldberg, Betashop | Oct. 29, 2010, 1:29 PMI’ve been founding andhelping run techn_mature

一个脚本搞定文件合并去重,大数据处理,可以合并几个G以上的文件_python 超大文本合并-程序员宅基地

文章浏览阅读1.9k次。问题:先讲下需求,有若干个文本文件(txt或者csv文件等),每行代表一条数据,现在希望能合并成 1 个文本文件,且需要去除重复行。分析:一向奉行简单原则,如无必要,绝不复杂。如果数据量不大,那么如下两条命令就可以搞定合并:cat a.txt >> new.txtcat b.txt >> new.txt……去重:cat new...._python 超大文本合并

支付宝小程序iOS端过渡页DFLoadingPageRootController分析_类似支付宝页面过度加载页-程序员宅基地

文章浏览阅读489次。这个过渡页是第一次打开小程序展示的,点击某个小程序前把手机的开发者->network link conditioner->enable & very bad network 就会在停在此页。比如《支付宝运动》这个小程序先看这个类的.h可以看到它继承于DTViewController点击左上角返回的方法- (void)back;#import "DTViewController.h"#import "APBaseLoadingV..._类似支付宝页面过度加载页

推荐文章

热门文章

相关标签