【测试】编写测试用例的思路和方法

article/2025/8/20 12:01:42

文章目录

  • 1)什么是测试用例?
    • 1.1 测试用例的定义
        • 测试用例的内容:
      • *为什么需要测试用例?
        • 测试用例的作用:
    • 1.2 测试用例的元素
      • 测试目标(Why):
      • 测试对象(What):
      • 测试环境(Where):
      • 测试前提(When):
      • 输入数据(Which):
      • 操作步骤(How):
  • 2)测试用例的编写流程
    • 2.1 需求分析
      • 1、过需求文档:
      • 2、根据需求文档,拆分测试点。
        • 需求的种类:
        • *什么是产品需求文档?
        • *什么是交互需求文档?
        • *如果没有需求文档,怎么设计测试用例?
    • 2.2 提取测试点
      • 【举例】对PC端QQ账号的登录模块,提取测试点:
      • 【举例】对CSDN的web端登录界面,提取测试点:
    • 2.3 测试用例的编写
      • 2.3.1 编写测试用例该注意什么?
        • 测试用例的模板:
      • 2.3.2 测试用例的写作
        • 用例编号/ 序号
        • 用例说明(检查点)
        • 初始条件
        • 操作步骤
        • 预期结果
        • 用例状态
        • 优先级
        • *举例:
    • 2.4 测试用例的评审
      • *为什么要进行用例的评审?
      • 2.4.1 测试用例评审要点
      • 2.4.2 测试用例的维护
      • 为什么需要更新测试用例?
      • 常见的测试用例管理工具
  • 3)编写测试用例的方法



1)什么是测试用例?

1.1 测试用例的定义

测试用例是对一项特定的软件产品进行测试任务的描述指定输入,预期结果和一组测试项的执行条件的文档。

  • 它是测试工作的核心、是一组在测试时输入输出的标准、是软件需求的具体对照。
  • 体现了测试方案、方法、技术和策略。
  • 测试用例的内容:

    内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等。具体有:
    • 用例编号、用例名称
    • 测试背景
    • 前置条件
    • 优先级、重要级
    • 测试数据
    • 测试步骤
    • 预期结果、实际结果
    • 备注等

*为什么需要测试用例?

测试用例的作用:

  • 检验软件是否满足客户需求
  • 体现一个测试人员的工作量
  • 展现测试用例的设计思路
  • 测试用例是测试人员在测试过程中的重要参考依据

  • 测试用例可以帮助实施有效的测试,所有被执行的测试都是有意义的,不执行毫无意义的测试操作。

  • 测试用例是一个知识传递的过程,能保持一致、稳定的测试质量

  • 从项目管理的角度来说,测试用例的通过率是检验代码质量最主要的指标之一

  • 测试用例也可以作为评估测试人员进度、工作量以及跟踪/管理测试的工作效率的主要因素,从而更加合理地做出测试安排或调整。

  • 良好的测试用例不断地被重复使用,使得测试过程事半功倍。
    • 在软件产品的开发过程中,开发人员不断的推出新的版本,测试人员需要对原有功能进行多次的回归测试,即使在一个版本中,也要进行 2~3次的回归测试。这些回归测试,就要求能重复使用测试用例
  • 如果没有测试用例,很可能到执行的时候测试点就遗漏了,另外也不便于用例评审,用例总结,对后期测试工作没大的改进作用。
    • 所以测试用例一定要写,颗粒度视情况而定。针对测试人员少,上线时间紧的项目,可只做思维导图列出测试点。

1.2 测试用例的元素

测试用例必须给出测试测试目标、测试对象、测试环境要求、输入数据和操作步骤,即 5W1H。


2)测试用例的编写流程

主要分为以下四步:

需求分析 -> 提取测试点 -> 测试用例编写 -> 测试用例评审

2.1 需求分析

如果直接去测试,会发现有很多需求理解的偏差,测试过程中会发现自己理解的需求跟开发实际做出来的功能不一致。

所以拿到需求后:

