软件测试不常用但是一定要会的测试技术与用例设计

news2024/11/26 0:45:35

一、认识基本术语

术语一:

动态测试(dynamic testing)

通过运行软件的组件或系统来测试软件(实际运行被测软件/系统)【需要进行操作】

静态测试(static testing)

对组件的规格说明书进行评审,对静态代码进行走查 (不实际运行被测软件/系统,通过对需求规格说明书进行走查、阅读等动作,代码进行备注走查)【主要以看为主】

正式评审(formal review)

对评审过程及需求文档的一种特定评审 (也就是会议评审,一般公司会对需求进行正式的评审)如:

1、代码评审:当前迭代功能相关的代码进行评审

2、接口评审:前后端需要进行数据交互;如电商商家在后台添加商品

度量(metric)

测量所使用的方法或标准

评审员(reviewer)

参与评审的人

记录员(scribe)

记录评审会议上的会议纪要

术语二:

◆技术评审(Technical Review)

同行间对技术进行的评审,目的是技术实现达成共识。

◆走查(Walkthrough)

由文档作者逐步陈述文档内容,以收集信息并对内容达成一致 。(即产品经理在讲解需求文档的时候,大家各抒己见,最后达成一致意见的过程.)

◆复杂性(complexity)

系统或组件的设计或内部结构比较复杂, 导致难以理解,维护或验证的程度(与代码相关,用圈复杂度来体现) 

◆圈复杂度(Cycloramic complexity)

程序中独立路径的数量。可以衡量一个组件模块的判定结构的复杂程度。(用来衡量代码的复杂程度,代码越复杂,圈复杂度越高;反之越低) 

◆控制流(Control Flow)

执行组件或系统的一系列顺序的路径

◆数据流(Data Flow)

表示数据对象的顺利或状态发生变化的过程()

术语三:

◆控制流图概念

(CFG,Controlflowgraph)也叫控制流程图,是一个过程或程序的抽象表现。

◆圈复杂度

圈复杂度是一种代码复杂度的衡量标准。程序中独立路径的数量,可以衡量一个组件模块的判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系。

计算对象是结构图或程序图,而程序图又包括控制流图与流程图。

Ø圈复杂度第一个计算公式:V(G)=E-N+2(E表示控制流图中的边数;N表示控制流图中节点数)

Ø圈复杂度(反映了“判定条件”的数量)第二个计算公式:V(G)=(控制流图)区域数

Ø圈复杂度第三个计算公式:V(G)=P(判定节点数)+1

二、常见的用例设计方法

等价类定义(重点)

等价类:指某个输入域的集合,在集合中各个输入的条件都是等效的。

字符:指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。

等价类分析方法

Ø使用范围:适用于有无限多种输入

Ø目的:使用较少的测试用例尽可能将更多的功能点覆盖全通常等价类划分为2种情况:

Ø有效等价类:对程序规格说明有意义的、合理的输入数据

Ø无效等价类:对程序规格说明无意义的、不合理的输入数据

等价类划分举例

Ø规定了输入值的范围或值的个数(如:0<a<100或输入6-10个字符)

Ø输入值为布尔值(如:真或假、是或否、对与错不存在无效等价例)

Ø规定了输入数据的一组值(如文化程度:初中、高中、大学)

Ø规定了输入规则时,可以划分出一个有效的等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

常见的能够划分等价类的地方

1.数值范围 2. 重复次数 3. 字符串长度

4. 字符串组中字符的个数 5. 文件命名 6. 文件大小

7. 屏幕的颜色种类 8. 超时时间

等价类划分的设计用例思路

1. 找输入条件 2. 为每个输入条件找有效、无效等价类

3. 为每个等价类编号 4. 用最少的用例覆盖最多的有效等价类

5. 每一个无效等价类都是一个用例

6. 并非所有有效等价类都有无效 7. 等价类的覆盖可以重复覆盖

等价类设计用例覆盖的原则 

Ø每个用例尽可能多的覆盖多个有效的等价类

Ø每个用例只能覆盖一个无效等价类

等价类的优缺点

优点:是考虑了单个输入域的各类情况, 避免

了盲目或随机选取输入数据的不完整性和覆盖

的不稳定性。

缺点:方法虽然简单易用,但是没有对组合情况

进行充分的考虑。需要结合其他测试用例设计的

方法进行补充。比如边界值

→测试用例编写如:

输入值           有效等价类         无效等价类

