如何编写测试用例

如何编写测试用例

用例的五个构成元素:

  1. 用例标题
  2. 前置条件
  3. 测试步骤
  4. 期望结果
  5. 后置条件

下面从这五个元素的角度,去剖析如何编写测试用例

用例标题

用例标题就是测试点名称。用例标题是用来说明这个用例的测试目的的,好的用例标题是别人看完你这个用例标题后就知道你这个用例是测什么的。但并不是标题越详细越好。既然是标题,就要言简意赅,能多简洁就多简洁,但简洁的同时又要能体现你的测试目的。用例的标题最好不要超过30个字,太长会让人看起来很累也很不专业。一般可以遵循这样的公式:主体(可省略) + 动词 + 名词 + 结果(可省略)(即谁做了什么有什么影响),但很多时候是动词 + 名词的形式。要注意:我们写的每一个案例对应的就是要测试的一个点。其实每个点都是用户的一种操作行为。

前置条件

用例的前置条件就是在测这个用例之前你要先准备的环境和数据。同时,我们需要将前置条件和测试步骤区分开来,但怎么区分呢,是不是还是比较模糊?我们从用例标题入手,我们的用例标题是动作+名词嘛,那我们的测试重点是动作,那产生这个动作之前的所需的所有环境和数据都算是前置条件,产生这个动作和这个动作带来的后果都算是测试步骤。这样是不是就比较清晰了。 前置条件只是说明测试这个用例需要准备的环境和数据,故前置条件不用像步骤那样写得那么详细,但也不能太过于简洁,不能有歧义。

测试步骤

测试步骤是一个用例的精髓,用例标题体现测试的目的,用例步骤就是如何来测从而达到测试的目的。即然是步骤那就是一步一步的操作过程,但这个操作过程并不是写得越详细越好。我们的步骤是来体现我们的测试目的的,即要怎样做什么操作,这个操作后要如何检查产生的结果。这个操作可能是一步,也可能是几步,也可能是来回循环。不管是什么操作都是告诉别人如何去做,如何去检查。但步骤不能写得过于详细,如【登录控制台,打开xx页面,点击xx按钮】这种就没必要写上去,因为这种既是浪费时间也会给用例的维护带来成本。只需精简明确地告诉别人在哪做什么操作即可,同时,写案例时需要遵循一些准则规范:

  • 用例规范

  1. 每个文件夹下不能超过10个测试用例
  2. 每个用例的步骤不能超过8步(算整个案例测试步骤,比如测试步骤和后置条件中执行1-3步)
  3. 测试用例不写“编号”和“测试步骤名称”
  4. 每个测试用例一个测试点,用例标题不宜过长,需要精简明了
  5. 详细测试需求点、测试步骤和预期结果必须体现测试目的和测试重点
  6. 测试用例中需要用到附件的,需附上文件和文件存放路径;(附件大于1M可指定路径)
  7. 预期结果要量化和直接化,减少用例执行的沟通成本
  8. 测试用例设计时需考虑测试执行效率,功能用例执行10分钟原则:用例里用到的数据或样本、脚本需要在备注里附上
  9. “测试步骤”和“预期结果”必须可实现和可执行
  10. 测试用例需验证客户业务,不能只检查配置和页面,除非为纯页面测试
  11. 体现强关联,去掉弱关联;强关联:案例中缺少此步骤就无法达到案例目的;弱关联:案例中缺少此步骤可以达到案例目的;对于大家都知道或应该清楚的点不用体现在用例中
  12. 测试用例需要有正反对比验证:开和关的对比、匹配和不匹配对比、输出结果的对比等,这种用例可以合并,减少用例冗余
  13. 提示内容不用写的太具体,说明大概意思即可,后面修改了提示需要返工用例
  14. 用例里不能有具体的版本号
  15. 模块备注尽可能详细,便于测试和观察测试点
  16. 测试方法可实现,测试数据贴近于用户环境
  17. 和其它功能、第三方之间有关联的测试场景有没有遗漏
  18. 标题精简,需要体现测试目的
  19. 模块目录中的备注是否足够详细,能支撑其它人快速理解特性和提高测试效率
  20. 测试结果的检查有没有站在客户的角度进行测试和验证
  21. 页面的测试需要覆盖多款浏览器的测试
  22. 不用把所有检查点放在一个用例上,这样会出现执行漏测或前面失败了后面就不执行了,问题发现滞后
  23. 若多个案例之间在步骤上就是互相覆盖的,需要合并:如测最长字符和包含特殊字符这两个测试点可以合并为一个案例
  24. 用例里不能出现有歧义的词,阐述需要清晰,不能两个人执行同样的 案例可能会产生两种执行结果
  25. 用例需要专业性,不能出现口语化的词语;
  26. 期望结果需要明确性,不能出现模糊的词语;如可能、如果、符合要求等
  • 可维护性规范

  1. 测试用例中不能出现页面配置路径,如:系统配置-网络配置-网络接口
  2. 测试用例中不能出现操作过程,比如打开XX目录下文件,点击什么;直接写需做的操作即可
  3. 测试用例需用到的例行检查点、公共检查点、后台、调试、配置文件等查看方法统一写到模块备注

