软件测试之正交法

news2024/9/29 18:13:46

正交法

在这里插入图片描述

通过分析我们发现,对于图中的程序而言,我们要设计81条测试用例,那么有没有一种方法能够使用最小的测试过程集合获得最大的测试覆盖率呢?

1. 概述

1.1 定义

正交法,也叫正交实验法或者正交排列法, 就是使用最小的测试过程集合获得最大的测试覆盖率

“正交实验”是研究多因素、多水平的一种实验方法,它利用正交表来对实验进行设计,通过少数实验代替全面的实验.

在一项实验中,把影响试验结果的量称为试验因素(因子),简称因素。因素可以理解为试验过程中的自变量,试验结果可以看成因素的函数。在试验过程中,每一个因素可以处于不同的状态或状况,把因素所处的状态或状况,称为因素的水平简称水平

1992年AT&T公司,针对某一个软件做了一个回归测试:

在18个周(4个半月)的时间范围内测试1500条测试用例。后来开发时间推迟了,测试时间被压缩了。测试经理想了一个办法,两个人在8个周(2个月)测试1000条测试用例。但是测试经理不能保证该软件就是完全没有问题的。后来他决定用正交表去重新设计一下测试用例,422条测试用例,42个bug。测试完毕后,软件上线了。在上线的两年时间内。凡事被测试到的领域,都没有发现任何问题。后来呢,他从头到尾有总结了一番:有可能只会测试出32条bug。

前后对比:

  • 测试用例的条数少了

  • 测试出来bug的数量多了

1.2 正交表的构成

˙正交表时一种特制的表, 一般记为 L n ( m k ) Ln(m^k) Ln(mk)

  • n是表的行数,也就是需要测试组合的次数
  • k是表的行数, 表示控件个数(因素的个数,或因子的个数)
  • m是每个控件包含的取值个数(各因素的水平数,即各因素的状态数)

**例如: ** L 9 ( 3 4 ) L9(3^4) L9(34) 正交表如下

在这里插入图片描述

2. 使用正交法设计测试用例

2.1 步骤

  1. 根据需求把空间即其取值列举出来
  2. 根据空间和空间的取值个数,选择一个合适的正交表
    • 根据控件的个数,选择正交表的次幂,也就是正交表中包含的最大值, 例如,4个控件,选择4次幂
    • 根据控件取值个数,选择正交表的底,也就是正交表包含的最大值, 例如, 每个控件有3个取值,底是3
  3. 把控件及其取值映射到正交表中
    • 把控件名字分别映射到正交表的列名位置
    • 把正交表中每一列的数字分别用对应的控件取值替代
  4. 根据正交表,编写测试用例

2.2 案例

实现“字符属性设置”的测试用例编写

(1). 列举因子表

字体字符样式字体颜色字号
仿宋粗体红色20号
楷体斜体绿色30号
华文彩云下划线蓝色40号

(2) 确定使用的正交表

确定采用的正交表
L 9 ( 3 4 ) L9(3^4) L9(34)

(3). 把控件及其取值映射到正交表中

在这里插入图片描述

(4). 编写测试用例

上图正交表每一行都是一条测试用例, 此处仅列出2条

用例编号输入预期结果实际结果是否是bug
UT-设置字符子项测-01字体:仿宋; 字符样式: 粗体; 颜色:红色; 字号:20仿宋、 粗体、 红色、20号
UT-设置字符子项测-02字体:仿宋; 字符样式: 粗体; 颜色:红色; 字号:30仿宋、 粗体、 红色、20号

3. 小结

3.1 使用场景

  • 需求中条件的组合量比较大的时候
  • 需求两个两个相互组合的时候

3.2 局限性

正交表的个数有限,一般要求每个控件的取值相等,但是这在实际中很难应用,所以在实际使用时要进行取舍

  • 对于控件个数,如果没有,就选择一个接近的
  • 对于控制的取值,应该少数服从多数, 有更多空间的取值一样

边界值测试法

1. 介绍

边界值分析法就是对输入或输出边界值进行测试的,也是一种黑盒测试.

边界值分析法通常作为等价类划分法的补充,其测试用例来自等价类的边界;长期的经验得知,大量的错误是发现在输入或输出范围的边界上,而不是发生再输入输出范围的内部,因此针对各种边界情况设计测试用例,可以查出更多错误.

和等价类划分法的区别:

  • 是等价类划分法的补充
  • 等价类划分法可以挑选等价范围内任意一个数据作为代表,边界值分析法要求每个边界值都要作为测试条件
  • 边界值分析法不仅考虑输入条件,同样考虑输出产生的测试情况