日期类型及长度     6位数字字符(1)   非数字类型(6)

                                      大于6位(7)     

                                      小于6位(8)

                                    注意:不能合写

年份范围           1990-2049(2)       大于2049(9)

                                      小于1990(10)

月份范围           01-12(3)       小于01  0特殊(11)

                                      大于12(12)

前4位表示年       前四位为年(4)    前四位不为年(13)

后2位表示月       后两位为月(5)    后两位不为月(14)

------   -----   -----   ----    ------

有效输入值:199101  202207   (满足1、2、3、4、5)

无效输入值:二零220705 (6、7)  2207(8)  

205007(9) 189907(10)

◆测试用例

Ø面试题:用例中包含哪些内容?  包括用例编号、用例标题、前置条件、操作步骤、预期结果、用例等级

Ø用例标题:只能用陈述句,不能出现是否等判断性的文字,简单且清晰明了

边界值(重点)

边界点定义

Ø上点:边界上的点        Ø内点:在域范围内的点

Ø离点:离上点最近的点(即上点左右两边最邻近的点)

边界条件分析

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

Ø输入条件明确了一个有序集合边界值分析法:满足a

eg.正整数值域[66,88]上点:66、88 内点:77离点:65,89

eg.正整数值域(66,88)上点:66、88 内点:77离点:67,87

★注:内点一般取中间值

★区别:闭区间上点有效,离点无效;开区间上点无效,离点有效。

边界值分析原则

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

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

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

试数据

判定表

Ø判定表定义: 分析和表达多逻辑条件下执行不同操作的情况

Ø适用范围:遇到复杂业务,可以使用判定表来梳理业务之间的逻辑关系。

结构:由4个部分组成

1)条件桩(condition stub):列出问题的所有条件(通常条件次序无关紧要)。条件(输入)需求规格说明书定义的被测对象所有值。 

2)条件项(condition entry):列出针对它条件的取值(所有情况下的真假值)

3)动作桩(action stub):列出问题规定可采取的动作(顺序无约束)。动作(输出)针对条件,被测对象可能采取的所有操作。 

4)动作项(action entry):列出条件各种情况的应采取的动作。针对动作桩,被测对象所有的可能取值。

◆设计判定表的步骤:

1、理解需求、确定条件桩、动作桩

2、确定规则的个数;若有N个条件,每一个条件下面有2个值,则有2^n种规则。

3、设计判定表并列出所有条件桩与动作桩。               

4、输入条件项和动作项得到初始判定表

5、根据判定表种输入结果的表现,进行判定表并入,简化得出结果并理清业务逻辑(合并相似规则)6、编写测试用例

  ◆判定表法测试用例

1、画出判定表2、简化得出清晰的业务逻辑 3、转化为测试用例

条件桩

1

2

3

4

用户欠费?

Y

Y

N

N

用户关机?

Y

N

Y

N

规则条数统计

4

1

1

1

1

动作桩

允许主被叫

禁止主被叫

注:判定表每一行/每一列都是一条测试用例

1、简化得出清晰的业务逻辑(合并相似规则)

用例编号    用户是否欠费   用户是否关机  预期结果

1            是            是        禁止主被叫

2            是            否        禁止主被叫

3            否            是        禁止主被叫

4            否            否        允许主被叫

2、转化为测试用例

用例编号 用例标题 前置条件 操作步骤 预期结果 优先级

5.2.6因果图

◆因果图定义

因果图用画图的方式来表达输入条件和输出结果的直接关系。因果图提供了一个把规格转化为判定表的系统化方法,从该图中可以产生测试数据。其中,原因是表示输入条件,结果是对输入执行的一系列计算后得到的输出。

Ø因果图方法最终生成的就是判定表。它适合于检查软件输入条件的各种组合情况

因(原因):输入条件      果(结果):输出结果

因果图中的四种基本关系

在因果图的基本符号中,图中的左结点ci 表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci与ei取值0或1,0表示某状态不出现,1则表示某状态出现。

Ø恒等关系:==当原因出现的时候,结果一定出现

Ø非关系:~ not ≠   当原因出现的时候,结果不一定出现

Ø或关系:V or / | || 多个原因中有一个原因出现时,则结果一定出现

Ø与关系:^ 和 且 and  多个原因同时出现,则结果才能出现

因果图中约束符号

在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。

ØE约束(异): a和b中最多有一个可能为1,即a和b不能同时为1(两个可以都不选,但是如果要选只能选一个)

