软件测试用例(二)

目录

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐣🐣 python
🐓🐓🐓 数据结构C语言
🐔🐔🐔 C++
🐿️🐿️🐿️ 文章链接目录
🏀🏀🏀 笔试练习题
🐯🐯🐯 Git
😎😎😎 软件测试

基于需求的设计方法

之前有说过测试和开发工作开展依据是根据软件需求的文档进行的

基于需求的设计方法也是总的设计测试用例的方法,在工作中,我们需要参考需求文档/产品规格说明书来设计测试用例。

测试人员接到需求之后,要对需求进行分析和验证,从合理的需求中进⼀步分析细化需求,从细化的需求中找出测试点,根据这些测试点再去设计测试用例。

以该注册邮箱账号需求为例,我们来设计测试用例。

上图为软件需求,根据这个需求我们通过万能公式后就可以设计出下面的测试用例

其中我们看到像姓名 电子邮箱 密码...没有将具体的测试用例写出来,这其实是因为如果要一个一个的写出来就太麻烦了,那我们应该怎么写才能让测试用例覆盖全面呢

测试用例具体设计方法

等价类

测试的时候通过穷举法来测试6位、7位、8位...14位,15位是否测试通过,这样的方法虽然能测,但是企业讲究的是效率和质量,这样测会导致效率特别低,而等价类法的出现就解决了穷举法不能解决的问题

依据需求将输如入(特殊情况下会考虑输出)划分为若⼲个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题

举个例子,老师在讲一道考试题,每次都会在讲完后问班上的同学是否都听明白了,但是他并不是一个一个的问,而是当他听到有一个同学说会了的时候就默认其他同学都会了,这是因为他把全班同学都当成一个同等水平的人,也就是等价类,当一个人说会的时候,那其他人大概率也是会的

等价类分类:

有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了规格说明中所规定的功能和性能

无效等价类:根据需求说明书,不满足需求的集合

以邮箱测试为例

边界值

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

边界值包含:边界值+次边界值

举个例子

有效范围[6,15]

边界值:6 15(有效)

次边界值:5 16(无效)

有效范围(6,15)

边界值:6 15(无效)

次边界值:7 14(有效)

边界值就是上面的左数据和右数据

选择边界值的时候要根据他的有效和无效情况定

1:当边界值为有效等价类中的数据,则次边界值为无效等价类中的边界

2:当边界值为无效等价类中的数据,则次边界值为有效等价类中的边界

有了边界值这个概念后就可以将之前邮箱的测试用例补全

正交法

通常来说,为了保证系统的测试覆盖率,我们首先能够想到的就是排列组合。

假如当前有两个选项A和B,可以设计出都填写、都不填写、填写A、填写B四个测试用例 2^2个

假如当前有三个选项A、B、C,通过设计可以得到8个测试用例 2^3

当选项特别多时我们不可能将所有测试用例都写出来,于是就需要用到正交法,正交法的特点就是覆盖测试范围大,且能减少测试样例的数量

正交试验设计是研究多因素多水平的⼀种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。正交试验设计是⼀种基于正交表的、高效率、快速、经济的试验。

正交表

这是一张正交表图

其中第一排为表头又叫作因素,里面的数字就是对应的哪几种因素

因素1这一列全是1和2,整个表中的所有因素对应的列也都是1和2,我们将列中的数字称为水平

水平是因素的取值,而因素是存在的条件,也就是说不同的条件下存在哪些取值

这张表我们可以用L12(2^11)来表示

具体含义如下

正交表性质

正交表的性质:

每一列中,不同的数字出现的次数相等

任意两列中数字的排列方式齐全而且均衡

这张图片的每一列出现的数字次数相同(每列中的数字1和2次数都相同)

同一列中的数字次数也是相同的(第一列有6个1和6个2)

对于每行的数字也有规律

比如第一行全是1,那么后面几行都不会再出现这种排列组合了

因为这张图比较复杂,我们举一个简单一点的例子

第一列和第二列合在一块看可以发现,是由1 2 3这3个数字进行排列组合而成的,比如由1开头为1 1, 1 2, 1 3

由2开头为2 1, 2 2, 2 3...

第二列和第三列合在一块看也是这样排的

同理第三列和第四列也是这样

将所有的合在一块看,也是按照这个规律排列的

