终于有人把软件测试用例讲清楚了(一定要收藏)

2023-11-19

目录

1:公司流程

1.1. 测试用例的4个特性

1.1. 测试用例通常包括以下几个组成元素:

1. 编写测试用例的基本方法

1.1.1. 概念

1.1.1. 示例

1.1练习案例:

1.1. 边界值法

1.1.1. 确定边界值的方法()

1.1. 因果图法

1.1.1. 概念:

1.1.2. 因果图基本图形符号

1.1.1. 因果图的约束符号

1.1.1. 因果图测试用例

1.1. 场景法

1.1.1. 测试用例设计的思想

1.1.1. 银行案例ATM:

1.1. 错误推测法

总结:


1:公司流程

开发:编写概要和详细设计--- 编码并自测(开发环境)
立项(确定项目)--编写需求(需求人员)--需求评审(编写需求人员发起)-- ---------------部署环境(linux)---冒烟测试(通过)--提交bug---回归测试(测试报告)--验收测试--上线
测试: 测试用例--测试用例评审(测试人员发起)

1.1. 测试用例的4个特性

代表性:能够代表并覆盖各种合理的和不合理、合法的和不合法的、边界的和越界的以及极限的输入数据、操作等。

针对性:对程序中的可能存在的错误有针对性地测试

可判定性:测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果

可重现性:对同样的测试用例,系统的执行结果应当是相同的。

1.1. 测试用例通常包括以下几个组成元素:

用例编号、测试模块、用例标题、用例级别、测试环境、测试输入、执行操作、预期结果,实际结果….

1.2测试用例示例

 

1. 编写测试用例的基本方法

1.1.1. 概念

有效,无效

等价类划分是指分步骤地把海量(无限)的测试用例集减得很小,但过程同样有效。

等价类 :何为等价类,某个输入域的集合,在这个集合中每个输入条件都是等效的。

一般可分为有效等价类和无效等价类

比如:一个青少年考试的分数(备注13-17岁为青少年)

假设青少年年龄为x,13<=x<=17,数学成绩为y:0<=y<=100  

那么年龄按照等价类划分可分为x<13,13<=x<=17,x>17,有效等价类是13<=x<=17,无效等价类是x<13,x>17

数学成绩按照等价类划分可分为y<0,0<=y<=100,y>100,有效等价类是0<=y<=100,无效等价类是y<0,y>100

1.1.1. 示例

  计算两个1~100之间整数的和。

    如果要进行完全测试,一共要设计多少个测试用例呢?

    加数1有1~100共计100个取值,加数2也有1~100共计100个取值,所以他们之间的组合就有100*100=10000种组合可能,但这只是测试了正常范围内的取值。如果用户输入的数据不在1~100之间呢,穷举测试肯定不可能的。由此引入了等价类划分思想。

等价类划分为:

有效等价类:指符合《需求规格说明书》,输入合理的数据集合

无效等价类:指不符合《需求规格说明书》,输入不合理的数据集合

我们将输入域分成了一个有效等价类(1~100)和两个无效等价类(<1,>100),并为每一个等价类进行编号,然后我们就可以从每一个等价类中选取一个代表性的数据来测试,设计如下表所示的测试用

 

1.1练习案例:

划分等价类并编号,下表为等价类划分的结果

1.1. 边界值法

 一般边界值分析是因为程序开发循环体时的取数可能会因为<,<=搞错。

  比如下面代码

  for(int i = 0;i <100; i ++)

