当前位置: 首页 > news >正文

【软件测试】第三章·软件测试基本方法(基于需求的测试方法)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏:🏀软件测试与软件项目管理_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 前言

2. 回顾

3. 软件测试的基本方法

3.1 基于直觉和经验的测试方法

3.2 错误猜测法

3.3 等价类划分方法

3.3.1 示例

3.4 边界值分析方法

3.5 判定表法

3.5.1 判定表法术语及其应用

3.5.2 示例

3.6 因果图方法

3.6.1 因果图的基本符号

3.6.2 示例

3.7 Pairwise方法

3.7.1 示例

3.8 正交实验法 

3.8.1 弱覆盖法

3.8.2 正交实验法(考试不考的,因为要查表)

4. 总结


1. 前言

考试前猫猫又开始更新考试科目了(也就是开始学了bushi)。本学期更新的科目有:

  • 软件测试
  • 软件项目管理
  • 爬虫和Web数据管理
  • 数据可视化

本系列【软件测试】将针对软件测试的基础知识进行拆分讲解,既是对自己学习的一次巩固也想为后面学习的猫友们提供一些帮助。如果大家有空可以点个免费的赞和收藏呀~~你的鼓励真的对猫猫很重要。

2. 回顾

软件缺陷是软件质量的对立面:软件质量有好几个因素包括功能、可靠、易用、可移植、可维护等。软件缺陷就是其反义词。

软件缺陷是什么:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能失效或违背

软件测试的分类:层次/对象(单元测试、集成测试、系统测试、验收测试)、类型(功能测试、安全性测试、可靠性测试等)、方法(静态测试和动态测试、黑盒测试和白盒测试等)

静态测试和动态测试:看是否运行可执行软件(静态仅仅看需求、设计文档和代码)

主动测试和被动测试:主动(测试人员主动操作被测对象,获得被测对象的响应情况)、被动(测试人员被动地监视在实际环境中运行的系统,从而获得系统数据)

黑盒测试和白盒测试:黑盒(不看具体代码,仅仅是输入数据看其输出数据是否正确)、白盒(允许看实际的代码)

软件测试的流程:测试需求分析、测试计划与设计、执行、结果评估

3. 软件测试的基本方法

        软件测试也有许多方法,这些方法有的来源于一种哲学思想,例如辩证统一的方法,在测试中有许多对立统一体,如静态测试和动态测试、白盒测试和黑盒测试、自动化测试和手工测试等。有的来源于软件工程的方法论,例如有面向对象的开发方法就有面向对象的测试方法;有敏捷方法,就有和敏捷方法对应的敏捷测试。当然软件测试的基本方法也可以分为好几个部分,今天我们学习的是基于需求的软件测试方法!!

3.1 基于直觉和经验的测试方法

ALAC(Act like a customer)测试方法是一种基于客户使用产品的知识开发出来的测试方法,它基于下面的理论:

3.2 错误猜测法

        错误推测法是测试者根据经验、知识和直觉来发现软件错误,来推测程序中可能存在的各种错误,从而有针对性的进行测试。

3.3 等价类划分方法

  • 等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。
  • 将输入数据分成若干个等价类,从每个等价类选取一个代表性的数据作为测试用例。
  • 等价类分为有效等价类(合理的数据)和无效等价类(异常的数据)

3.3.1 示例

明确需求+划分等价类:

设计数据编写用例:

  1. 有效数据编写:尽可能一次全部覆盖有效点(同一个测试点内不同项没有办法全部覆盖)。
  2. 无效数据编写:一次只能覆盖一个无效点。另外几个测试点都要有效。

3.4 边界值分析方法

很多错误发生在输入或输出范围的边界上,因此针对各种边界情况设置测试用例,可以更有效地发现缺陷。设计方法:

  • 确定边界情况 (输入或输出等价类的边界)
  • 选取正好等于、刚刚大于或小于边界值作为测试数据

一个练习:

3.5 判定表法

        在前面的等价类划分中,我们可以看到一次我们只能验证一个测试点是否有效(账号或密码)。但是有时候我们需要验证的是测试点组合起来是否有效,也就是说所有测试点本身都有效,但是组合起来的结果并不一定满足要求,因此这个组合也是我们需要测试的,这个时候就需要使用判定表方法。

3.5.1 判定表法术语及其应用

  • 条件桩:问题的所有条件。
  • 动作桩:针对问题所采取的动作。
  • 条件项:所列条件的具体赋值。
  • 动作项:在条件项组合情况下应采取的动作。
  • 规则:任何一个条件组合的特定取值及其相应的动作。

3.5.2 示例