期望结果

期望结果对应的是测试步骤,每一个测试步骤都对应一个期望结果,即做了这个操作后,希望它产生的后果。即大家在用例里看到的测试步骤里的1,2,3对应期望结果里的1,2,3。理论上每一个测试步骤都需要有一个对应的期望结果,但有些测试步骤我们并不关注这一步骤的操作后果,那这样的期望结果可写可不写。

这里需要注意期望两字,期望的意思是说要从用户的角度出发,我用户做了这个操作后,我希望它能给我反馈的结果。这个结果不是开发程序代码返回的结果,开发程序代码返回的结果是实际结果,执行用例时只有实际结果与用例期望结果一致时,案例才能标pass。所以在写案例或执行案例时,得到实际结果与期望结果不一致时不要轻易被开发忽悠了,一切以用户主。

后置条件

与前置条件对应,即执行完这个用例后需要还原环境,否则会给下个用例带来影响。一般写功能用例时,后置条件基本不用太关注,因为测试环境本来就需要多样化才能模拟用户的环境,若每次执行用例都保持一个纯净环境则带来的测试工作量也大,而且也不能很好地体现测试环境的多样性。后置条件一般是自动化需要做的,因为自动化需要保持环境的独立性,彼此不依赖,执行完一个案例后需要将这个案例创建的数据、策略等全部清空,防止影响下一个案例。

如何划分用例等级

现用例等级是怎么划分的?

一般在一个模块里的案例按照等级进行划分时,遵循下面的比例:

  • BVT(10%):模块最基本的功能验证(含常用部署、基本关联),推荐1级用例的20%左右
  • Leve1(30%):基本需求点,基本逻辑,基本可靠性,基本关联,基本用户场景
  • Leve2(40%):常见功能/逻辑细化点/专项细化点,常见关联/容错/边界值/用户场景
  • Leve3(20%):错误提示,极少测试的用例,非常见部署方式/用户场景/容错/边界值等

我们在划分用例等级时,为什么要这样划分?

BVT的案例应该是最基本最简单的案例,如一个功能模块的增删改就是最基本的;

level1是基本的功能需求基本操作相关的,如上面说的增删改,增可能有多种增加方式,BVT只是最基本的操作,level1是对BVT的一种补充;

level2是一些内部逻辑细化点或一些常见的异常操作。Level2的异常是对用户来是比较常见的,是很大概率上会遇到的;

level3是可能会出现但出现概率很低的一些操作或异常场景。level3的异常是很极端的异常,是很小概率会发生的,如不断重启之类的。

这样划分的意义何在?

这样划分是有意义的,从这个等级划分的原则上看就知道BVT是最好执行的,然后等级越高难度系数越大,特别是level3这种,可能涉及到很复杂的网络部署或很异常的环境构造。

不同等级的案例需要消耗的时间和带来的影响是不一样的。当一个模块转测后,我们希望的是能快速验收这个模块的质量,那如何验收?不就是它的基本功能是不是完成了,它的基本操作是不是都能顺畅执行,在这些基本功能基本操作都没问题的情况下,再来检视内部逻辑细节处理是不是到位,最后再检视各种异常场景下的处理是不是已经合理。即从简单到困难,先保障基本功能再检验其他的发散点。

 

原文地址:https://www.cnblogs.com/sunshine-blog/p/10069294.html

时间: 2024-10-06 06:51:15

如何编写测试用例的相关文章

用路径分析法来编写测试用例

熟悉测试理论的人都知道,路径覆盖是白盒测试中一种很重要的方法,广泛应用于单元测试.那么基于路径覆盖的分析方法是不是只能应用于单元测试呢,能不能将其推而广之呢.一般而言,在单元测试中,路径就是指函数代码的某个分支,而实际上如果我们将软件系统的某个流程也看成路径的话,我们将可以尝试着用路径分析的方法来设计测试用例.采用路径分析的方法设计测试用例有两点好处:一是降低了测试用例设计的难度,只要搞清了各种流程,就可以设计出高质量的测试用例来,而不用太多测试方面的经验:二是在测试时间较紧的情况下,可以有的放

如何根据需求分析文档编写测试用例