{

  int j = i+1;

  System.out.println("循环第“+j+"次")//循环地做某件事情

}

  这里的程序是循环了100次,所以会做100次;

  如果程序员不小心,把i <100写成i <= 100,则多循环添加一次,这时候边界值检查是一个很好的测试方法。

比如:在一个系统中,填写一个多少岁的青少年考了多少分(假设成年人年龄为x,13<=x<=17,数学成绩为y:0<=y<=100

根据上面的等价类划分法我们可知,年龄的有效等价类是13<=x<=17,所以边界值就是12, 18

数学成绩的,有效等价类是0<=y<=100,所以边界值就是-1,0,100,101

对数据进行软件测试,就是在检查用户输入的信息、返回的结果以及中间计算结果是否正确。即使最简单的程序要处理的数据量也可能极大,使这些数据得以测试的技巧是,根据一些关键的原则进行等价类的划分,以合理减少测试用例,这些关键的原则是:边界条件,次边界条件、空值和无效数据。

1.1.1. 确定边界值的方法()

选取正好等于、刚刚大于或刚刚小于边界值作为测试数据

输入要求是1 ~ 100之间的整数,因此自然产生了1和100两个边界,我们在设计测试用例的时,要重点考虑这两个边界问题。

[1 100]  上点1 ,100   离点   0  101所属

  (1,100)  上点 2,99    离点  1  ,100

  (1,100]   上点 2,100    离点 1 ,101

1.1. 因果图法

1.1.1. 概念:

因果图法比较适合输条件比较多的情况,测试所有的输入条件的排列组合。所谓的原因就是输入,所谓的结果就是输出。

1.1.2. 因果图基本图形符号

恒等:若原因出现,则结果出现;若原因不出现,则结果不出现。

非(~):若原因出现,则结果不出现;若原因不出现,则结果出现。

或(∨):若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现。

与(∧):若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现。

1.1.1. 因果图的约束符号

E(互斥):表示两个原因不会同时成立,两个中最多有一个可能成立

I(包含):表示三个原因中至少有一个必须成立

O(惟一):表示两个原因中必须有一个,且仅有一个成立

R(要求):表示两个原因,a出现时,b也必须出现,a出现时,b不可能不出现

M(屏蔽):两个结果,a为1时,b必须是0,当a为0时,b值不定

1.1.1. 因果图测试用例

例如:有一个处理单价为2.5元的盒装饮料的自动售货机软件。若投入2.5元硬币,按“可乐”、“啤酒”、或“奶茶”按钮,相应的饮料就送出来。若投入的是3元硬币,在送出饮料的同时退还5角硬币。

分析这一段说明,我们可列出原因和结果

原因(输入):

投入2.5元硬币;

投入3元;

按“可乐”按钮;

按“啤酒”按钮;

按“奶茶”按钮。

中间状态:  ① 已投币;②已按钮

结果(输出):

退还5角硬币;

送出“可乐”饮料;

送出“啤酒”饮料;

送出“奶茶”饮料;

 

1.1. 场景法

1.1.1. 测试用例设计的思想

 现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。

 用例场景是通过描述流经用例的路径来确定的过程,

 这个流经过程要从用例开始到结束遍历其中所有基本流和备选流。

 遵循上图中每个经过用例的可能路径,可以确定不同的用例场景。从基本流开始,再将基本流和备选流结合起来,可以确定以下用例场景:

基本流和备选流的区别

1.1.1. 银行案例ATM:

个人标识号 (PIN=personal identification number ),用于保护智能卡免受误用的秘密标识代码。PIN 与密码类似,只有卡的所有者才知道该 PIN。只有拥有该智能卡并知道 PIN 的人才能使用该智能卡

 

 第一次测试中,根据测试计划,我们需要核实提款用例已经正确地实施。此时尚未实施整个用例,只实施了下面的事件流:

  基本流-提取预设金额(100 元、200元、500元、1000元)

  备选流2 - ATM 内没有现金

  备选流3 - ATM 内现金不足

  备选流4 - PIN 有误

  备选流5 - 帐户不存在/帐户类型有误

  备选流6 - 帐面金额不足

对于这7个场景中的每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。

  从确定执行用例场景所需的数据元素入手构建矩阵。然后,对于每个场景,至少要确定包含执行场景所需的适当条件的测试用例。

下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。

本示例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。

 

1.1. 错误推测法

错误猜测法是测试经验丰富的人喜欢使用的一种测试用例设计方法。

一般这种方法是基于经验和直觉推测程序中可能发送的各种错误,有针对性地设计。只能作为一种补充。

例如,测试手机终端的通话功能,可以设计各种通话失败的情况来补充测试用 例:

1) 无SIM 卡插入时进行呼出(非紧急呼叫)

2) 插入已欠费SIM卡进行呼出

3) 射频器件损坏或无信号区域插入有效SIM卡呼出

4) 网络正常,插入有效SIM卡,呼出无效号码(如1、888、333333、不输入任何号码等)

5) 网络正常,插入有效SIM卡,使用“快速拨号”功能呼出设置无效号码的数字

技巧:最重要的是要思考和分析测试对象的各个方面,多参考以前发现的bug的相关数据,总结的经验,个人多考虑异常的情况、反面的情况、特殊的输入,以一个攻击者的态度对待程序,就能设计出比较完善的测试用例来。

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

 

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