判定表尤其适用于简单的情况:

3.6 因果图方法

判定表本质:用“与”关系表达所有规则。

因果图的原因:这在情况不复杂的情况下很好用,因为“与”关系是最直观的关系表达,是人类最容易理解的方式。但是一旦事物之间的情况变复杂后,“与”关系的表达能力就比较弱了,会让表达显得很复杂。因此我们就引入了因果图:“与”关系+“或”关系+“非”关系。同时因果图对条件本身的关系也新增了描述。

  • 条件——动作:除了“与”关系还加入“或”关系 和 “非”关系。
  • 条件之间:M(互斥)、I(包含)、O(唯一)、R(要求)、M(屏蔽)、IR(无关)

3.6.1 因果图的基本符号

条件到动作:

条件之间:

3.6.2 示例

        1. 先不考虑条件关系写出所有可能性。

        2. 把不满足条件关系的项去除。

3.7 Pairwise方法

背景:大部分缺陷是在两个变量取值冲突的测试时被发现的。也就是三个及以上变量组合导致冲突可能性低,大部分都是两个组合导致的冲突。如果两两组合都没有冲突,那么大概率也不会冲突。即ab、bc、ac不冲突,那么abc大概率也不冲突。

定义:确保某个变量取值和另一个变量取值组成的对都会被覆盖即可,不保证3个及以上组合会被覆盖。

3.7.1 示例

假设有3个维度,每个维度有几个因子。如下:

浏览器:M,O,P

操作平台:W(windows),L(linux),i(ios)

语言:C(chinese),E(english)

求解:

使用pairwise算法,有多少个测试case?具体是什么case?我们沿用数学做题的格式。


解:

如果不用pairwise算法,我们需要 3*3*2=18个测试case。下面是具体的case:

1,M W C

2,MW E

3,M L C

4,M L E

5,M I C

6,M I E

7,O W C

8,O W E

9,O L C

10,O L E

11,O I C

12,O I E

13,P W C

14,P W E

15,P L C

16,P L E

17,P I C

18,P I E

        一共有18个,很繁琐。但是这是100%的测试覆盖率,缺陷率也是100%。现在我们使用pairwise,看看结果如何?首先咱们从最下方一个18号开始,它是 P I E,两两组合是 PI ,PE ,IE。看这3个组合在以上的相同位置出现过没有,PI在17号,PE在16号,IE在12号出现过。所以18这个case就可以舍去。最终剩下的如下:

1、MWC

4、MLE

6、MIE

7、OWE

9、OLC

11、OIC

14、PWE

15、PLC

17、PIC

        共计9个测试case,节省了50%的测试case。现在我们从上面开始重新做一次。1号是MWC,两两组合是MW MC WC 都出现过,去掉。最终剩下的是:

2、MWE

4、MLE

5、MIC

8、OWE

10、OLE

11、OIC

13、PWC

15、PLC

18、PIE

       这样也是剩下9个测试case,但是具体的case内容不一样。经过L. L. Thurstone证明,pairwise算法最终剩下的测试case个数肯定相同,但是可以有不同的case组合。

可以说Pairwise方法完全是基于统计学的经验

3.8 正交实验法 

背景:和Pairwise类似。都是穷举法穷尽所有可能的测试点太复杂,因此选择有代表性的测试点,从而合理安排实验的一种方法。

3.8.1 弱覆盖法

如下的Web应用兼容性测试案例:

测试条件
操作系统:Windows,MacOS,Unix,Linux
浏览器:IE内核,FireFor内核,Chnome内核,Safari内核
分辨率:1920*1080,2560*1440,1600*900
这个测试的等价类全组合为:4*4*3=48,太多了,如何降低测试规模,并保证测试典型性?

我们现在能想到的方法是利用弱覆盖标准来设计等价类组合。

坐标轴演示
第一次覆盖:横轴为操作系统,有1、2、3、4四个值;纵轴为浏览器,有1、2、3、4四个值

  • 现在就是覆盖到了8个组合条件(4+4=8)
  • 这里用xy轴,暂时不引入第三个条件,因为引入第三个条件之后,就是三维空间了,不好控制。
  • 弱覆盖标准下只需在这些数值交点上取相应组合就行,不重复的前提下最终得到4个组合,这四个组合再与另外一个条件进行第二次覆盖。当然可以随意取值,一个点就是两个变量,只要都覆盖到就可以

第二次覆盖:横轴为第一步取到的4种组合,分别设定为1、2、3、4;纵轴为分辨率,有1、2、 3三个值,弱覆盖标准下只需在这些数值交点上取相应组合就行;最终得到4个组合。覆盖7(4+3)个组合条件。这里x轴第四个重复了2k分辨率,不影响 

