专栏文章 如何写出高质量的测试用例?

爱偷懒的QA · 2023年08月03日 · 最后由 未闻佳音 回复于 2023年08月14日 · 16102 次阅读

编写测试用例是一个测试人员的基本功,如果你从网上搜索如何编写测试用例的话,大概率会得到如下答案:
编写测试用例的方法:1、正交试验法;2、边界值分析法;3、等价类划分;4、测试大纲法;5、因果图法;6、判定表驱动法;7、场景图法;8、错误推测法。正交实验法是在各因素互相独立的情况下,设计一种特殊的表格,找出能以少数替代全面的测试用例。
这几种方法如果你学会了,就能写出高质量的测试用例吗?其实根据我的工作经验,感觉会适得其反的。
什么是测试用例?先不管专家或是学者如何定义,测试用例就是我们从需求出发,针对每个功能点编写的检测开发的代码是否符合需求的操作步骤。当然要包括正常操作步骤,异常操作步骤等等。用例的编写形式也非常多,常用的有思维导图,Excel 或是各个公司的用例管理平台。
那作为一个测试人员,如何才能写出高质量的测试用例呢?

一,测试人员全程参与

一个项目从立项开始,测试人员就要参与进来,一定要了解项目的整体计划,然后把测试计划也规划进去。当然在需求评审完成后,就进入了用例编写阶段,根据项目大小安排好编写用例的时间。同时也要有用例评审环节,防止因需求理解有出入,对程序实现逻辑不了解等产生漏测的现象发生。用户评审一定要产品,需求的开发人员都参与进来,后来面详细说如何评审。

二,用例编写形式

用例的编写形式很多,常用的有思维导图,Excel 或是各个公司的用例管理平台,那我们应该采取何种形式呢?先了解一下一个完整的用例包括哪些方面:

  • 用例标题:概括描述用例的功能
  • 用例等级:用例等级,常用的是 P0,P1,P2,P3.....
  • 用例前置条件: 包括测试环境,测试数据,测试前置条件等等;
  • 用例操作步骤:测试的具体操作步骤,一定要写详情,这关系到用例是否要以复用,不能写的用例无法读懂。
  • 预期结果:用例执行的正确结果,这也是用例是否可复用的重要指标。

常规公司的 Excel 用例模板或是用例管理平台都会包括这几项,当然根据公司的需求也会增加其他项目,如,用例类型(Web,App,接口),是否关联自动化等等。

而我们在写用例的时候,个人建议先以思维导图 FreeMind 的形式罗列出需求的核心测试点,大概的测试点都要给出来,不用太细也不能太笼统了。然后可以拿着这个思维导图做用例评审,在评审的时候,可以查漏补缺,后面再转化成正常的用例,也有用例平台直接支持导入思维导图生成用例的。

三,用例编写要点

在用例编写过程中,如果公司没有规范的话,很多人尤其是老员工就会偷懒,把用例写的一塌糊涂,只有一个标题的用例,根本无法复用。这样写用例数量是上去了,可以后面怎么办,创建测试计划,选择 checklist 等等,一堆问题无法处理。所以一开始编写用例的时候就必须做到以下几点:
1,用例标题简明扼要
无论你是用 Excell 还是公司的用例管理平台,用例标题必须简明扼要,用最简洁的话描述用例的功能。不要把大段的描述或是需求文档上的文字来做标题,当用例多的时候可以从标题快速筛选用例,同时后续如果做关联自动化,或是其他用到用例的技术项目时,不会因标题过长而产生不必要的麻烦。
2,用例在突出级别
不少人写用例不分级别,所有的用例都是 P2,或是检测一个文字也要写成一个单独的用例;这样非常不好维护,后面创建测试计划,提出 checklist 的时候,也不容易挑选用例。可以这样划分用例:一个完整的操作的用例可以写成一个单独的;对于检测样式的用例,可以按功能页面进行归类,同一页面的检测放到一个用例中;同一操作可以按结果进行归类,如正常的操作结果下的几种情况;异常场景下的异常提醒等;再按公司对用例的要求,分别标注合适的等级。
3,操作步骤必须写清楚
不少同学写用例为了简单,就不写操作步骤,或是直接截图放到用例中;这是很不好的习惯,一是用例不通用,换个同学来执行用例,他就可能不知道如何执行用例的。二是不方便维护,如果用例涉及的操作有变化,用例如何维护便成了问题。高质量的用例必须有清晰的操作步骤,这样无论任何人拿到用例,都能按步骤执行到你的预期结果,或是重现用例导致的 bug。
4,预期结果必须完备
一个好的用例必须有预期结果的,这也是判断用例执行成功或是失败的依据。如果没有预期结果,其他人来执行时候,就不知道什么情况下算用例执行通过了?后续按用例来转化成自动化用例的时候,断言怎么写呢?
5,用例要及时维护
通常情况下一个测试用例集是针对特定的需求的,在需求上线后会将其中核心的用例转化成 checkllist,以便在后续的回归测试中进行回归相关功能。但由于产品的不断完善,早期的功能会进行优化,或是删除,无论任何情况,受影响的用例必须进行及时维护,以保证用例的可用性。如果不维护,在回归相关的功能的时候,可能会找不到相应的功能或是页面,操作逻辑有变化等等,导致用例无法执行下去。