ØI约束(或):a、b、c中至少有一个必须为1,即a,b,c不能同时为0(所有原因中最少选一个,但不能同时都不选或同时都选)

ØΦΟ约束(唯一):a和b必须有一个且仅有一个为1(只能选一个,不能同时都选或同时都不选)

ØR约束(要求):a是1时。b必须是1,即a为1时,b不能为0(深圳市,出现的时候必须要求出现广东省)

ØM约束(强制):若结果a为1,则结果b强制为0(输入胡萝卜,结果强制为蔬菜)

因果图的步骤:

1.把大的系统规格划分解成可以测试的规格片段

2.分析分解后待测的系统规格,找出哪些是原因,

哪些是结果

3.画出因果图            4.把因果图转换成判定表

5.简化判定表    6.用判定表中的每一列生成测试用例

因果图转换判定表的方法:

1. 将因果图中的所有条件(因)填入判定表的条件桩中;

2. 将因果图中的所有动作(果)填入判定表的动作桩中;

3. 根据因果图确定各个条件组合对应的动作,并且确定判定表中各个规则的条件项和动作项,在需要时优化判定表。

◆因果图设计测试用例

找出原因结果并进行编号:

画出因果图:

面试题:你在上一家公司是怎么使用因果图设计测试用例的?

an:我在上一家公司一般不会画因果图,但是对于需求文档当中有因果关系的需求时,我们会把因果图的原因放到判定表的条件桩中,再把因果图中的结果放入到判定表的动作桩中,从而把因果图转为了判定表,可以防止用例的漏写和漏测。

→因果图的优点  

1.等价类法尽管各个输入条件可能出错的情况都考虑到了,但是多个输入条件组合起来出错的情况却被忽略了

2.因果图法能够帮助我们按照一定步骤,高效的选择测试用例,设计多个输入条件组合用例

3.因果图分析还能为我们指出,程序规格说明描述中存在什么问题

→因果图的缺点:

Ø输入条件与输出结果的因果关系,有时难以从软件需求规格说明书得到

Ø即使得到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目及其庞大

◆场景法设计测试用例:

基于用户场景梳理业务逻辑,再挑选最合适的方法设计测试用例,为的是尽可能的去还原用户全部真实操作。

◆业务需求方面:对所测软件的重要功能,业务逻辑(系统要干什么,怎么去实现这个过程)和行业背景进行深入了解

◆技术层面:基于等价类划分

Ø有效等价类:用户的一个正确操作场景

Ø无效等价类:用户的一个错误操作场景

◆核心概念:

Ø基本流(正确,有效流):模拟用户的正确操作过程

Ø备选流(错误,无效流):模拟用户的错误操作过程

三、黑盒用例设计方法

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。

在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。

黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了。

黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景图法等。目前黑盒测试的常用测试用例设计方法有5种:等价类划分、边界值分析、错误推测法、因果图、功能图

B站最牛的Python自动化测试框架全栈测试开发实战项目入门到精通,涨薪必备教程!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【推荐】700套高端简历模板合集

简历&#xff08;英语&#xff1a;resume&#xff09;&#xff0c;顾名思义&#xff0c;就是对个人学历、经历、特长、爱好及其它有关情况所作的简明扼要的书面介绍。简历是有针对性的自我介绍的一种规范化、逻辑化的书面表达。对应聘者来说&#xff0c;简历是求职的“敲门砖”…

JSP学生宿舍网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 模块划分&#xff1a;通知类型模块、通知信息模块、院系信息、班级信息、宿舍 楼信息、宿舍信息、宿管信息、学生信息、…

three.js之多线条组合