最终的得到的组合:

  1. windows+IE内核+2560*1440
  2. MacOS+Chrome+1920*1080
  3. Unix+Firefor+1600*900
  4. Linux+Safari+2560*1440

但是,弱覆盖不能保证测试的结果安全性,所以以上这种方法并不可取。它没有覆盖到所有条件组合的关系,只覆盖到了原有的11个条件类,而没有覆盖到这11个类的组合。在等价类方面,为了确保测试用例的典型性,就要用到正交试验法。

3.8.2 正交实验法(考试不考的,因为要查表)

正交实验表都已经被人设计好了,我们需要做的仅仅是去查表。明确我们的测试对象需要用哪一张正交表去测试即可。

每一个正交表(普通正交表)如下:

L_n(q^s)

或者混合正交表如下:

L_n(q_1^{s^1}\times q_2^{s^2})

如果我们确认n、q、s也就确认了使用哪一张正交表。


  • 因素s: 输入条件 (因素)的个数(例如上个例子中,有三个条件,分别是操作系统,浏览器,分辨率)
  • 水平q: 每个实验因素的取值个数、即每个因素的实验点的个数(也就是取值个数)
  • 实验总个数n:表示测试用例的总个数,也就是这个正交表生产的测试用例的数目

对于s和q很好确定,对于测试对象需要的测试用例总数确定公式如下:

n=1+\sum_{1}^{S}(\mathrm{q}-1)

如上面这个例子最后n为9=1+3+3+2。

4. 总结

本篇文章作为【软件测试】系列的第三篇文章,算是软件测试中的一个重点内容——基本测试方法。主要讲的是基本测试方法中的基于需求的测试(等价类划分、边界值法、因果图法、判定表法还有正交法、Pairwise法等等)

如果想持续关注【软件测试】和【软件项目管理】系列文章,可以订阅:

  • 软件测试与软件项目管理_十二月的猫的博客-CSDN博客

如果想学习计算机其他方面的核心知识(都是猫猫的优质好文哦),可以订阅:

  • 计算机网络_十二月的猫的博客-CSDN博客
  • 软件工程与面向对象_十二月的猫的博客-CSDN博客、
  • 操作系统与数据库_十二月的猫的博客-CSDN博客
  • 编译原理_十二月的猫的博客-CSDN博客
  • 算法启示录_十二月的猫的博客-CSDN博客

 如果觉得本文对你有帮助,友友们可以点个赞,收个藏呀~

http://www.xdnf.cn/news/607951.html

相关文章:

  • Trae+12306 MCP,10分钟搭建行程可视化助手
  • Gmsh 代码深度解析与应用实例
  • 【开源项目1】基于机器学习木马查杀引擎项目
  • 1.3 线性系统的时域分析法
  • kafka速度快的原理
  • 【时时三省】(C语言基础)对被调用函数的声明和函数原型
  • [Datagear] [SQL]实现分组统计同时带汇总行的两种方式对比分析
  • AI架构师的新工具箱:ChatGPT、Copilot、AutoML、模型服务平台
  • NtfsLookupAttributeByName函数分析之和Scb->AttributeName的关系
  • vim快速移动光标
  • 多路径传输(比如 MPTCP)控制实时突发
  • 动态规划经典三题_完全平方数
  • JFace中MVC的表格使用介绍
  • C++高效求解非线性方程组的实践指南
  • Ubuntu 18.04 升级内核到 5.X(< 5.10)
  • 【YOLOs-CPP-图像分类部署】03-解决报错
  • LSNet:以小见大,CVPR2025全新轻量级主干网络
  • Node.js 库大全
  • 怎么判断一个Android APP使用了KMM这个跨端框架
  • AI是否会取代人类?浔川问答①
  • 怎么判断一个Android APP使用了Tauri 这个跨端框架
  • css 里面写if else 条件判断
  • 量化indicators指标
  • @JsonFormat时区问题
  • 从渗透测试角度分析 HTTP 数据包
  • 3D打印仿造+ AI大脑赋能,造出会思考的全景相机
  • 【摄影测量与遥感】卫星姿态角解析:Roll/Pitch/Yaw与Φ/Ω/Κ的对应关系
  • 第十天 高精地图与定位(SLAM、RTK技术) 多传感器融合(Kalman滤波、深度学习)
  • PyTorch中TensorBoardX模块与torch.utils.tensorboard模块的对比分析
  • Teensy LC 一款由 PJRC 公司开发的高性能 32 位微控制器开发板