测试用例的设计

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

目录

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

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

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

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.rhkb.cn/news/404494.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美国云服务器租赁多少钱一个月?

美国云服务器租赁大致价格区间为70元/月至数千元/月。不同的云服务器提供商,其定价策略和服务质量各不相同,导致价格存在差异。配置越高,价格自然越高。带宽越高、流量越大,费用通常也越高。另外,数据中心位置和服务水…

JVM 内存区域

一、JVM 简介 【概述】 JVM是Java虚拟机(Java Virtual Machine)的简称,是一种用于计算设备的规范,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。我们学习使用的基本都是HotSpot虚拟…

学习node.js 二 path模块,os模块,process

目录 path模块 1. path.basename() 2. path.dirname 3. path.extname 4. path.join 5. path.resolve 6. path.parse path.format OS模块 1. 获取操作系统的一些信息 (1)os.platform() (2)os.release (3)os.ho…

2024年玩转音乐,不只是剪辑!这4款软件让创意跳跃在每个音符间

现在这年头,音乐不光是听个乐呵,还能暖暖心。要是想自己捣鼓捣鼓这音乐,或者给日常生活加个调调,有个好的音乐剪辑软件就特别重要。今天,我就来晒晒我收藏的那些音乐剪辑软件,这些软件不光是剪剪切切的工具…

分布式缓存———数据一致性问题

分布式基础理论 CAP理论 与 BASE理论-CSDN博客 分布式系统会的三座大山:NPC。 N:Network Delay,网络延迟P:Process Pause,进程暂停(GC)C:Clock Drift,时钟漂移 在当前…

机器学习第十一章——计算学习理论

一、基础知识 计算学习理论(computational learning theory)研究的是关于通过“计算”来进行“学习”的理论,即关于机器学习的理论基础,其目的是分析学习任务的困难本质,为学习算法提供理论保证,并根据分析结果指导算法设计。 给…

Verilog刷题笔记53

题目: Fsm serialdata See also: Serial receiver Now that you have a finite state machine that can identify when bytes are correctly received in a serial bitstream, add a datapath that will output the correctly-received data byte. out_byte needs …

如果忘记了 Apple ID 密码,如何重设

“我忘记了我的 Apple ID 密码,如何恢复我的帐户?”为了方便用户,Apple 允许每个人使用唯一的 Apple ID 和密码激活设备并访问所有 Apple 服务。然而,实际上,手动选择某项并忘记它似乎很容易。例如,许多 Ap…

基于web框架的协同过滤的美食推荐系统【数据爬虫、管理系统、数据可更新、样式可调整】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍研究背景研究的目的与意义协同过滤算法基于用户的协同过滤算法定义基于物品的协同过滤算法的定义 数据库设计db_food(美食信息表)db_collect(美食…

eclipse打开失败 java was started but returned exit code=13

报错详细信息如下 原因:eclipse版本和jdk版本不一致。系统之前jdk是1.6,然后安装1.8之后默认修改了环境变量。导致eclipse启动失败 解决方案:修改eclipse目录下的eclipse.ini文件增加一下内容。文档说明:eclipse.ini - Eclipsepe…

还在用Hexo吗?来试试Gatsby搭建一个网站吧!

本文首发于个人博客网站:http://www.blog.lekshome.top/2024/08/20/shi-yong-gatsby-da-jian-ge-ren-wang-zhan/由于CSDN并不是本人主要的内容输出平台,所以大多数博客直接由md文档导入且缺少审查和维护,如果存在图片或其他格式错误可以前往上…

Halcon灰度图像的形态学运算

Halcon灰度图像的形态学运算 本文介绍的算子的输入类型是灰度的Image图像。 1. 灰度图像与区域的区别 基于区域的形态学运算与基于灰度图像的形态学运算的根本区别在于,二者输入的对象不同。前者输入的是一些区域,并且这些区域是经过闽值处理的二值图…

一文搞懂大模型在多GPU环境的分布式训练!

随着大模型时代的到来,模型参数量、训练数据量、计算量等各方面急剧增长。大模型训练面临新的挑战: 显存挑战:例如,175B的GPT-3模型需要175B*4bytes即700GB模型参数空间,而常见的GPU显存如A100是80G显存,这…

visual studio使用技巧:快速生成Json、XML对应类

visual studio快速生成Json、XML对应类 在项目中经常用到json或者xml作为配置文件,进行序列化和反序列化就需要有对应的类,重新写一遍类就比较麻烦,这里就讲一下通过visual studio快速生成json或者xml对应类型的方法。 自动生成Json类 复制…

图像数据处理17

四、形态学图像处理 4.3 开运算与闭运算 4.3.1开运算与闭运算的定义: 开运算:先腐蚀,再膨胀 闭运算:先膨胀,再腐蚀 记忆方法:膨胀(胀开)所以开运算最后对应的结果是膨胀&#x…

c++进阶——继承的定义,复杂的菱形继承及菱形虚拟继承

目录 前言: 1.继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6. 继承与静态成员 7.复杂的菱形继承及菱…

springsecurity 登录认证一(ajax)

一、准备工作 1.1 导入依赖 因springboot 3.0 以上版本只能支持java17 顾使用2.5.0 版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.0</version><…

网络工程3(子网通信,为什么要使用mac和ip)

文章目录 一. 子网如何通讯1. 子网内部通信2. 子网外部通信 二. 交换机和路由器的连接三. 为什么不只使用mac地址或ip地址进行网络通信1. 首先要明确的是&#xff0c;不管是只用mac或只用ip通信 四. 子网设备如何获得ip五. 不同网段的主机无法直接通信的原因 一. 子网如何通讯 …

音频矩阵主要功能及常规路数配置有哪些

音频矩阵&#xff0c;又称AUDIO矩阵或音频矩阵切换器&#xff0c;是一种用于管理和控制多个音频信号的设备。它具备多种功能&#xff0c;主要可以概括为以下几个方面&#xff1a; 一、主要功能 信号切换&#xff1a; AUDIO128128音频矩阵能够将多个音频源的信号输入到设备中&…

Python实现水果忍者(开源)

一、整体介绍&#xff1a; 1.1 前言&#xff1a; 游戏代码基于Python制作经典游戏案例-水果忍者做出一些改动&#xff0c;优化并增加了一些功能。作为自己Python阶段学习的结束作品&#xff0c;文章最后有源码链接。 1.2 Python主要知识&#xff1a; &#xff08;1&#xf…