软件测试(二)——软件测试的方法

2023-11-09

在这里插入图片描述

基于直觉和经验的方法

基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。

1. Ad-hoc测试方法和ALAC测试

ALAC,是Act-like-a-customer(象客户那样做)的简写,ALAC测试方法是一种基于客户使用产品的知识开发出来的测试方法,它的出发点是著名的Pareto 80/20规律 。
在这里插入图片描述

2.错误猜测法

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

发现程序经常出现的错误的方法:

单元测试中发现的模块错误;

产品的以前版本曾经发现的错误;

输入数据为0或字符为空;

当软件要求输入时(比如在文本框中),不是没有输入正确的信息,而是根本没有输入任何内容,单单按了Enter键;

……

基于输入域的测试方法

1.等价类划分法

等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的.将输入数据分成若干个子集,从每个子集选取一个代表性的数据作为测试用例, 分为有效等价类和无效等价类。 在分析需求规格说明的基础上划分等价类,列出等价类表 。

确定等价类的方法:

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

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

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

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

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

2.边界值分析方法

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

如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
在这里插入图片描述
  如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数据。

如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。

est cases for ABS(x) :
class x < 0, arbitrary value: x = -10
class x = 0, arbitrary value x = 100
classes x < 0, x >= 0, on boundary : x = 0
classes x < 0, x >= 0, below and above: x = -1, x = 1

基于组合技术和组合优化的方法

1.判定表方法

在实际应用中,许多输入是由多个因素构成,而不是单一因素,这时就需要多因素组合分析。

对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。

判定表由“条件和活动”两部分组成,即列出一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。

判定表元素:

条件桩,列出问题的所有条件

动作桩:列出可能针对问题所采取的操作

条件项:针对所列条件的具体赋值

动作项:列出在条件项(各种取值)组合情况下应该采取的动作。

规则:任何一个条件组合的特定取值及其相应要执行的操作。

判定表方法步骤:

列出条件桩

列出动作桩

填入条件项及其组合

填入动作项,制定初始判定表;

简化、合并相似规则或者相同动作

2.因果图法

多种输入条件的组合,产生多种结果设计测试用例。

设计方法:

分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标示符。

找出原因与结果,原因与原因之间的对应关系,画出因果图

在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件

根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示

出来 把判定表的每一行作为依据设计测试用例。

3.两两组合方法

大部分缺陷是在两个变量取值冲突的测试时被发现的

不仅仅是在所有的组合情况下才会发现所有的测试缺陷

这个是“Pairwise Testing”基本原理,不要测试所有的组合,测试所有的“Pairwise ”即可在这里插入图片描述

4.正交实验法

确定影响功能的因子与状态

选择一个合适的正交表

利用正交表构造测试数据集

基于逻辑覆盖的方法

1.判定覆盖

判定覆盖法的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。

一个判定代表着程序的一个分支, 所以判定覆盖也被称为分支覆盖。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.条件覆盖

条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。

3.判定条件覆盖

判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次

4.条件组合测试

条件组合覆盖的基本思想是设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。

它与条件覆盖的差别是它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次 。

5.基本路径覆盖

路径覆盖就是设计所有的测试用例,来覆盖程序中的所有可能的执行路径。

基本路径覆盖的设计过程 :

①依据代码绘制流程图

②确定流程图的圈复杂度(cyclomatic complexity )

③确定线性独立路径的基本集合( basis set )

④设计测试用例覆盖每条基本路径
在这里插入图片描述

基于缺陷模式的测试

故障模型

安全漏洞模型

性能模型

并发故障模型

不良习惯模型

代码国际化模型

易诱骗代码模型

检测步骤:

预处理/预编译

词法分析(Lexical Analysis)

语法分析( Parsing) 和语义处理( Semantic Analysis)

抽象语法树生成

控制流图生成

人工确认

基于模型的测试方法

1.功能图法

每个程序的功能通常由静态说明和动态说明组成

静态说明描述了输入条件和输出条件之间的对应关系

动态说明描述了输入数据的次序或者转移的次序

功能图法就是为了解决动态说明问题的一种测试用例的设计方法

功能图由状态迁移图(state transition diagram,STD)和逻辑功能模型(logic function model, LFM)构成

2.模糊测试方法