常见的边界值:

  • **边界点(上点)😗*输入范围的边界点
  • 离点: 离边界点最近的点
  • 内点: 输入范围内的任意一个点

对于边界值的说明:

边界值数据本质上属于等价类的范畴,测试时确实是一种冗余(重复),但是为了更好的测试质量(边界值特别容易出bug),边界值必须要单独测,适当必要的冗余是可以接受的.

举例: 0-100内的整数

上点0, 100
离点1, 99; -1,101; 1,101; 0, 99;
内点34

2. 使用边界值设计测试用用例

2.1 步骤:

  • 明确需求
  • 确定有效和无效等价类
  • 明确输入条件中的边界值
  • 编写测试用例

注意: 边界值法应用时,如果测试时间紧张,应该优先测试最大值和最小值

2.2 案例

要求:测试qq账号是否符合规范

  1. 需求: qq号是6-10位的整数
  2. 确定边界值
上点6个, 10个
离点5个, 9个, 7个,11个
内点8个
  1. 编写测试用例
用例编号等价类划分输入预期结果实际结果
UT-QQ是否符合规范-01有效等价类6个正确
UT-QQ是否符合规范-02有效等价类10个正确
UT-QQ是否符合规范-03无效等价类5个错误
UT-QQ是否符合规范-04有效等价类7个正确
UT-QQ是否符合规范-05无效等价类11个错误
UT-QQ是否符合规范-06有效等价类9个正确
UT-QQ是否符合规范-07有效等价类8个正确
UT-QQ是否符合规范-08无效等价类特殊符号,例如: #,¥ *、空格等错误
UT-QQ是否符合规范-09无效等价类数字+特殊符号错误

3. 小结

边界值分析法作为等价类划分法的补充,经常和等价类划分一起使用.

使用的场景是:有输入并且存在边界值的位置.

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

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

相关文章

LINUX应用GUI开发C++ 之gtkmm4(1)

目录概述GTKgtkmm安装gtkmm4hello,worldcodelite配置代码解释概述 GTK GTK是一个小部件工具包。GTK创建的每个用户界面都由小部件组成。这是在C语言中使用GObject实现的,GObject是一个面向对象的C语言框架。窗口小部件是主容器。然后通过向窗口中添加按钮、下拉菜…

Android Studio中创建java工程

1. 前言 电脑环境: Ubuntu 18.04 开发工具环境:Android Studio 4.1.3 版本 经常要使用验证Java API, 把配置环境步骤记录一下 2. 创建步骤 2.1 新建一个Android Studio App工程 New ---> New Project ---> 选择一个Activity主题---> Finish 就创建ok 2.2 …

如何防护DDOS攻击

DDOS攻击的趋势呈现出明显的增长趋势,特别是在网络攻击技术的发展和攻击者的技术水平提高的情况下,DDOS攻击的发生频率和规模也在不断增加。此外,随着网络技术的发展,攻击者也可以利用更多的技术手段来实施DDOS攻击,比…

kali环境搭建

一、渗透为什么要使用kali? 1、系统开源 kali linux实际上是开源的操作系统,其中内置了几百种工具而且是免费的,可以非常方便的为测试提供上手即用的整套工具,而不需要繁琐的搭建环境,及收集工具下载安装等步骤 2、系统…

通过OpenAI来做机械智能故障诊断-测试(1)

通过OpenAI来做机械智能故障诊断 1. 注册使用2. 使用案例1-介绍故障诊断流程2.1 对话内容2.2 对话小结3. 使用案例2-写一段轴承故障诊断的代码3.1 对话内容3.2 对话小结4. 对话加载Paderborn轴承故障数据集并划分4.1 加载轴承故障数据集并划分第一次测试4.2 第二次加载数据集自…

