测试用例的设计

news/2024/9/18 15:03:22/ 标签: 测试用例

*涉及概念来源于《软件测试的艺术》

目录

一、为什么要设计测试用例

二、黑盒测试与白盒测试介绍

三、测试用例常见设计方法

1.黑盒测试(功能测试)

2.白盒测试(结构测试)

四、测试策略

五、测试用例怎么写


一、为什么要设计测试用例

由于时间和成本的约束,软件测试最关键的问题是:在所有可能的测试用例中,哪个子集最有可能发现最多的错误?对软件测试用例设计方法的研究为这个问题提供了答案。

穷举的黑盒和白盒测试通常都是不可能的,但同时也建议:将这两种测试的要素组合起来得到一种合理的测试策略(灰盒测试)。可以通过使用特定的面向黑盒测试的测试用例设计方法,而后使用白盒测试方法对程序的逻辑结构进行检查以补充这些测试用例,借此来设计出一个相当严格的测试。

二、黑盒测试与白盒测试介绍

三、测试用例常见设计方法

1.黑盒测试(功能测试)

1.等价类划分:有效等价类和无效等价类。选取少数有代表性的数据,这一类数据等价于这一类的其它值

2.边界值分析:大量的错误是发生在输入或输出范围的边界上。通常边界值分析法是作为对等价类划分方法的补充,这种情况下,其测试用例来自等价类的边界。

3.因果图分析:输入因得到输出果,直观的表明输入(原因)和输出(结果)之间的关系。

        因果关系(若A则B、若A非B、A或B则C、A与B则C)

        因果图可以转为判定表,判定表的每一列作为依据,设计测试用例。可以略过因果图的绘制,直接列出所有组合进行筛选(判定表法)。

4.正交实验:用在有多个输入和多个输出的情况。测试用例数目巨大,为了有效合理地测试,可利用正交实验设计方法用尽量少的用例来涵盖输入条件的组合。

5.错误猜测:用经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例,与用户的使用习惯及测试程序中的常见问题为主。

6.场景实验:现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。如ATM取钱时:

基本事件流--先插卡、输入正确密码、选择取款功能、输入正确金额、取钱、取卡。

备选事件流--(1)插卡,输入密码错入、第二次输入正确、取钱、取卡;(2)插卡、密码忘记、取卡;(3)插卡、输入正确密码、选择查看余额功能...中间出现断电或ATM故障等。。。

2.白盒测试(结构测试)

1.语句覆盖:程序中的每条语句至少被执行一次。

2.判定覆盖/分支覆盖:使得每一个判断都至少有一个为真和为假的输出结果。

3.条件覆盖:将一个判断中的每个条件的所有可能的结果至少执行一次。

4.判定/条件覆盖:将一个判断中的每个条件的所有可能的结果至少执行一次,将每个判断的所有可能的结果至少执行一次,将每个入口点都至少调用一次。

5.多重条件覆盖:将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。

四、测试策略

1.输入中包含条件组合,应首先使用因果分析方法

2.在任何情况下都应该使用边界值分析方法

3.应该为输入和输出确定有效和无效等价类

4.使用错误猜测技术增加更多的测试用例

5.针对上述的测试用例,检查能否覆盖白盒测试中的几种测试设计类型

五、测试用例怎么写

测试用例应该包括:

①用例编号 ②测试项目 ③用例标题 ④重要级别 ⑤前置条件 ⑥测试输入 ⑦操作步骤 ⑧预期结果


http://www.ppmy.cn/news/1515929.html

相关文章

一本读懂数据库发展史的书

数据库及其存储技术,一直以来都是基础软件的主力。数据库系统的操作接口标准,也是应用型软件的重要接口,关系重大。 作为最“有感”的系统软件,数据库的历史悠久、品类繁多、创新活跃。 对数据库历史发展的介绍,有利…

前端知识点

1.常见文本标签 2.属性 3.区块 4.表单 如果那个性别只能是单选的话要加上name属性 css 相邻选择器就是跟在被选中的里面的所有 js基本语法 js函数:就跟C语言差不多啊 改文本 引入js

【C#】【EXCEL】Bumblebee/Classes/ExColumn.cs

文章目录 Bumblebee/Classes/ExColumn.csFlow diagramDescriptionCode Bumblebee/Classes/ExColumn.cs Flow diagram #mermaid-svg-6WUm4r0wDJG9uelI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6WUm4r0wDJG9ue…

[Algorithm][综合训练][对称之美][经此一役小红所向无敌][连续子数组最大和]详细讲解

目录 1.对称之美1.题目链接2.算法原理详解 && 代码实现 2.经此一役小红所向无敌1.题目链接2.算法原理详解 && 代码实现 3.连续子数组最大和1.题目链接2.算法原理详解 && 代码实现 1.对称之美 1.题目链接 对称之美 2.算法原理详解 && 代码实现…

C# 循环访问目录树详解与示例