模糊测试(Fuzz testing)方法,简单的说,就是构造大量的变异数据作为系统的输入,从而检验系统在各种数据情况下是否会出现问题 模糊测试方法可模拟黑客对系统发动攻击测试,完成安全性测试,并能应用于服务器的容错性测试 。

形式化方法

1.形式化方法

形式化方法:基于数学的方法(数学表示、精确的数学语义)来描述目标软件系统属性的一种技术

形式化规范说明语言的构成:语法、语义和一组关系

形式化方法可应用在软件规格和验证之上,包括软件系统的精确建模和软件规格特性的具体描述,即可以看作是面向模型的形式化方法和面向属性的形式化方法

形式化的具体方法:

基于模型的方法,如Z语言、B语言等

代数方法,如OBJ、CLEAR、ASL、ACT等

过程代数方法,如CSP、CCS、ACP、LOTOS、TPCCS等

基于逻辑的方法,如区间时序逻辑、Hoare 逻辑、模态逻辑、时序逻辑、时序代理模型等。

基于网络的方法

2.形式化验证

形式化验证,就是根据某些形式规范或属性,使用形式逻辑方法证明其正确性或非正确性。

一般通过形式化规范进行分析和推理,研究它的各种静态和动态性质,验证是否一致、完整,从而找出所存在的错误和缺陷。

无法证明某个系统没有缺陷,因为不能定义 “没有缺陷”。只能证明一个系统不存在我们可以想得到的缺陷,以及验证满足系统质量要求的属性 。

形式化验证的一些具体方法:

有限状态机(FSM)或扩展有限状态机(EFSM)

SPIN和线性时态语言

UML语义转换

标准RBAC模型

扩展的RBAC模型和基于粒计算的RBAC模型

符号模型检验

BAN逻辑模型

3.扩展有限状态机方法

有限状态机( Finite State Machine ,FSM)是对象行为建模的工具,以描述对象在其生命周期内所经历的状态序列,以及如何响应来自外界的各种事件
在这里插入图片描述