从上面这个例子看正交表很难设计,所有我们需要采用工具设计

正交表设计例子
allpairs工具

设计正交表的工具叫做allpairs

直接打开会闪退

第一步根据需求找出因素和水平

我们以邮箱注册为例

他的因素由姓名 电子邮箱 密码 确认密码 验证码这五个因素,水平由两个,分别为填写和不填写

第二步将因素和水平写入Excel表格(不用保存)
第三步创建 .txt 文化

在文件夹中创建文本文档

选择Excel表格复制表格中的内容然后粘贴到.txt文件中并保存

第四步用allparis生成正交表

首先找到命令提示符

然后复制文件夹路径

因为我是在C盘下的,所有我直接将C盘的路径复制粘贴上去就行了(要用cd命令)

然后dir查看当前路径下的文件

然后输入allpairs.exe xxx.txt >(生成xxx名字的名字).txt

如果按回车后出现下面这样的话说明失败了

所有没错我没做成功😂😂

但是方法是这样的

网上的视频最后生成的结果是这样的

波浪号表示的是任意选项,即可以选填写或不填写

最后就设计用例

判定表法

需求中会存在各种各样的场景,现在我们把需求改成如下的要求:

用户输入的账号中包含admin字符,或者通过内部链接进入注册页面,提交注册按钮成为管理员身份,反之无管理员身份。

通过这个需求可以看出,不同的组合操作可能对应不同的结果。采用正交法无法解决这样的问题。而正交法能够解决需要考虑输入之间的组合关系对应不同结果的场景

判定表是⼀种表达逻辑判断的工具,像下面这样的

根据判定表法设计测试用例的步骤:

  1. 确认需求中输入条件和输出条件
  2. 找出输入条件和输出条件之间的关系
  3. 画判定表
  4. 根据判定表编写测试用例

以之前的例子为例

确认需求中输入条件和输出条件

输入条件:账号包含admin字符、内部注册链接、点击注册按钮

输出条件:管理员、无管理员

从上面的例子可以看出不同的输入条件对应这不同的输出条件,之前的正交表中输出条件不是唯一的,对于需要主观判断的一些输出结果我们需要用判定表法

场景法

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同⼀事件不同的触发顺序和处理结果就形成事件流。

用例场景来测试需求是指模拟特定场景边界发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而用来发现需求中存在的问题。

我们通常以正常的用例场景分析开始,然后再着手其他的场景分析。

场景法⼀般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。

场景主要包括4种主要的类型:正常的用例场景,备选的用例场景,异常的用例场景,假定推测的场景

举个例子,以逛街买衣服为场景

该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。

典型的应用是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向

根据邮箱账号注册的例子,用场景法来设计测试用例

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

1.确定基本流

2.确定备选流

3.根据备选流补充测试用例

4.编写测试用例

编写测试用例:

1.输入正确的账号密码,点击注册后系统发出确认邮件并在24H内确认,注册成功。

2.不输入账号密码,点击注册,提示重新输入

3.只输入账号,不输入密码,点击注册,提示重新输入

4...

错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法

这个其实没什么好说的,就是凭自己的感觉设计测试样例

相关推荐
蒙奇D索大2 分钟前
【数据结构】图论实战:DAG空间压缩术——42%存储优化实战解析
数据结构·笔记·学习·考研·图论·改行学it
计算机小手14 分钟前
Docker 快速搭建一个基于 GPT-Vis 组件的统计图表生成服务
经验分享·docker·开源软件
Cyrus_柯15 分钟前
C++(面向对象编程)
开发语言·c++·算法·面向对象
^可乐34 分钟前
中控ST语言笔记
笔记
筑梦之路1 小时前
ubuntu 22.04设置时区和24小时制显示——筑梦之路
linux·运维·ubuntu
西岭千秋雪_1 小时前
计算机网络学习笔记:TCP流控、拥塞控制
网络·笔记·学习·tcp/ip·计算机网络
程序设计实验室1 小时前
个人数据保全计划:如何安全地备份数据
linux·个人数据保全计划
qq_25929724731 小时前
网络编程TCP与UDP
c语言·物联网
可耳(keer)2 小时前
MIT线性代数第二讲笔记
笔记·线性代数
teeeeeeemo2 小时前
CSS place-items: center; 详解与用法
前端·css·笔记