文章目录 一、目录树遍历的概念二、使用System.IO命名空间三、DirectoryInfo和FileInfo类四、递归遍历目录树五、示例:列出目录树中的所有文件和文件夹六、异常处理七、迭代方法八、总结 在C#中,访问文件系统是常见的需求之一。有时我们需要遍历目录树以…

使用SQLite进行Python简单数据存储的线程安全解决方案

在 Python 中使用 SQLite 进行简单数据存储时,线程安全是一个需要注意的问题。SQLite 本身是线程安全的,但在多线程环境下,可能仍然需要做一些额外的工作来确保数据访问的安全性。 1、问题背景 一位开发者正在编写一个简单的聊天服务器和客户…

leetcode 数组+哈希+双指针+子串+滑动窗口

——————双指针 283. 移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] …

sheng的学习笔记-AI-半监督学习

AI目录:sheng的学习笔记-AI目录-CSDN博客 基础知识 什么是半监督学习 我们在丰收季节来到瓜田,满地都是西瓜,瓜农抱来三四个瓜说这都是好瓜,然后再指着地里的五六个瓜说这些还不好,还需再生长若干天。基于这些信息&a…

数学基础 -- 微积分之线性化

微积分中的线性化 在线性代数和微积分中,线性化是指使用一个线性函数来近似描述非线性函数在某一点附近的行为。在微积分中,线性化通常是通过泰勒展开将一个非线性函数线性化的过程。 线性化公式 给定一个函数 f ( x ) f(x) f(x),我们可以…

微信小程序开发经验记录

1、把微信开发者工具安装好后,创建小程序。 AppID可以注册下,后续小程序上线会用到,前期可以使用测试号先开发程序,后续修改AppID即可。 模板选择基础模板就行。 2、开发页面如下。 左上角可以控制几个窗口的打开和关闭。模拟器窗…

arm64--内嵌汇编

内嵌汇编代码基本用法 1.作用:对于特定重要和时间敏感的代码进行优化,同时在C语言中访问某些特殊指令(例如内存屏障指令)来实现特殊功能 2.内嵌汇编代码主要有两种形式 基础内嵌汇编代码:不带任何参数 扩展内嵌汇…

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task05 源大模型微调实战代码精读 RAG测试 AI简历助手代码优化 网课剩余部分

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task05 源大模型微调实战代码精读 RAG测试 AI简历助手代码优化 网课剩余部分 教程基础背景知识: 微调能解决的问题正好是我需要的——模型在某个特定方面上能力不够。我感觉这种情况适用于让模型去完成…

数据仓库系列 5:什么是事实表和维度表,它们有什么作用?

目录 1. 引言:事实表与维度表的魔力2. 事实表:业务活动的数字足迹2.1 什么是事实表?2.2 事实表的特征2.3 事实表的类型2.4 事实表示例2.5 事实表的作用2.6 事实表的设计原则2.7 事实表的查询示例 3. 维度表:为数据赋予意义3.1 什么是维度表?…

vscode附着调试

我有一个程序,是别的程序调用启动的,所以需要等它的进程启动后,再附着上去调试。 编写Launch.json: {"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type"…

day 39 代码随想录 | 打家劫舍 动态规划

198.打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个…

暑期算法训练

目录 A.糖果(Candy) B.小红的数组重排 C.牛牛与LCM D.子串 E.勤奋的杨老师 F.清楚姐姐跳格子 G.方块 I H.PUBG A.糖果(Candy) 思路 :贪心,为了使操作数最少,我们要尽可能的先吃第二个盒子里的糖果&#x…

C#与其它编程语言有什么区别,以及相关优势有哪些

C#编程语言的主要特性包括**面向对象、统一的类型系统、自动内存管理等**。与其它编程语言相比,C#的优势体现在**跨平台开发支持、强大的语言集成查询(LINQ)功能、高效的性能**这几个方面。 C#的主要特性: 1. 面向对象&#xff…

python:reportlab 生成PDF文件,生成基因图谱

reportLab是 python的一个第三方库,它能够用来生成PDF文件。这个库提供了一系列的工具,允许用户从简单的文档到复杂的多列布局进行PDF的创建和编辑。 使用 reportLab,你可以执行以下功能: 创建文本块、图片、图表等元素。 利用绘…

Django后台管理Xadmin使用DjangoUeditor富文本编辑器

Django后台管理Xadmin使用DjangoUeditor富文本编辑器 一、下载 点击github下载 https://github.com/twz915/DjangoUeditor3 1、下载完后解压到跟xadmin同一层级目录: 2、解压后名称可能为DjangoUeditor3-master,需要改为DjangoUeditor 3、进入DjangoUeditor目录,把Djan…

米联客FDMA3.2源码分析以及控制BRAM、DDR3读写验证

文章目录 一、FDMA简介二、读写操作时序2.1 写时序2.2 读时序 三、FDMA源码分析四、源码仿真验证4.1 FDMA控制代码4.2 系统框图4.3 仿真结果4.3.1 写通道4.3.2 读通道 五、使用FDMA控制BRAM读写测试5.1 系统框图5.2 读写数据控制模块5.3 仿真结果5.4 下板验证 六、使用FDMA控制…