终于有人把软件测试用例讲清楚了(一定要收藏) 的相关文章

  • 步骤详图 教你在linux搭建容器环境

    警告 切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker 1 准备工作 系统要求 要安装Docker CE 社区版 操作系统的最低要求是CentOS7 7以下版本都不被支持 卸载旧版本 Docker改版
  • 测试开发必知:有Tomcat,为什么还要Nginx?

    只用Tomcat 不用Nginx搭建Web服务 行不行 我曾经提出的愚蠢问题 今天详细给自己解释下 为什么必须用Nginx 不用Nginx 只用Tomcat的Http请求流程 浏览器处理一个Http请求时 会首先通过DNS服务器找到域名关联
  • 微信小程序的自动化测试框架

    微信发布了小程序的自动化测试框架Minium 提供了多种运行验证方式 其特点 支持一套脚本 iOS Android 模拟器 三端运行 提供丰富的页面跳转方式 看不到也能去得到 可以获取和设置小程序页面数据 让测试不止点点点 可以直接触发小程
  • 基于Loadrunner的性能分析及调优经验分享

    公司某个系统的微信端计划将开放给几百上千的人员登录查询 并且登录账号为同一账号多人使用 后台服务能够支撑起多用户的并发操作以及成百上千人登录微信端对生产数据库或者登录查询的性能效率高成为交付可靠生产环境的必要条件 因此 项目组决定提交测试
  • 测试用例评审流程优化

    测试用例 评审是QA日常工作流程中的关键一环 是QA同学完善测试用例 交流测试经验的好机会 负责组内测试用例建设以来 作者对于评审流程做了一些优化工作 本文作者将整个优化过程中的心得体会做了一个总结 希望能给大家带来帮助 01 原始流程 1
  • 软件测试|Python中如何提取列表中索引为奇数的元素

    简介 在Python中 我们经常需要从列表中提取特定位置的元素 如果我们想要提取列表中索引为奇数的元素 可以使用一些简单的方法来实现这一目标 本文将介绍如何在Python中提取列表中索引为奇数的元素 并提供示例代码来帮助大家更好地理解这个过
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 一篇文章带你了解Python常用自动化测试框架——Pytest

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Jmeter 性能-阶梯负载最终请求数

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

    对于很多刚开始学习软件测试的小伙伴来说 如果能尽早将黑盒 白盒测试弄明白 掌握两种测试的结论和基本原理 将对自己后期的学习有较好的帮助 今天 我们就来聊聊黑盒 白盒测试的相关话题 1 黑盒测试的方法和小结 最常见黑盒测试方法包括 边界值 等
  • 月薪2W的软件测试工程师,到底是做什么的?

    在生活中 我们常常会遇到以下几种窘迫时刻 准备骑共享单车出行 却发现扫码开锁半天 车子都没有反应 手机导航打车 却发现地图定位偏差很大 司机总是跑错地方 买个水 却遭遇自动售货机吐币 或者不找零钱 好不容易休息打个游戏 却一直出现卡顿 闪退
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 2024拒绝行业内卷!八年软件测试20K*16薪行业心得 想入行必看

    目前工作做软件测试工作8年 属于高级测试员那个级别吧 现在看到各行各业的人都在转行学习软件测试 想给大家一些学习建议和忠告 很多粉丝都跟我说今年行情很差 找不到工资 真的找不到工作了吗 我们常在网上看到的 程序员饱和 程序员过剩 其实一般是
  • 软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

    Android WebView是一个内置的组件 允许在Android应用中嵌套显示Web内容 Android WebView的技术原理涉及到使用WebKit引擎来渲染Web内容 并提供一系列API和回调函数 使得开发人员可以控制和定制Web
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO

