软件测试入门第一步【测试用例】

2023-10-30

测试用例

是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。
内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
每个具体测试用例都将包括下列详细信息:编制人、审定人、编制日期、版本、用例类型、设计说明书编号、用例编号、用例名称、输入说明、期望结果(含判断标准)、环境要求、备注等。

测试用例设计

  • 将软件测试的行为活动,作为一个科学化的组织归纳。
  • 挑选具有代表性或者特殊性的测试数据来进行测试。
  • 软件程序在测试用例限定的条件下,必须能够正常运行并且达到程序所设计的执行结果。

测试用例的好处

  • 在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。
  • 测试用例的使用令软件测试的实施重点突出、目的明确。
  • 在软件版本更新后只修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期。
  • 测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升。

常见黑盒测试用例设计方法

等价类划分法

等价类是指输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效,并合理地假设:测试某等价类的代表值就等于对这类其他值的测试。
等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。

等价类划分有两种不同的情况:有效等价类和无效等价类。

  • 有效等价类:指对于程序的规格说明书来说是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明书中所规定的功能和性能。
  • 无效等价类:与有效等价类的定义恰巧相反。
    设计测试用例时,要同时考虑这两种等价类。因为,软件不仅要能接收合理的数据, 也能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。

确定等价类的原则

  1. 在输入条件规定了取值范围或者值个数的情况下,可以确定一个有效等价类和两个无效等价类。
  2. 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确定一个有效等价类和一个无效等价类。
  3. 在输入条件是一个布尔量的情况下,可以确定一个有效的等价类和一个无效的等价类
  4. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可以确定n个有效的等价类和一个无效的等价类。
  5. 在规定了输入数据必须遵守的规则的情况下,可以确定一个有效等价类类(符合规则)和若干个无效等价类(从不同角度违反规则)。
  6. 在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。

确定测试用例步骤
为每个等价类规定一个惟一的编号。
设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步,最后使得所有的有效等价类均被测试用例所覆盖。
设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。

边界值分析法

边界值分析:是考虑边界条件而选取测试用例的一种黑盒测试方法,是对等价类划分方法的补充。
实践证明,软件在输入、输出域的边界附近容易出现差错, 而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

使用边界值分析方法设计测试方案首先应该确定边界情况,通常输入等价类和输出等价类的边界,就是应该注重测试的程序边界情况。
选取的测试数据应该正好等于、刚刚小于和刚刚大于边界值。
也就是说,按照边界值分析法,应该选取刚好等于、稍小于和稍大于等价类边界值作为测试数据,而不是选取每个等价类内的典型值或任意值作为测试数据。

基于边界值分析方法选择测试用例的原则

  • 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
  • 如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
  • 根据规格说明的每个输出条件 ,考虑值的范围情况。
  • 根据规格说明的每个输出条件 ,考虑值的个数情况。
  • 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
  • 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例
  • 分析规格说明,找出其它可能的边界条件。

错误推测法

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

错误推测方法的基本思想:

  • 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。
  • 设计一些非法、错误、不正确和垃圾数据进行输入测试是很有意义,如果软件要求输入数字、就输入字母,如果软件只接受正数,就输入负数,等等。

错误推测方法常见依据:

  • 在单元测试时曾列出的许多在模块中常见的错误。
  • 以前产品测试中曾经发现的错误等。
  • 已发现缺陷的测试方法的推广。
  • 容易发生错误的情况。
  • 补充等价类和边界值法遗漏的一些等价类组合。
  • 一些位置使用了共享变量,设计测试用例,修改一个共享变量,看其他位置有没有同时做修改。

因果图法

因果图方法是对等价类的扩展,可以理解为 “ 等价类组合判定表 ” 。是输入等价类与输出等价类的关系图。

等价类划分方法和边界值分析法都是着重考虑输入条件,并没有考虑到输入情况的各组合,也没有考虑各个输入情况之间的相互制约关系。
利用因果关系描述多种条件的组合,相应地产生多个动作的形式来考虑设计用例。