【华为OD机试模拟题】用 C++ 实现 - 挑选字符串(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…

浅谈对于封装、继承与多态的理解(Java)

目录 封装 继承 父类成员的访问 如何在子类中访问父类同名的成员 子类构造方法 代码块在继承上的执行顺序 多态 多态的实现条件 重写 多态的优缺点 面向对象程序的三大特征:封装继承和多态。 封装 封装:将数据和操作数据的方法进行有效…

前置知识-辛几何与辛代数、欧式几何与辛几何、Hamilton量

1.3 Hamilton 系统的辛几何算法 1.3.1 辛几何与辛代数的基本概念(下篇) 定义(辛空间、辛映射) 设 V V V 是定义在实数域 R \mathbb{R} R<

【万能排序之qsort、b_sort 、s_sort】

文章目录前言:star:qsort函数函数参数qsort函数的使用:star:模拟实现万冒泡排序函数参数模拟实现b_sort注意点:star:模拟实现万能选择排序函数参数模拟实现s_sort最后前言 我们所熟悉的冒泡排序&#xff0c;选择排序&#xff0c;插入排序&#xff0c;二分排序等都是基于给定的一…

计算机网络笔记、面试八股(一)——TCP/IP网络模型

Note&#xff1a;【计算机网络笔记、面试八股】系列文章共计5篇&#xff0c;现已更新3篇&#xff0c;剩余2篇&#xff08;TCP连接、Web响应&#xff09;会尽快更新&#xff0c;敬请期待&#xff01; 本章目录1. TCP/IP网络模型1.1 应用层1.1.1 应用层作用1.1.2 应用层有哪些常用…

git push origin master 情况

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3;哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d;一位上进心十足的【Java ToB端大厂领…

局域网内浏览器实现远程控制windows设备的解决方案

使用VNC技术实现的局域网内windows远程桌面项目用途服务端的技术实现1. 安装UItraVNC软件&#xff0c;只部署server端即可2. 为UItraVNC设定自定义密码Python 环境的安装Websockify 的使用使用nssm工具将run.bat注册为系统服务&#xff0c;并开机自启结束&#xff0c;这里就是服…

华为OD机试用Python实现 -【查找树中的元素 or 查找二叉树节点】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲查找树中的元素 or 查找二叉树节点题目描述输入描述输出描述说明示例一输入输出示例二输入输出Python 代码实现代码编写思路华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 O…

啊哈 算法读书笔记 第 2 章 栈、队列、链表

第 2 章 栈、队列、链表 目录 第 2 章 栈、队列、链表 队列&#xff1a; 解密回文——栈 纸牌游戏&#xff1a; 链表 模拟链表 队列&#xff1a; 首先将第 1 个数删除&#xff0c;紧接着将第 2 个数放到这串数的末尾&#xff0c;再将第 3 个数删除并将第 4 个数放到这串…

axios 中如何取消请求_从使用到原理_番茄出品

start 最近频繁遇到一个问题&#xff0c;axios 是如何取消请求的&#xff1f;这篇文章将从新手小白的视角出发&#xff0c;从 axios 取消逻辑的基础使用&#xff0c;到原理分析&#xff0c;带你彻底了解并掌握 axios 中取消请求的“秘密”。编写时间&#xff1a;2023/02/24-23…

Prometheus -- 浅谈Exporter

Prometheus系统 – Exporter原理 为什么我们需要Exporter&#xff1f; 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target&#xff0c;如下所示&#xff0c;Prometheus通过轮询的方式定期从这些target中获取样本…

你知道Java架构师学习路线该怎么走吗?你所缺少的是学习方法以及完整规划!

怎么成为一名Java架构师&#xff1f;都需要掌握哪些技术&#xff1f;Java架构师&#xff0c;首先要是一个高级Java攻城狮&#xff0c;熟练使用各种框架&#xff0c;并知道它们实现的原理。jvm虚拟机原理、调优&#xff0c;懂得jvm能让你写出性能更好的代码;池技术&#xff0c;什…

java 面向对象三大特性之多态 万字详解(超详细)

目录 前言 : 一、为什么需要多态 : 1.白璧微瑕 : 2.举栗&#xff08;请甘雨,刻晴,钟离吃饭&#xff09;: 3.代码 : 4.问题 : 二、什么是多态 : 1.定义 : 2.多态的实现步骤&#xff08;重要&#xff09; : 三、多态的使用 : 1.多态中成员方法的使用&#xff08;重要…

一块GPU搞定ChatGPT;ML系统入坑指南;理解GPU底层架构

1. 跑ChatGPT体量模型&#xff0c;从此只需一块GPU 在发展技术&#xff0c;让大模型掌握更多能力的同时&#xff0c;也有人在尝试降低AI所需的算力资源。最近&#xff0c;一种名为FlexGen的技术因为「一块RTX 3090跑ChatGPT体量模型」而获得了人们的关注。 虽然FlexGen加速后的…

Java 修饰符和多态

文章目录一、修饰符1. 权限修饰符2. 状态修饰符2.1 final2.2 static二、多态1. 成员访问特点2. 多态中的转型3. 多态案例一、修饰符 1. 权限修饰符 2. 状态修饰符 2.1 final final 关键字是最终的意思&#xff0c;可以修饰成员方法、成员变量及类。 //1.修饰成员变量 publi…