随机推荐

  • FPGA——按键消抖常用模板代码

    模板如下 define UD 1 module key jitter input clkin input key in output key value output 15 0 tout inner signal reg 1 0 key i
  • Angular1.x 基础入门

    一 Angular1 x概述 致力于单页面应用 single page application 不直接操作DOM元素 数据驱动为核心 以操作数据完成页面的一系列 二 Angular1 x特点 MVC MVC模式 Model 模型 业务数据
  • ts(TypeScript)常用语法(Omit、Pick、Partial、Required)

    ts TypeScript 常用语法 比如有一个联系人列表 export interface Contact name string 姓名 phone string 手机号 email string 邮箱 avatar string 头像
  • appium根据屏幕大小滑动界面driver.get_window_size()、driver.swipe()

    driver get window size 获取屏幕的宽 高 driver swipe 从坐标1滑动到坐标2 t毫秒时间内完成 上下滑动时 坐标的x值可以不变 只改变坐标y值的大小 左右滑动时 坐标的y值可以不变 只改变坐标x值的大小 上
  • 分布式系统与微服务的区别是什么?

    分布式系统和微服务是两个相关但不同的概念 它们都是在构建复杂的软件应用时使用的架构思想 分布式系统 分布式系统是指由多个独立的计算机或服务器通过网络连接共同工作 协同完成一个任务或提供一个服务 在分布式系统中 各个计算机节点可以分担任务的负
  • “华为杯”研究生数学建模竞赛2019年-【华为杯】D题:汽车行驶工况构建(附获奖论文和MATLAB代码实现)

    目录 摘 要 1 问题重述 2 模型假设 2 1 题目对模型给出的假设
  • Qt核心特性之 —— 「信号(Signal)与槽(Slot)」机制

    目录 1 Qt 与 Qt Creator简介 2 关于引用头文件的一些事儿 3 信号 Signal 与槽 Slot 机制 3 1 一个小例子 4 自定义信号与槽 4 1 运行效果 5 信号与槽的特性 6 Qt 4 版本以前 connect
  • linux 如何创建卷组

    1 创建一个物理卷 Pvcreate dev sd1 dev sd2 dev sd3 dev sd4 2 用刚才创建的物理卷创建一个卷组 Vgcreate 卷组名 dev sd1 dev sd2 dev sd3 dev sd4 3 创建逻辑
  • 第四章:树形结构的关联式容器(map+set)

    系列文章目录 文章目录 系列文章目录 前言 1 关联式容器与序列式容器 1 1 键值对 2 set的介绍 3 multiset的介绍 3 1 接口count与容器multiset 4 map的介绍 4 1 接口insert 4 2 oper
  • MySQL 报错 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file

    本地装了 Wamp 的环境 启动时 MySQL 启动失败 查看启动失败的日志 日志如下 2021 08 21T12 46 57 183482Z 0 ERROR FATAL InnoDB Table flags are 0 in the da
  • nodejs学习-----封装异步API,学习回调函数

    1 回调函数学习 回调函数定义 使用者自己定义一个函数 实现这个函数的程序内容 然后把这个函数 入口地址 作为参数传入别人 或系统 的函数中 由别人 或系统 的函数在运行时来调用的函数 函数是你实现的 但由别人 或系统 的函数在运行时通过参
  • left join on多表关联_2周零基础搞定SQL——多表查询

    在上一篇文章里 我们学习了SQL的复杂查询 但是依然只是针对一个表的 但在实际工作中 我们需要的数据 往往分布在多个表中 所以为了更好的解决工作中的实际问题 今天我们一起来学习如何用SQL进行多表查询吧 1 表的加法 在之前的学习中 我们建
  • 4-2 过滤器法

    4 2 过滤器法 请参考 数据准备和特征工程 中的相关章节 调试如下代码 注意 本节内容因为要耗费比较大的内存 在线平台有可能无法支持 可以下载到本地执行 基础知识 from sklearn datasets import load iri
  • 运行ntpdate报错:Temporary failure in name resolution

    一 问题报错 忽然发现某台机器时间慢了些几分钟 之前没有搭建ntpd服务 目前都是使用的ntpdate加定时任务进行时间同步 直接执行ntpdate报错如下 ntpdate cn pool ntp org Exiting name serv
  • 大学四年,因为这8个网站,我成为同学眼中的学霸

    作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 推荐专栏 对网络安全感兴趣的小伙伴可以关注专栏 网络安全入门到精通 大学期间 几乎每一个教过我的老师都反应 我的学习态度不好 我上课很少仔细听老师在讲什
  • DNF搭建服务器服务端搭建教程

    DNF搭建服务器服务端搭建教程 我是艾西 今天给大家分享下怎么样自己搭建一个DNF 前阵子体验了下其他GM搭建的服 那么对于自己搭建的好处在于出道即巅峰 想要什么武器就是一串代码命令的事情 下面我跟大家说一下需要准备那些东西 DNF服务端
  • java获取当前服务器系统默认得编码格式

    java文件中 可以通过下面方法获取执行这段代码的服务器系统的编码格式 System getProperty file encoding 输出的结果是String的字符串 例如 utf 8
  • Java之Spring

    目录 创建spring项目 存储bean对象到容器 spring 中 从spring中将bean取出 更简单的读取存储对象 存储bean对象 前置准备 添加注解存储 Bean 对象 获取bean对象 bean作用域和生命周期 定义 bean
  • QT信号和槽机制实现及源码阅读

    说明 QT的信号和槽采用观察者模式 Q OBJECT是提供信号和槽的基础 使用过connect第五个参数的可知 槽可以在信号发出的线程处理 也可以加入任务队列进行处理 但是在此只写了在触发线程处理的代码 如下是实现的类QT信号和槽 gt F
  • 终于有人把软件测试用例讲清楚了(一定要收藏)

    目录 1 公司流程 1 1 测试用例的4个特性 1 1 测试用例通常包括以下几个组成元素 1 编写测试用例的基本方法 1 1 1 概念 1 1 1 示例 1 1练习案例 1 1 边界值法 1 1 1 确定边界值的方法 1 1 因果图法 1