从拿到需求文档不要立马开始着手写测试用例,需要仔细推敲整理需求,画出系统级.模块内流程图,并找出各种测试点,等对需求进行了头脑风暴般的整理之后,此时已对测试系统的功能很清楚了, 再着手开始写测试用例. 那么编写测试用例的总体思路是什么呢? 1.整理分析需求文档 仔细将需求文档阅读一遍,记录不明白的地方及关键测试点,简单画出总体流程图. 然后再来一遍,仔细分析各个模块的功能,画出模块内流程图,找出所有功能,并列出主要测试点 2.编写用例 按照不同的业务规则可将测试用例分为四部分: 场景用例.系统用

Eclipse中使用Junit编写测试用例

Eclipse自带Junit插件,不用安装就能在项目中编写测试用例,非常方便. 在项目中添加Junit库 在编写测试用例之前,需要先引入Junit.对项目根目录右键,选择Properties,Java Build Path,Libraries,如图: Add Library,选择Junit: 点Next选择Junit版本,然后Finish就完成了引入. 编写测试用例 假设有如下类: package choon.test; public class Calculate { public int A

Android之编写测试用例

测试是软件工程中一个非常重要的环节,而测试用例又可以显著地提高测试的效率和准确性.App测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作. 我相信大多数的程序员都是不喜欢编写测试用例的,因为这是一件很繁琐的事情.明明运行一下程序,观察运行结果就能知道对与错了,为什么还要通过代码来进行判断呢?确实,如果只是普通的一个小程序,编写测试用例是有些多此一举,但是当你正在维护一个非常庞大的工程时,你就会发现编写测试用例是非常有必要的. 举

编写测试用例

成功是一种观念,致富是一种义务,快乐是一种权力. 本讲内容:测试用例 测试用例通常是带有期望的运行结果的程序代码,测试者可以根据最终的运行结果来判断程序是否正常工作. 一.测试用例的好处 譬如你正在维护一个很庞大的工程,里面有许多的功能,某天,根据需求你对其中一个功能进行修改,几天后,突然有人发现其他功能出现了问题,最终定位出来的原因是你之前修改的那个功能所导致的.所以当项目比较庞大时,一般都应该编写测试用例.如果我们给项目的每一项功能都编写了测试用例,每当修改或新增任何功能之后,就将所有的测试

1.5如何编写测试用例

1.测试用例定义 描述每一个测试点的数据设计和步骤设计叫测试用例 2.重要性 软件测试核心,工作的基本 评估测试结果的基准 保证测试时不遗漏测试的功能点 对系统架构或者业务流程深入了解 方便测试用例评审 3.测试用例组成 3.1.用例编号 如:产品名-测试阶段-测试项-测试子项-xxx 3.2.测试项目:对应一个功能模块 3.3.测试标题:输入内容加结果,标题不能重复 3.4.重要级别:高/中/低 3.5.预置条件:前提条件 3.6.测试输入:需要加工的输入信息,根据具体情况来设计(跟步骤结合起

等价类和边界值方法编写测试用例

测试用例概念: 定义:测试用例是为了特殊目的,而主要记录了测试步骤.方法.数据.预期结果的文档,由测试人员在执行测试之前编写. 写用例主要包括:(编号.测试目的.用例描述(步骤.数据).预期结果) 测试中你可能会用到的问题? 不知道是否全面测试了所有问题? 所有的功能是否全测试到了? 每个功能测试的是否全面? 存在大量冗余测试,影响测试效率. 有些功能点可能测试多次? 对新版本的重复测试很难实施. 每个版本测试的步骤,数据都不一样,随意性很强. 测试的覆盖率无法衡量. 最后测试的结果好与坏无法准

如何高效编写测试用例

背景介绍 项目要马上上线,功能已完成80%,没在完整的需求文档,只有零散的Story,但由于流程及各种原因,之前一直没有测试人员的介入.现要在短时间内完成测试用例的编写,并要符合常规用例的规范及要求. 实践过程 梳理测试用例模板,与客户确认模板的覆盖是否满足需求 2小时与BA沟通业务流程,了解整个项目的业务流程及功能点梳理. 使用3-4小时,结合实际项目的功能及Story,自行整理整修业务流程的功能点(使用思维导图软件).与BA确认是否有核心功能的遗漏 2-3小时,编写完成一个模块的测试用例.与

编写测试用例时参照实际项目还是需求文档?

测试用例的编写是测试流程中不可缺少也极其重要的一环,但我们在编写用例时是根据实际项目还是根据需求文档作为标准呢? 在有一定规模的公司里,测试用例设计完成之后和开始实施测试之前必然有一项工作,即测试用例的评审.项目总监.项目的开发人员.产品人员以及视觉交互人员等所有的项目的相关人员坐在一起,由测试人员发起,共同进行测试用例的评审,而评审的最佳时间点就是在项目已经启动,完成了部分的编码工作,这时在测试人员对照需求文档写出的测试用例的基础上,项目组成员进一步针对项目需求细节进行核对,若出现理解不一致的