测试从零开始-No.6-测试用例设计方法(等价类+边界值)「建议收藏」

测试从零开始-No.6-测试用例设计方法(等价类+边界值)「建议收藏」问题:有时候用selenium操作浏览器,打开多个页面后,在不用的时候,需要关掉,切换页面需要切换句柄,关掉页面后,也需要重新切换句柄,否则页面接着操作元素会出问题解决方法:

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

常见的用例设计方法

  • 等价类划分法(适用于输入项少,输入项的属性或者特性相同) 

  • 边界值分析法(适用于有范围约束的情况)

  • 判定表法(适用于有明显的条件及其对应的动作的情况)

  • 因果图法

  • 状态迁移图法(适用于状态随事件而改变的情况)

  • 场景分析法(适合于由事件触发而形成的使用场景,同一事件不同的触发逻辑形成不同的场景,从而形成不同的业务流程(路径),根据覆盖不同的路径来设计测试用例)

  • 正交实验法(适用于多条件或多输入情况)

  • 异常分析法(适用于大多数软件,从经验上判断容易出现错误或缺陷的地方设计用例)

  • 错误猜测法

等价类划分法

是把所有可能的输入数据,即程序的输入域划分成若干部分子集,然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。

  • 有效等价类:有效等价类是程序规格说明有意义,合法的输入数据

  • 无效等价类:无效等价类是程序规格说明无意义,不合法的输入数据。

等价类法设计测试用例的步骤:

1、为每个输入划分等价类,得到等价类表,为每个等价类规定一个唯一编号

2、设计一个测试用例,使其尽可能多的覆盖所有尚未覆盖的有效等价类。重  复这一步骤,使得有效等价类均被测试用例所覆盖

3、设计一个测试用例,使其只覆盖一个无效等价类。重复这一步骤使得所有无效等价类均被覆盖

等价类划分的原则

1、在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类. 

2、在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类. 

3、在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类. 

4、在规定了输入数据的一组值假定n个,并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类. 

5、在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类符合规则和若干个无效等价类从不同角度违反规则. 

6、在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类. 

等价类表可以参考下图所示:

图片

等价类划分法用例设计实战

根据下面给出的规格说明,进行测试用例的设计。

一个程序读入3个整数,把这三个数值看作一个三角形的3条边的长度值。程序输出:说明这个三角形是普通的、是等腰的、还是等边的。

等价类划分如下:

3条边分别为A,B,C。满足:A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B;

等腰需满足A=B,或B=C,或A=C ;

等边需满足A=B,且B=C,且A=C ;

图片

最终输出的场景如下:

图片

边界值分析法

边值分析方法的理论基础,是假定大多数的错误是发生在各种输入条件的边界上,如果在边界附近的取值不会导致程序出错,那么其它的取值导致程序错误的可能性也很小。

边界值分析使用条件

输入条件明确了一个值的取值范围,或是规定了值的个数

边值点的定义

上点:边界上的点,不区分开闭区间。

离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内

内点:顾名思义,就是在域范围内的任意一个点 

可通过下面这张图更形象的理解:

图片

再举个案例:

  • 正整数值域[66,88]:

上点就是66,88,并且都是在域内。内点就是域内得任意点,离点是65,89。

  • 正整数值域(66,88]

这种情况上点是66,88,其中一个是域内,一个是域外,内点就是域内的任意点,离点是:67,89。

  • 正整数值域(66,88)

这样的情况上点还是66,88,只是都是在域外,内点还是域内的任意点,离点此时为:67,87。

边界值分析的原则

1、如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例

2、如果输入(输出)条件规定了值的个数的取值范围,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据

3、如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试用例

4、如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例

    边界值分析方法是对等价类划分方法的补充。长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

小伙伴看到这,是不是觉得这样写用例写起来很麻烦呢?每次还要画很多的图表之类的,画图表只是一个分析的过程,等熟练之后,在实际工作中,可以根据自己的实际情况忽略某些步骤,只要在最终的测试点中能将这些测试点都考虑进去就行。详细的编写过程只是在初级测试找工作的时候,可能会在笔试题中考到,对相关的概念有个简单的了解就行。

关注公众号【小博测试成长之路】,下期带你了解其他的用例设计方法,后续会以项目实战的方式带大家熟悉。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183018.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简单实现微信扫码支付开发

    @文末附有开发案例代码的地址微信支付开发官方地址:https://pay.weixin.qq.com/wiki/doc/api/index.html 1. appid, 微信公众账号或开放平台APP的唯一标识 2. mch_id, 微信支付系统中的商户收款账号 3. partner, 财付通平台的商户账号 4. partnerkey, 财…

    2021年11月30日
    37
  • Java 程序员必须掌握的 4 大开源框架!

    Java 程序员必须掌握的 4 大开源框架!对于开发来说,我们在工作中普遍都会用到各个开源框架,比如最基础的Spring,使开发网络编程变得特别简单的Netty框架,还有成为目前微服务框架首选的SpringCloud等。在多个框架之上,我们仅需使用几行代码,即可实现业务需要的复杂功能,大大减少了工作量。也正因如此,不少人只会用框架,看不懂源码,不了解其底层机制与实现原理,成了一名只会搬运源码库的开发。说白了,就是真正牛逼的技术不属于你。可了解框架中的很多知识和代码,对解决开发中的类似问题是极其有帮助的。因为它们是经过时..

    2022年7月8日
    32
  • [干货]手把手教你写一个安卓app

    摘要:最近有很多小伙伴在后台留言:AndroidStudio。我想大家是想写一个手机app吧,前面已经分享了在QT上如何写一个安卓蓝牙app,虽然qt可以做app但是比起AndroidStudio还是差很多了!这里我们介绍一种快速入门的方法来制作一款app,就算你是零基础小白没有学习过java语言,我相信看完我的文章半天时间你也会做一个安卓app。本文针对初学者,大佬勿喷啊!1.创建HelloWorld项目这里我就不介绍如何安装这个AndroidStudio软件了,网上有很多教程或者去B站找对应

    2022年4月8日
    34
  • Tomcat常见问题解决 – The web application appears to have started a thread named [FileWatchdog]

    Tomcat常见问题解决 – The web application appears to have started a thread named [FileWatchdog]Tomcat常见问题解决 – The web application appears to have started a thread named [FileWatchdog]

    2022年4月23日
    50
  • Java volatile关键字作用[通俗易懂]

    Java volatile关键字作用[通俗易懂]当一个共享变量被volatile修饰时,它会保证修改的值立即被更新到主存“,这里的”保证“是如何做到的?和JIT的具体编译后的CPU指令相关吧?  volatile特性  内存可见性:通俗来说就是,线程A对一个volatile变量的修改,对于其它线程来说是可见的,即线程每次获取volatile变量的值都是最新的。  volatile的使用场景  通过关键字sychronize…

    2022年6月1日
    23
  • thinkPHP内置字符串截取msubstr函数用法详解

    thinkPHP内置字符串截取msubstr函数用法详解

    2021年9月18日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号