文章目录多线条组合例子专栏目录请点击 多线条组合 我们可以通过CurvePath把多个曲线、直线等合并成一个曲线 例子 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><style>body {margin: 0;overflow: hidde…

CSS习题解答

文章目录1.1 样式定义方式1.2 选择器1.3 颜色1.4 文本1.5 字体1.6 背景1.7 边框1.8 元素展示格式1.9 内边距与外边距1.10 盒子模型1.11 位置1.12 浮动实战&#xff1a;个人名片1.13 flex布局1.14 响应式布局作业01作业02作业03作业04作业05作业06作业07作业08作业09作业10其他1…

正则表达式学习

文章目录入门开始和结束字符组区间特殊字符转义取反快捷匹配数字和字母匹配空白任意字符重复次数和区间或者条件进阶分组非捕获分组分组的引用正向先行断言反向先行断言正向后行断言反向后行断言常用元字符整理相关网站在线测试网站题目练习网站其他笔记入门 开始和结束 正则…

计算机毕设Python+Vue学生量化考核系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Python中groupby函数详解(非常容易懂)

目录&#xff1a;Python中的groupby函数一、groupby 能做什么&#xff1f;二、单类分组2.1 创建数据集三、多类分组一、groupby 能做什么&#xff1f; groupby函数主要的作用是进行数据的分组以及分组后地组内运算&#xff01; 于数据的分组和分组运算主要是指groupby函数的应…

网络安全等级保护十问十答

网络安全等级保护十问十答1.什么是等级保护&#xff1f;2.为什么需要等级保护&#xff1f;3.目标客户是&#xff1f;4.等保工作步骤包括什么&#xff1f;5.等保测评结论有几种结果&#xff1f;6.等保如何定级&#xff1f;7. 定级对象在哪备案&#xff1f;8. 等级保护都测评什么…

[附源码]计算机毕业设计Node.js宠物商店网站(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

Opencv(C++)笔记--Sobel算子

1--Sobel算子 1-1--原理 Sobel算子的构成如下图所示&#xff1a; 基于 Sobel 算子可以实现对图像的边缘检测&#xff0c;Gx常用于提取纵向边缘&#xff0c;Gy则常用于提取横向边缘&#xff1b; 1-2--Opencv API 在 ddeth 参数上&#xff0c;使用 cv::CV_16S 处理 8 位原图像&…

jsp+ssm计算机毕业设计高校班主任班级管理系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

跨模态检索的简单实现(pytorch)

目录说明说明往期文章和专栏代码及数据集下载什么是跨模态检索代码导入需要的库构建图像、文本子网络加载数据集计算mAP损失函数构建总损失函数训练部分主函数参数设置查看结果说明 说明 还是读研时候剩下的代码&#xff0c;是我从几篇论文里面摘出来的代码做了简单的拼装&am…

SCN时间序列预测模型详解(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 SCN&#xff08;System Change Number 简称 SCN&#xff09;是当Oracle数据库更新后&#xff0c;由DBMS自动维护去累积递增的一…

数据结构链式栈

上一节我们学习了顺序栈 我们了解到栈就是特殊的线性表 我们之前用过顺序表实现了栈 那么我们也可以用单链表的方式来实现一个链式栈 我们可以回顾一下单链表的结构 基础数据结构链表_iccoke的博客-CSDN博客 我们可以看到简单的对尾部进行操作 很难实现时间复杂度达到O&am…

JdbcTemplate

JdbcTemplateJdbcTemplate &#xff08;概念和准备&#xff09;1. 什么是 JdbcTemplate&#xff08;1&#xff09; Spring 框架对 JDBC 进行封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作2. 准备工作&#xff08;1&#xff09;配置文件的准备&#xff08;2&#xff…

100份PDF合并还不到3分钟,这2个方法非常简单,请低调使用

PDF文件作为我们工作中最为常见的“文件格式”之一。似乎哪里都有它的身影&#xff0c;有时我们还需要对PDF文件进行编辑和处理。那么&#xff0c;在众多PDF编辑和处理操作上&#xff0c;PDF合并可以算得上使用频率很高的存在。不过大多数小伙伴们并不清楚具体的操作方式是怎样…

Feign的另一种玩法-动态Feign

1.Feign传统方式的不足 ①.在微服务架构中,当我们使用Feign传统方式进行服务调用的时候,需要在每个服务消费者中添加FeignClient接口,编写对应的方法,而且当服务生产者Handler新增方法之后,服务消费者也要在FeignClient接口中添加方法,这样的话,会有些累赘. 那么能不能在调用服…

[附源码]计算机毕业设计Node.js畅玩电竞网咖购物点餐网站(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

R语言 线性混合效应模型实战案例

介绍 最近我们被客户要求撰写关于性混合效应模型的研究报告&#xff0c;包括一些图形和统计输出。首先&#xff0c;请注意&#xff0c;围绕多层次模型的术语有很大的不一致性。例如&#xff0c;多层次模型本身可能被称为分层线性模型、随机效应模型、多层次模型、随机截距模型…

web大学生网页作业成品 蛋糕店美食餐饮网站设计与实现(HTML+CSS+JavaScript)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…