1、过需求文档:

  • 先自己过一遍需求文档,标出不理解或者可能会有争议的地方。
  • 可以借鉴一下同类产品类似的功能是怎样处理的,这样更有助于理解需求。
  • 针对有疑义的地方与产品经理和开发人员一起讨论,尽量减少大家对需求理解上的误差。

2、根据需求文档,拆分测试点。

  • 需求的种类:

    • 业务需求:关注系统是否满足业务要求。
    • 用户需求:关注系统是否满足用户习惯。
    • 功能需求:关注系统是否满足功能要求。

*什么是产品需求文档?

产品需求文档就是产品功能说明书,包含大量的功能细节,目的是提高沟通效率,避免研发过程出现误会。

产品需求文档是将商业需求文档(BRD)和市场需求文档(MRD)用更加专业的语言进行描述。

在这里插入图片描述

  • 需求背景与目标说明:让别人知道为什么要做,要做到什么程度,用户检验功能完成情况。
  • 特性列表:所谓特性其实就是功能模块,把需要做的功能模块都罗列出来,主要用于明确需要做的功能有哪些,用图表体现更佳。
  • 主要逻辑:每个特性之下的操作逻辑,简单特性可以文字说明,复杂特性建议用流程图表现。
  • 特性功能点:补充每个功能点的相关细节描述,是开发,与测试工作的重要依据。包括:
    • 流程细节描述
    • 正常逻辑表现,异常逻辑表现
    • 文案内容,性能需求
    • 交互图(可无)
  • 特性需求,性能需求,数据上报:这一部分类似备注,说明了做这个功能要达到怎样的程度,需要再哪些地方进行数据埋点。

*什么是交互需求文档?

交互需求文档是给交互设计师看的文档,应该在需求文档之外单独呈现,主要目的是让交互设计师理解产品的交互需求。

  • 交互需求文档主要是对功能的交互设计,包含功能列表,每个功能的交互要点说明,包含元素等等。

*如果没有需求文档,怎么设计测试用例?

  • 查找其他相关文档,来帮助理解所要测试的产品需要完成的目标。
  • 尽量多参加项目组内的会议,比如需求讨论、设计讨论、计划讨论等,能够加深对产品的理解。
  • 咨询相关人员:项目负责人、市场人员。
  • 如果是一款已经上线的产品,可以多使用产品,有不懂的问产品经理。
  • 可以去看历史bug,了解到一些需要关注的东西。

2.2 提取测试点

对各个功能模块进行测试点分析,提取测试点,再对测试点进行用例编写。

  • 测试点:通过需求分析后,对得出的需求进行测试的具体内容。

【举例】对PC端QQ账号的登录模块,提取测试点:

在这里插入图片描述

  • 登录:
    • 正常登陆
    • 账号为空时点击登录
    • 密码为空时点击登录
    • 账号密码都为空时点击登录
    • 密码错误时点击登录
  • 记住密码功能是否有效
  • 自动登录功能是否有效
  • 找回密码功能是否有效
  • 注册账号能否正确跳转

【举例】对CSDN的web端登录界面,提取测试点:

在这里插入图片描述

  • 登录:
    • 正常登录
    • 账号为空时点击登录
    • 密码为空时点击登录
    • 账号密码都为空时点击登录
    • 密码错误时点击登录
  • 判断输入的手机号或者邮箱是否符合规范
  • 判断输入的账号是否存在
  • 下次自动登录按钮是否生效
  • 忘记密码按钮是否生效
  • 第三方登录是否有效
  • 注册账号按钮是否生效

2.3 测试用例的编写

2.3.1 编写测试用例该注意什么?

  • 根据项目的实际情况设计测试用例表格
  • 用例格式不要生搬硬套
  • 根据具体情况进行编写
  • 小技巧:
    • 把测试管理工具中的缺陷全部分类导出,总结一下哪些模块容易产生哪些缺陷,重点看一下自己没发现或没有考虑到的缺陷。
    • 把测试管理工具中的用例详细看几遍,学习别人的用例编写方法和思想。
  • 测试用例的模板:

    在这里插入图片描述
    在这里插入图片描述