注:详情可见网易号八宝欢喜http://dy.163.com/v2/article/detail/F8C6TEHO05454V3K.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件测试(二)——软件测试的方法 的相关文章

  • 软件测试/测试开发/全日制/测试管理丨Python关键字

    Python 语言有一些关键字 它们具有特殊的含义 不能被用作标识符 变量名 函数名等 False 布尔类型的假值 None 表示一个空对象或无值 True 布尔类型的真值 and 逻辑与操作符 as 用于给导入的模块起别名 assert
  • 软件测试/测试开发/全日制/测试管理丨Redis内存数据库

    Redis是一种开源 内存中的数据结构存储系统 它提供了高性能 灵活性和丰富的数据结构 以下是Redis内存数据库的基本介绍 键值存储 Redis基于键值对的存储模型 其中每个键都与一个特定的值相关联 这种简单的数据模型使其易于使用和理解
  • Selenium小技巧!

    Chrome DevTools 简介 Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器 如 Chrome Opera 和 Microsoft Edge 中的工具 用于帮助开发人员调试和研究网站 借助 Chro
  • Linux终端常见用法总结

    熟悉Linux终端的基础用法和常见技巧可以极大提高运维及开发人员的工作效率 笔者结合自身学习实践 总结以下终端用法供同行交流学习 常 见 用 法 1 快捷键 1 1 Alt 在光标位置插入上一次执行命令的最后一个参数 1 2 Ctrl R
  • Jmeter 性能-并发量计算

    并发概念 指网站在同一时间访问的人数 人数越大瞬间带宽要求更高 服务器并发量分为 业务并发用户数 最大并发访问数 系统用户数 同时在线用户数 估算业务并发量的公式 C nL T C C 3 C的平方根 说明 C是平均的业务并发用户数 n是l
  • 软件测试|深入了解Python中的super()函数用法

    简介 Python中的super 函数是一种强大的工具 用于在子类中调用父类的方法 它在面向对象编程中非常有用 可以让你轻松地扩展和重用现有的类 本文将详细介绍super 函数的用法 并提供一些示例来帮助你更好地理解它的功能 什么是supe
  • 软件测试|使用matplotlib绘制多种折线图

    简介 在数据可视化领域 Matplotlib是一款非常强大的Python库 它可以用于绘制各种类型的图表 包括折线图 本文将介绍如何使用Matplotlib创建多种不同类型的折线图 并提供示例代码 创建模版 在绘图之前 我们可以先创建我们的
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 新手也能看懂的【前端自动化测试入门】

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 软件测试中的白盒测试,这些技巧你知道吗?

    对于很多刚开始学习软件测试的小伙伴来说 如果能尽早将黑盒 白盒测试弄明白 掌握两种测试的结论和基本原理 将对自己后期的学习有较好的帮助 今天 我们就来聊聊黑盒 白盒测试的相关话题 1 黑盒测试的方法和小结 最常见黑盒测试方法包括 边界值 等
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 视频合并在线工具有什么好用的?这几款你知道吗?

    你有没有自己剪辑过视频 现在这个时代 大家或多或少都会一点剪辑的操作 不过有时候我们会需要将多个视频片段合并成一个完整的视频 那么 如何快速 有效地完成这一任务呢 这就需要借助一些视频编辑工具 今天就跟大家分享视频合并app和电脑软件 让大
  • 图片编辑软件有哪些好用的?这几款快收藏吧

    你有没有过这样的经历 精心拍摄了一组照片 却发现有些角度不对 光线不够好 或者想要给图片加上一些特别的滤镜效果来达到心目中的样子 这时 你就需要一款合适的图片编辑软件了 但是 市面上的图片编辑软件琳琅满目 哪一款才是适合自己的呢 别担心 今
  • 语音翻译软件app哪家好?帮你和外国人无碍交流的软件分享

    在和外国人交流的时候发现听不懂怎么办 还能怎么办 谁让我们的英语没学好呢 这种时候还是得寻求其他人的帮助 不过万一要是在只有你一个人的情况下又怎么办呢 俗话说 求人不如求己 那还是得在自己手机里时刻准备好能够翻译英语的工具呀 今天就给大家分
  • 你知道修图软件手机端的哪些比较好用吗?分享我的爱用工具

    你是否经常在朋友圈看到朋友晒出的照片 美得如同画中景 让人惊叹不已 你是否也曾羡慕过那些轻松将普通照片变成艺术大片的摄影高手 其实 他们背后的 魔法 大多都来自于使用p图软件给图片进行美化 今天 就让我们一起来探讨一下 p图软件哪个好用免费
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 深入解析 YAML 配置文件:从语法到最佳实践

    一 认识YAML YAML YAML Ain t Markup Language 是一种人类可读的数据序列化语言 它的设计目标是使数据在不同编程语言之间交换和共享变得简单 YAML采用了一种简洁 直观的语法 以易于阅读和编写的方式表示数据结