生成测试用例的基本步骤

  • 分析软件规格说明描述中, 那些是原因 ( 即输入条件或输入条件的等价类 ) ,那些是结果 ( 即输出条件 ) , 并给每个原因和结果赋予一个标识符。
  • 分析软件规格说明描述中的语义。找出原因与结果之间, 原因与原因之间对应的关系 。根据这些关系,画出因果图。
  • 表明约束条件。由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现。 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。
  • 把因果图转换成判定表。
  • 为判定表中每一列表示的情况设计测试用例。

判定表驱动法

判定表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。是分析和表达多逻辑条件下执行不同操作的情况的工具。

  • 可配合因果图后期使用
  • 适合于多逻辑条件下的组合分析
    能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。

判定表组成

  • 条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
  • 动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
  • 条件项(Condition Entry):列出针对它左列条件的取值。针对条件桩给出的条件列出所有可能的取值
  • 动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
    将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则。

判定表的优点和缺点

  • 优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。
  • 缺点:不能表达重复执行的动作,例如循环结构。

判定表的建立步骤

  1. 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2n种规则
  2. 列出所有的条件桩和动作桩
  3. 填入条件项
  4. 填入动作项。制定初始判定表
  5. 简化。合并相似规则或者相同动作

正交试验设计法

是从大量的试验数据中挑选适量的、有代表性的点,从而合理的安排测试的一种科学的试验设计方法。
设计出最少的测试组合,达到有效测试目的。

  • 节省测试工时。
  • 可控制测试用例的数量。
  • 测试用例具有一定的覆盖率。

生成测试用例的基本步骤

  • 提取功能说明,构造因子 状态表。
  • 加权筛,生成因素分析表。
  • 利用正交表构造测试数据集。

功能图法

用功能图形象地表示程序功能说明,并生成功能图的测试用例。又可以称作流程测试或状态迁移测试。类似于白盒测试中的逻辑覆盖和路径法。
需要懂得控制语句(循环,顺序,选择,重复)

生成测试用例的基本步骤

  • 在每个状态生成局部测试用例。
  • 测试路径生成:从初始状态到最后状态的测试路径。
  • 测试用例合成:合成测试路径和功能图中每个状态的局部测试用例。
  • 测试用例合成算法:条件构造树。

场景法

事件触发控制流程,事件触发时的情景便形成场景。
同一事件不同的触发顺序和处理结果就形成事件流。
用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径的有基本流和备选流。

测试用例选择的综合策略

  1. 首先进行等价类划分,包括输入条件和输出条件的等价类划分,将无限测试变成有限测试,这是减少工作量和提高测试效率的有效方法。
  2. 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。
  3. 可以用错误推测法追加一些测试用例,这些需要依靠测试工程师的智慧和经验。
  4. 对照程序逻辑,检查已设计的测试用例的逻辑覆盖程序,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
  5. 如果程序的功能说明中含有输入条件的组合,则一开始就可以选因果图法和判定表驱动法。
  6. 对参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳的测试效果。
  7. 功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据。
  8. 对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。
  9. 自动化测试【思维导图】

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