四,用例评审

不少公司的项目流程中会要求有用例评审环节,大型的项目必须有用例评审,那应该如何评审用例呢?
1,测试人员组织
用例评审必须是由测试人员组织的,参与人包括需求对应的产品,开发,如果项目较大的话,包括项目经理以及项目涉及到的上下游人员。只有相关人员都参与了进行,才能更好,更加全面的评审用例。
2,用例的形式
用例评审的时候,不少同学会以 Excell 或是用例管理平台上的用例来评审,其实这个形式不好,因为都是用例的罗列,不能很好地体现用例间的关系。最好以思维导图的形式,大概罗列一下需求涉及到的功能点,上下游的影响关系,测试应该注意的事项以及异常情况的兜底策略等等。同时思维导图的形式也方便全面的展示用例,及时进行增加或是减少测试点。
3,用例评审记录
用例评审的时候要及时做好记录,方便后面细化或是补充用例,同时也要做好会议记录。评审结束后,发个邮件给评审的参与人,同时抄送经相关开发,产品的领导,让他们知道有这个事情。要记录好评审的结果,后续要做的事情,同时针对评审后补充全面的用例,也要发给相关人员确认一下,防止后面漏测时牵扯不清。

五,用例的常规用法

1,常规需求测试
编写测试用例是为了测试对应的代码是否满足需求,通常在测试过程中创建相应的测试计划,然后再按计划验证开发的代码是否符合预期。这个测试过程可能要反复测试多次,期间因需求变化,或是代码变化,需要修改相应的测试用例。一直到上线前进行回归测试,上线完成后,这个测试计划才算完成。
2,发版本回归 checklist
一个产品的核心功能在发版前都需要进行回归测试,所以也就必须维护一个 checklist。每个迭代增加的新功能,都会挑选核心的用例放到 checklist 当中。这就产生了一个问题:checklist 随着功能的增加会不断地增加,最终变得非常庞大,我们有个产品的 checklist 有 6000 多条用例。这是非常可怕的事情,一旦用例太多,回归的时候就大概率不会按 checklist 来了,根据自己熟悉的业务流程,简单地过一下就算回归完成。这样也会造成漏测的事情发生,checklist 也起不到作用了。checklist 必须定期维护,将 P0,P1 级别的用例放进来即可,早期一些 P1 级别的用例如果长期不改动,也可以先移出 checklist,保持 checklist 的高可用性。
3,自动化用例编写
在产品发展到一定的阶段的情况下,通常都会开展自动化测试的,无论是接口自动化还是 UI 自动化。编写自动化必须依赖于手工用例,不能自动化用例和手工用例完全没有关系,这也是不现实的。所以编写自动化用例的时候,就可以体现出一个高质量的手工用例的重要性了,测试步骤清晰,预期结果明确,自动化用例非常容易编写,否则写起来会非常困难的。
4,精准测试用例推荐
现在不少公司在做精准测试,其中有一个环节就是用例推荐。根据用例和代码关联关系,在一个需求提交后先 diff 出代码变化,再根据变化结合推荐算法,推荐需要回归的测试用例,以及来界定回归范围,提高测试效率。如果用例写的很乱,关联用例的时候涉及到非常多的代码,后续根本达不到推荐的效果。

六,总结

测试用例虽然很简单,也是测试人员入门必备的能力,但是要想写好一份高质量的用例也不那么简单。如果你能负责维护一套高可用,清晰易读的产品用例库,那就更加不简单了。当这样的能力成为你的习惯的时候,就不仅仅是在用例编写上,所以涉及到的项目,技术都能总结的很好,慢慢沉淀成你的知识体系,最后想不进步都难。

共收到 19 条回复 时间 点赞

作为测试资产之一,测试用例一直都是最重要的,但是也是本身质量比较差的。一般来说用例会有正规的模板,但是按着模板来写,时间成本非常高,所以基本上都是一句话用例,还不如产品的 user story。我们现在拿用例做语料来训练大模型,拉出来的用例惨不忍睹。

恒温 回复