随机推荐

  • 微信小程序使用wxParse解析html

    转 http www jianshu com p 3de027555e77 最近项目上遇到在微信小程序里需要显示新闻内容 新闻内容是通过接口读取的服务器中的富文本内容 是html格式的 小程序默认是不支持html格式的内容显示的 那我们需要
  • 内存管理<原理篇>(四、分段和分页)

    文章目录 4 1 分段 4 1 1 程序段介绍 4 1 2 各段放入内存信息 4 1 3 段表 4 1 4 总结 4 2 分页 4 2 1 概念介绍 4 2 2 各段加载进内存 4 2 3 例子分析 4 2 4 总结 4 1 分段 在上一篇
  • python 使用 passlib 库在 windows 平台实现 crypt

    今天同步代码的时候 发现别的同事往项目里新加了一行 import crypt 编译器提示有错 我就去检查了项目的requirements文件 但没找到新的依赖 然后我google了一下 原来这个文件是Unix 系统用来给密码加密的文件 并不
  • Coding pages 不见了

    Coding pages 不见了 起因 因为自己的这个博客 有时候访问还是比较慢的 原因是我的代码是在GitHub上托管的 GitHub是国外的网站 服务器都在国外 所以访问速度就特别慢 我就想找国内的既能实现代码托管 又能生成静态网页的平
  • Java实现方法中基本类型参数按地址传递

    参考了网上的一些资料 自己总结了一下 详细的可以去以下的博主看看 https www cnblogs com lixiaolun p 4311863 html http blog csdn net maoyeqiu article deta
  • 白话机器学习-Transformer

    一 背景 大抵是去年底吧 收到了几个公众号读者的信息 希望能写几篇介绍下Attention以及Transformer相关的算法的文章 当时的我也是满口答应了 但是确实最后耽误到了现在也没有写 前一阵打算写这方面的文章 不过发现一个问题 就是
  • 一组整数的全排列【C程序】

    include iostream using namespace std int myfactorial int n int i factorial i 1 factorial 1 while i lt n factorial factor
  • Yii Framework 开发教程(10) UI 组件 自定义组件

    在介绍Yii内置UI组件之前 先介绍一下如何自定义组件 这样也有助于理解CWidget的用法 自定义组件就是重载 CWidget的init 和 run 方法 php view plain copy print class MyWidget
  • CSS —— html 自动换行

    涉及三个属性 white space 规定如何处理空白 是否换行 默认值 normal 超出时自动换行 word wrap normal 默认 只在内容的断点换行 即不能断开单词 或 break word 长单词内也可换行 word bre
  • Django笔记--python实现将分页功能封装成类

    Django笔记 python实现将分页功能封装成类 对于数据的表格形式呈现 庞大的数据量不可能全部放在一页中 除非数据很少 所以基本上都需要用到分页功能 因此有必要将分页功能封装成一个类 方便使用 pagination py 将分页功能分
  • 探探提醒对方账号异常_我告诉你探探账号异常不能回复消息怎么办

    解决方法 有多种原因 如果是账号被封 无法回复短信 如果是网络异常导致 建议切换网络再回复 如果是软件出现bug 可以进行反馈 在探探3 7 5版本中 打开软件 点击页面右下角的 我 点击设置 选择 帮助与反馈 之后输入遇到的问题 点击提交
  • 代码随想录算法训练营第四十九天

    好像看懂了二维数组 滚动数组还有点懵
  • 教你用简单上手的序列帧动画制作一个Unity的Loading加载界面

    文章目录 一 Loading界面序列帧动画原理 二 准备工作及搭建demo场景 三 核心代码及演示效果 1 核心脚本代码 2 帧动画加载界面效果 一 Loading界面序列帧动画原理 我们都知道电影或者说视频都是由一序列静止画面组成的 动画
  • ElementUI的el-select怎样实现下拉多选并实现给下拉框赋值和获取值

    场景 要实现的效果如下 官方示例代码实现多选 为el select设置multiple属性即可启用多选 此时v model的值为当前选中值所组成的数组 默认情况下选中值会以 Tag 的形式展现 你也可以设置collapse tags属性将它
  • springboot学习(八十三) springboot中自定义某个对象的JSON序列化反序列化方式

    文章目录 前言 一 自定义注解 二 自定义序列化处理 三 自定义反序列化处理 四 使用 前言 springboot可自定义JSON序列化和反序列化方式 一 自定义注解 Retention RetentionPolicy RUNTIME Ja
  • 新浪股票行情数据接口有什么作用?

    通过新浪股票行情数据接口可以让投资者在实际交易当中能够更加精准的洞悉盘口变化 该接口可以说是目前最好用的免费股票行情数据接口了 虽然一直并未公开 但暂时使用良好 大家用浏览器访问新浪的股票行情数据接口就能查看最新行情数据了 那么今天小编简单
  • C++中的内置类型以及类型转换

    在开始介绍类型转换之前 我们先了解一下C 中的数据类型 不太清楚的朋友可以先看下第一部分的介绍 1 C 中的内置类型 C 中的内置内型主要分为基本类型和复合类型 1 1基本类型 基本类型主要指整数和浮点数 而整数又可以分为short int
  • JAVA垃圾回收机制

    大家好 我是皮卡 这次分享的是JAVA垃圾回收机制 如果有需要或是感兴趣的话 就一起看下去吧 目录 一 手动垃圾回收机制 二 自动垃圾回收机制 1 概念 2 判断哪些对象有用 3 finalize方法 final finally final
  • docker 命令学习

    帮助命令 dockers version 显示docker的版本信息 docker info 显示docker的系统信息 包括镜像和容器数量 docker 命令 help 帮助命令 通过这个查看命令参数等 在官方文档查看命令 https d
  • 软件测试(二)——软件测试的方法

    基于直觉和经验的方法 基于经验和直觉推测程序中所有可能存在的各种错误 从而有针对性地设计测试用例 1 Ad hoc测试方法和ALAC测试 ALAC 是Act like a customer 象客户那样做 的简写 ALAC测试方法是一种基于客