软件测试入门第一步【测试用例】 的相关文章

  • Linux搭建测试环境详细步骤

    本文讲解如何在Linux CentOS下部署Java Web项目的步骤 环境准备 1 Linux系统 2 JDK 3 Tomcat 4 MySQL 工具下载 一 Linux系统 本文主要是Linux CentOS7为例 自己在家练习小项目的
  • 【软件测试】学习笔记-脚本与数据的解耦 + Page Object模型

    本篇文章介绍GUI测试中两个非常重要的概念 测试脚本和数据的解耦 以及页面对象 Page Object 模型 测试脚本和数据的解耦 GUI自动化测试适用的场景 尤其适用于需要回归测试页面功能的场景 如果在测试脚本中硬编码 hardcode
  • “揭秘性能测试工具:优化软件性能的关键秘籍“

    性能测试工具的设计宗旨是为了模拟用户对软件应用程序或系统的各种操作 旨在评估关键的性能指标 包括响应时间 吞吐量 并发能力和资源利用率 通过这些工具模拟的多用户环境 我们能够产生与实际工作负载相似的条件 并监测系统在这种情况下的性能表现 一
  • 外包干了2个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • Selenium小技巧!

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

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

    RF定义 通用型的 自动测试框架 绝大部分的软件的的自动化系统都可以采用它 特点 测试数据文件 Test Data 对应一个个的测试用例 测试数据文件里面使用的功能小模块叫关键字 由测试库 Test Library Robot Framew
  • Jmeter 性能-并发量计算

    并发概念 指网站在同一时间访问的人数 人数越大瞬间带宽要求更高 服务器并发量分为 业务并发用户数 最大并发访问数 系统用户数 同时在线用户数 估算业务并发量的公式 C nL T C C 3 C的平方根 说明 C是平均的业务并发用户数 n是l
  • 步骤详图 教你在linux搭建容器环境

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

    只用Tomcat 不用Nginx搭建Web服务 行不行 我曾经提出的愚蠢问题 今天详细给自己解释下 为什么必须用Nginx 不用Nginx 只用Tomcat的Http请求流程 浏览器处理一个Http请求时 会首先通过DNS服务器找到域名关联
  • 软件测试|Python中如何提取列表中索引为奇数的元素

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

    简介 在网页开发中 富文本框是常见的元素 用于输入富文本内容 如富文本编辑器或邮件编辑器 如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框 可能会遇到一些挑战 本文将详细介绍如何使用Python和Selenium
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 2024拒绝行业内卷!八年软件测试20K*16薪行业心得 想入行必看

    目前工作做软件测试工作8年 属于高级测试员那个级别吧 现在看到各行各业的人都在转行学习软件测试 想给大家一些学习建议和忠告 很多粉丝都跟我说今年行情很差 找不到工资 真的找不到工作了吗 我们常在网上看到的 程序员饱和 程序员过剩 其实一般是
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

    Android WebView是一个内置的组件 允许在Android应用中嵌套显示Web内容 Android WebView的技术原理涉及到使用WebKit引擎来渲染Web内容 并提供一系列API和回调函数 使得开发人员可以控制和定制Web
  • 外包干了2个月,技术倒退2年。。。

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

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

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

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