2.3.2 测试用例的写作

  • 用例编号/ 序号

    • 应该简单且唯一

  • 用例说明(检查点)

    • 也称测试点、检查点、测试概述、用例概述、测试说明。
    • 用一句话对测试用例进行概述,最好看到这句话就能知道如何测试。
    • 可以总结测试目的,可以用“检查、验证、测试”等字眼(如验证 QQ 默认安装)。
    • 用例执行多轮时,越往后执行可能越快,如果用例写得好,直接看概述就行。

  • 初始条件

    • 也称预置条件、前提条件。
    • 初始条件是第一步操作步骤之前的状态,不能太远,不用从头写到尾。
    • 初始条件要是一个状态,而且是静态的,如管理员已登录后台。
    • 很多项目中不写预置条件。

  • 操作步骤

    • 步骤要都有序号。
    • 每一步用分号分开,最后用一个句号。每一步必须换行。
    • 参数前加冒号(如用户名:admin)。涉及按钮界面用【】、“”等成对符号间隔。
    • 功能的详细用例步骤 4-6 步左右。
    • 若对数据要求高,需要把数据分离出来。

  • 预期结果

    • 是一个状态。
    • 如果参考文档中有描述,原封不动的抄过来。
    • 如果文档中没有具体要求,则点要一致,可以有几个点,如 QQ 默认安装,应能启动、默认选项匹配等。

  • 用例状态

    • 通过、失败、阻塞、未执行、搁置、无效用例等。
    • 初始条件达不到时,一般用例状态设置为阻塞。
    • 看如何执行用例,执行完关心什么来定。

  • 优先级

    • 用例的执行顺序。

*举例:

在这里插入图片描述

2.4 测试用例的评审

评审就是对测试用例进行检查。用例编写完成后,要组织人员进行用例的评审。

  • 评审包括:同行评审、小组评审、部门评审和第三方评审等。
  • 参与人员:包括需求人员(如产品经理)、测试人员、开发人员等。
  • 评审流程:评审后改进测试用例,再进行评审再改进测试用例,这样一直循环直到评审都通过,这时候才结束评审,也标志着测试用例编写的完成。

*为什么要进行用例的评审?

测试用例包含了功能的边边角角,我们不能保证能把所有的测试点都列出来,也不能保证我们所列出来的测试点方向都是正确的,那么就需要其他人来查缺补漏、纠正错误,看一下有没有我们漏掉的点,看一下我们用例的方向是否正确,防止对需求的理解错误。

  • 通过评审发现用例的不足
  • 方便测试人员改进用例
  • 提高测试质量

2.4.1 测试用例评审要点

  • 根据检查单或检查表(Check List)进行评审。
  • 用例“文字校对”:错别字、病句、语句不通顺、含义不清晰、语句有歧义、格式不一致、标点不一致、中英文混合等。
  • 用例质量:遗漏用例、冗余用例、不清晰用例、错误用例、不可测用例等。
  • 确定用例的优先级。
  • 规划服务器和客户机。
  • 用例的分工执行与人员安排。
  • 记录评审过程,记录测试环境规划。

2.4.2 测试用例的维护

  • 为什么需要更新测试用例?

    • 先前的测试用例设计不全面或者不够准确。随着测试的深入和对产品规格说明书的深入研究,对某些功能、特性、逻辑等的理解越来越清楚、深刻。
    • 所发现的严重的软件缺陷没有被目前的测试用例所覆盖
    • 新的版本中有新功能的需求或者原有功能的增强而需要发生改动。
    • 编写的测试用例不规范或者语句错误。
    • 旧的测试用例已经不再适用,需要删除。
  • 常见的测试用例管理工具

    • 原始的Excel管理
    • TestLink: 免费开源可扩展性高,可以和bugzilla等缺陷管理工具的整合,适合中小型项目的管理。
    • ZenTao(禅道):免费开源,不过定制能力不足,不好用层级结构管理用例。
    • Bugzilla、ALM等,更详细的可以参考:有哪些比较好的测试用例管理工具?(https://www.zhihu.com/question/26898212)

3)编写测试用例的方法

常见的方法有等价类划分法、边界值分析法、功能图法、错误推测法、因果图法、场景法等。