其实感觉用例的规范有好多种,不同公司甚至同一公司的不同部门对用例都有很大区别

恒温 回复

用例的质量和作者的表达能力关系很大,碰到很多历史的用例,得花很长时间才知道到底是想测什么点和场景;而且本身对测试用例的产出就缺少一个质量把控的过程,很少有人会认真地去 review,也不会有什么 bug 被人发现出来。

Jerry li 回复

成本高啊。。一次迭代几百个用例,review 一遍不得 1 人日。

恒温 回复

肯定是各个团队的 TSE 自闭环啊,用例难道不评审的吗

想要做到如此的完善,两点即可:
第一点,钱给的到位
第二点,时间给到位

sir 回复

问题里面也说了:<用例评审的时候,不少同学会以 Excell 或是用例管理平台上的用例来评审,其实这个形式不好,因为都是用例的罗列,不能很好地体现用例间的关系。最好以思维导图的形式,大概罗列一下需求涉及到的功能点,上下游的影响关系>------------------所以评审完测试点,几乎不去看 Excell 的内容了,

安东尼 回复

评审可以划分设计评审和用例评审的,用例的目录结构应该要与设计评审时 xmind 的结构保持一致吧

sir 回复

关于<用例的目录结构应该要与设计评审时 xmind 的结构保持一致吧>这点,有点不敢同意,因为 XMIND 是按照业务流程整理的,但是 excell 我可以按照模块来划分,这个没有必要强求一致吧

我从来没有见过能称手工用例为资产程度的情况。基本的作用是科层制的过程指标,或者产研测分工下划分责任边界的工具。叫资产,就要在长时间无需太多努力就能产生利息。
关于测试用例,我听过有重要性的话只有这几句:“像复式记账”,“工作的软件高于详尽的文档”,“就是举例子”。这像从不同视角看一个过程。
“正规的模板” 也只有在很窄领域才存在。在互联网公司常见的工作流程里这个领域空间时间范围都很小。实际写手工用例的人大都理性的用合算的成本去写了。而且不同产品适合的举例方式也不一样,电商购物车、广告计算模块、期权计算、工厂设备收集数据的,明明天差地别,但搜索引擎搜一下用例模板,结果都差不多的。

安东尼 回复

看自己具体的需求具体分析也不是绝对的

黑水 回复

学习了,的确现在互联网阶段的测试用例很难形成资产了。

黑水 回复

同意 11 楼的看法,就像我们做质量保障工作分优先级一样,测试用例也应该分优先级再定投入。

边缘的系统不需要花太多时间做太多保障,因为它本身即使出问题也不会带来足够大的影响;对等的,测试用例如果是面向不怎么重要的地方,其实也可以分开来追求效率或者质量。

没必要以一个过高的标准统一要求所有测试用例,因为时间是非常有限,尤其是互联网两周发版是常态,不太允许全部用例都是高质量的要求。

个人感觉,测试用例的灵魂不在于字字斟酌明确,而是在于用例本身的结构(脑图结构)能否体现出一个有逻辑可理解的测试思路,让读者跟上这个思路并且能独立判断思路遍历是否完整可靠。至于繁文缛节方面的事情,一定程度上可以忽略。

王稀饭 回复

后续要基于用例去做一些事情,比如现在流行的大模型,你就知道用例标准化多重要了。

大家讨论的挺激烈的嘛,其实只是站的角度不同,考虑问题的方面就不同。如果把测试用例的用途仅仅是拿来测试开发的功能,检测是否存在 bug 的话,那就无所谓了,Excel,FreeMind 都可以,哪个维护成本比较小,就用哪儿个。甚至可以把测试用例写的非常细化,这样领导看起来显得工作量比较多。
但是,如果想拿测试用例去做一些儿高级的事情,如 15 所说,就必须标准化了。如手工用例关联自动化用例,测试用例关联开发代码,在精准测试中利用机器学习做用例推荐等等。如果测试用例不标准,你就知道有多痛苦了,无论你使用什么模型,都推荐不准确的。

之前要求写测试用例,然后发项目群,开发也看下,让他们先自测再移交测试,最后变成了形式。然后我们也从编写 100+ 条的测试用例,变成只编写关键用例(涉及本次逻辑的改动)那些啥增删改查都不写了。以前在外包,看到甲方每次发版前真的有一个通用 excle 测试用例回归一次,还真有几次给他们找到受影响的 bug。然后开发改完之后,又重新跑一边这个通用的测试用例(资源的确很多😁

恒温 回复

我只是觉得只给手工测试用的不行

测试新人 回复

我一直都是这么干的😂 本身公司项目流程就不正规,只能灵活一点,见效快😀

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册