随机推荐

  • DropDownList绑定到数据库中的方法

    这几天遇到再DropDownList中 如何将数据库中的内容与DropDownList下拉框中的值关联起来 步骤如下 1 建立要关联的数据库 在本例中假设为dept 要定义一个数据表用来取得这个表中的内容 代码如下 public DataT
  • web服务器:SOAP,WSDL,UDDI

    一 web服务简介 Web Services是一个可以将应用程序变为Web应用程序 将自己本地的应用程序信息通过网络 发布到网络中 让别人通过浏览器访问本地信息 Web Services的技术主要建立在XML的规范之上 保证了这一体系结构的
  • Pycharm缓存文件占满C盘

    地址 C Users 12135 AppData Local JetBrains
  • R包学习——reshape包中melt、cast、merge函数用法

    目录 1 melt Melt an object into a form suitable for easy casting 2 cast Cast a molten data frame into the reshaped or aggr
  • 三极管

    截止区 放大区 饱和区 放大电路 三极管工作在 放大区 一般不用三极管做放大电路 原因是三极管的可变电阻特性不容易调 运算放大器 开关电路 发射集 一般不加 下拉电阻 a 三极管工作在 截止区 Vout 0v 或 饱和区 Vout Vcc
  • 【node】 8、http搭建服务器模块(创建自己的第二个网站)

    创建自己的第一个网站 11 html h2 我的网站首页 h2 a href wdjl 我的简历 a h3 我的作品 h3 h3 我的学习 h3 h3 我的家乡 h3 h3 我的就业 h3 img src img alt 22 html a
  • 查看linux系统的磁盘大小、内存大小和CPU内核数的命令

    查看磁盘 df Th 查看内存 单位是GB free g 以总和的形式查询内存的使用信息 free t 单位是MB free m 或者用下面的命令 查看linux系统内存的大小 显示单位是MB dmidecode t memory grep
  • 给你 2 万条数据,怎么快速导入到 MySQL?写得太好了...

    一 前言 前两天做了一个导入的功能 导入开始的时候非常慢 导入2w条数据要1分多钟 后来一点一点的优化 从直接把list怼进Mysql中 到分配把list导入Mysql中 到多线程把list导入Mysql中 时间是一点一点的变少了 非常的爽
  • Java实现xlsx文件下载和文件上传

    Java实现xlsx文件下载和文件上传 文件下载 xlsx下载案例 直接上代码 注 header的文件头编码要设置好否则可能会出现乱码 public void downloadTemplate HttpServletRequest requ
  • Git如何上传代码到远程仓库(Gitee&Github)

    1 前提是下载好了git并且配置好了环境 首先在gitee上面建立一个新的远程仓库 2 建立好仓库后 在本地新建一个文件夹 3 打开文件夹后 鼠标单击右键选择Git Bash Here 打开git后将新建的远程仓库clone到该文件夹下 c
  • 处理kdevtmpfsi挖矿病毒

    发现CPU直接100 php root hadoop002 tmp systemctl status 25177 session 5772 scope Session 5772 of user root Loaded loaded run
  • stm32 IAP + APP ==>双剑合一

    扩展 IAP主要用于产品出厂后应用程序的更新作用 上一篇博文详细的对IAP 升级程序做了详细的分析http blog csdn net yx l128125 article details 12992773 考虑到出厂时要先烧写IAP 再烧
  • vue 动态引入第三方js和css

    页面中经常会用到第三方库的情况 直接全局引入到html文件会造成资源浪费 实现在需要的页面动态加载 动态加载css文件 param url param isCache export function loadCSS url isCache
  • 2021山东省职业院校技能大赛“网络空间安全”赛题及赛题解析(超详细)

    2021年中职组 网络空间安全 赛项 2021年中职组山东省竞赛任务书 模块 A 基础设施设置与安全加固 200分 模块B 网络安全事件响应 数字取证调查和应用安全 400分 模块C CTF夺旗 攻击 200分 模块D CTF夺旗 防御 2
  • QT 图片透明度

    设置图片的透明度 方式一是底部参考文章的内容 方式二是因为取值范围为0 0 1 0 所以在方式一的基础上稍加修改 方式三是 QPainter 自己的透明度设置函数 加载图片 QPixmap m pixmap QPixmap m pixmap
  • CSS学习案例(16):网易云音乐导航栏

    网易云音乐官网点这里 原版 自己做的 网易云logo图标和搜索放大镜图标 在阿里巴巴矢量图标库找 div class container div class top div class content div class logo a hr
  • 如何发送和接收RTP封包的H264,用FFmpeg解码

    这篇文章给大家介绍怎么打包H264分片到RTP包 并且实现一个播放程序演示接收RTP包和用FFmpeg解码 为了让大家更了解H264打包成RTP的细节 有必要罗嗦一下向大家介绍一些相关的基础知识 下面分三节介绍 其中前面两节是基础知识 第三
  • android setWebChromeClient和setWebViewClient的使用区别

    开发中我发现两个控件的使用 由于我做的开发依旧是前期开发 所以功能比较简单 在这里我使用的webView空间一般是使用的如下这个方法 webView setWebViewClient new webViewClient 然后新建一个内部类实
  • c++ 编码转化

    UTF 8到GB2312的转换 char U2G const char utf8 int len MultiByteToWideChar CP UTF8 0 utf8 1 NULL 0 wchar t wstr new wchar t le
  • 软件测试入门第一步【测试用例】

    测试用例 是指对一项特定的软件产品进行测试任务的描述 体现测试方案 方法 技术和策略 内容包括测试目标 测试环境 输入数据 测试步骤 预期结果 测试脚本等 并形成文档 每个具体测试用例都将包括下列详细信息 编制人 审定人 编制日期 版本 用