具体可参考本栏目的《【测试】编写测试用例的常用方法》。(https://blog.csdn.net/m0_37621024/article/details/116860859)



【部分内容参考自】

  • 测试开发之编写测试用例:https://bqleng.blog.csdn.net/article/details/105284818
  • 一份优秀的需求文档:https://www.pianshen.com/article/8729120291/
  • 编写测试用例及一个例子:http://www.51testing.com/html/24/n-3727424.html
  • 测试开发之编写测试用例:https://bqleng.blog.csdn.net/article/details/105284818

http://chatgpt.dhexx.cn/article/DpVkisqU.shtml

相关文章

编写测试用例常用方法

一、等价类划分法 1.概念:等价类划分法是将所有程序的输入域划分成若干个子集合(等价类),然后从每一个子集合中选取少数具有代表性的数据作为测试的输入数据。在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的。等价类划分有效等…

Java-高级技术(二)

9、多线程 什么是线程&#xff1f; 线程(thread)是一个程序内部的一条执行路径。 我们之前启动程序执行后&#xff0c;main方法的执行其实就是一条单独的执行路径。 public static void main(String[] args) {// 代码...for (int i 0; i < 10; i) {System.out.println(i);…

想面中高级java工程师,要怎么写简历?(附图)

大家好~ 小仙女又回来啦~ 经过了N天的面试&#xff0c;最终选择了一家最中意的~ 过几天就要入职啦~ 现在把经验分享给大家~ 想跳槽的小哥哥小姐姐们可以参考一下~ 写简历要遵循的原则&#xff1a;整齐、简洁、多从阅读者的角度考虑。 文档属性与命名 写完简历生成pdf版的这个…

如何才能更快速的成为一名高级Java开发人员?

对于从事Java开发的小伙伴来说&#xff0c;成为一名高级Java开发工程师是他们的职业目标。高级Java开发工程师除了有更高的薪资和待遇&#xff0c;还代表着他们在行业的实际技能、经验和能力。但如何才能更快速的成为一名高级Java开发人员&#xff1f;下面&#xff0c;小编就给…

2022高级JAVA开发面试题精选

面试过程是一个由浅入深的过程&#xff0c;面试官先给求职者抛出一个相对简单的问题&#xff0c;然后通过一环套一环的追问深入考察求职者对知识点的理解掌握程度。 如下是一个实际的关于redis知识点的面试场景&#xff1a; 面试官&#xff1a;你用过redis吗&#xff1f; 你&a…

如何成为高级Java工程师?Java怎么进阶?

所谓的Java高级程序员往往是经验和能力的结合&#xff0c;并不是说掌握了哪几个技术就是高级程序员了&#xff0c;能否把掌握的知识运用到实际的项目中&#xff0c;并且解决了具体的问题&#xff0c;这个才是衡量一个Java程序员的标准&#xff0c;如何成为高级Java工程师&#…

java高级编程

&#xff08;一&#xff09;课程描述 Java高级编程是一门面向计算机专业的专业任选课&#xff0c;其具有实践性强、应用广泛、功能强大等特点&#xff0c;对于学生职业发展和提高社会信息化水平&#xff0c;具有重要意义。Java Web开发是Java 开发技术中的一个重要的组成部分&…

面试题总结 —— JAVA高级工程师

面试题总结——JAVA高级工程师 近期考虑换工作的问题&#xff0c;于是投简历面试&#xff0c;面试5家公司的高级Java工程师&#xff0c;有4家给了我offer&#xff0c;想着总结一下面试经验&#xff0c;方便最近正在寻求机会的你们 一、无笔试题 不知道是不是职位原因还是没遇到…

中高级Java程序员,你不得不掌握的基本功,挑战20k+

文章目录 1 前言2 自我介绍3 Java SE3.1 Java访问控制修饰符3.2 Java中抽象类与接口有何区别&#xff1f;3.3 Java中super关键字与final关键字3.4 final修饰的对象&#xff0c;有几种初始化方式3.5 Java中方法的重载&#xff08;Overload&#xff09;与方法的覆盖&#xff08;O…

高级JAVA程序员必备:必看书籍清单

前言 经常有粉丝私聊我&#xff0c;有没有JAVA的好书推荐&#xff0c;今天特意就写一篇&#xff0c;有需要自取。 PC端左侧加我微信&#xff0c;进社群&#xff0c;有送书等更多活动&#xff01; 《Java核心技术&#xff08;Core Java&#xff09;》 这本书就像一张高精地图…

Java-高级技术(一)

1、Stream 流 1.1、Stream 流的概述 在Java 8中&#xff0c;得益于Lambda所带来的函数式编程&#xff0c; 引入了一个全新的Stream流概念。目的&#xff1a;用于简化集合和数组操作的API。 代码演示 import java.util.ArrayList; import java.util.Collections; import java.…

JAVA高级知识点整理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言String字符串类String可变字符串StringBuilder可变字符串与String之间的转换 RunTime类概述特点使用 Data类方法 SimpleDateFormat类方法 包装类特点字符串与原…

java高级(javaAdv)

一、String字符串 String 是一个类&#xff0c;属于引用类型。 Java 程序中一切使用 "" 引起来的内容&#xff0c;都是这个类的实例&#xff0c;称为字符串对象。 字符串定义后是一个常量 &#xff0c;值不可更改。字符串 实际是一个字符数组 。 二、 String 类使…

各种编程语言名称的来历

写了那么多代码&#xff0c;你知道你用的编程语言为什么叫那个名字么&#xff1f; 下面整理了 TIOBE 2017年3月份前十语言的名称由来(本月Swift首次进入TIOBE指数前10名!) Java 任职于太阳微系统&#xff08;SUN&#xff09;的詹姆斯高斯林等人于1990年代初开发Java语言的雏形…

马上七夕到了,用各种编程语言实现10种浪漫表白方式

目录 1. 直接表白&#xff1a;2. 七夕节表白&#xff1a;3. 猜心游戏&#xff1a;4. 浪漫诗句&#xff1a;5. 爱的方程式&#xff1a;6. 爱心Python&#xff1a;7. 心形图案JavaScript 代码&#xff1a;8. 心形并显示表白信息HTML 页面&#xff1a;9. Java七夕快乐&#xff1a;…

各种编程语言的演变

关注、星标公众号&#xff0c;不错过精彩内容 素材来源&#xff1a;21ic电子网 编辑整理&#xff1a;strongerHuang 学编程的过程中&#xff0c;总是有小伙伴纠结我到底是该学C语言呢&#xff1f;还是Python呢&#xff1f;或者学Java&#xff1f; 那到底为什么编程需要这么多编…

plc编程语言是c语言吗,PLC各种编程语言特点你了解多少?

原标题&#xff1a;PLC各种编程语言特点你了解多少&#xff1f; 编程语言种类很多&#xff0c;各有各的优势&#xff0c;语句表和指令表类似&#xff0c;是编程语言的一种&#xff0c;在PLC中应用比较普遍&#xff0c;也是一种高级编程语言&#xff0c;PLC中语句表、梯形图、SC…

各种编程语言分类

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序. 翻译的方式有两种&#xff1a;一个是编译&#xff0c;一个是解释。 编译型语言写的程序执行之前&#xff0c;需要一个专门的编译过程&#xff0c;把程…

各种编程语言的应用C/C++/Python/Java/JavaScript

各种编程语言的应用 &#xff08;1&#xff09;C语言 C语言是面向过程的&#xff0c;数据与算法分开。它的重点在于算法和数据结构。 优点&#xff1a;结构化编程语言&#xff0c;层次清晰&#xff0c;可以嵌入编程&#xff0c;可以跟硬件打交道&#xff0c;作底层开发。 缺点&…

html网页制作特效代码,超全html网页制作特效代码.doc

超全html网页制作特效代码 HTML特效代码1。忽视右键 或 2。加入背景音乐 IE: NS: *.mid你的背景音乐的midi格式文件 3。简单的window.open方法 οnclick"javascript :window.open(文件路径/文件名,newwindow, toolbarno,scrollbarsyes,resizableno,top0,left0, width400,h…