霜波说测试——优秀的测试用例

测试工程师有一样很重要的工作就编写测试用例。 测试用例是对需求的另一种描述,它能引导大家进一步加深对系统的理解和对特性的全面关注,从而帮助产品和开发重新审核需求的合理性和一致性,所以应该是测 试工程师最重要的一项产出。一般的测试用例分为输入,行为,和期望结果三个部分。这三个部分通常的测试用例都能满足,但是怎样的测试用例才能算上优秀的测 试用例呢?基于以往之测试经验,我总结了优秀测试用例的几个特点。

  1、正确性:毫无疑问,测试用例 必须是需求的正确描述。但是我们往往忘记了多想一步:这是用户正确需要的吗?我曾经有个一个失败的testcase,当一个条件输入异常的时候系统返回 -1给前端接口,然后前端返回错误信息,这是当时对异常的处理需求,可是如果多想一步,当一个条件异常的时候难道我们不能返回满足部分条件的结果给用户 吗?让用户的体验更加良好吗?

  2、完整性:就测试用例本身而言,是无穷尽的,只要是键盘的任意组合都可以算作测试用例。而一个优秀的测试工程师就是从无穷中找到最能保证质量,最能发现bug的测试用例出来,发现无穷的最小集,通常功能测试用 例的找寻方法有等价类和边界值是最简单的方法,建议结合使用,先划分等价类,再把等价类中的边界值找出来。我见过很多在=和>=之间徘徊的bug。 正交法出来的用例一般太多,所以需要测试工程师在正交法的结果中再做组合,建议结合错误定位法减少用例的执行。状态图在数据统计,结算中的使用概率最高。 每个状态和流程都需要一一考虑正常和异常的分支,正常的流程一个靠谱的开发能自己保证,但是异常的分支很少有开发考虑清楚,这就是体现测试工程师价值的地 方了。但是完整性绝不仅仅是功能测试,除了功能测试之外,常见的还有性能测试,安全测试,兼容性测试,安装友好测试,地域语言测试和用户体验测试(usability)。

  3、输入具体:对于这三个部分我们都希望它是固定的,具体的,比如输入框的输入,我们可以写成具体“诺基亚”,但是不要写“正确的输入”,或者“中文的输入”,这些都会导致测试用例的不确定性。模糊的输入应该在具体输入的上一级结构,作为测试的思路和分类使用。

  4、用词无歧义:很多词在不同场景会有不同的含义,比如价格一词在不同的表中就代表不同的价格,甚至在同一表中也有原始价格和卖出价格,所以应该尽量具体的描述关键词的具体信息,如果能贴上专用的id和原始表中的item会对避免歧义有很大的帮助。

  5、用例细化:输入的一种组合,或者一条流程线对应一个测试用例,尽量不要在一个用例中融和多种情况,在自动化测试的脚本中为了提高效率我们会在一个自动化脚本中融入各种情况的输入,然后一个动作,所有的输出一次生成,针对这种情况,建议在脚本中对各种输入对应的案例一一备注说明,运行失败的时候也方便新人定位问题。

  6、判断点准确无歧义:我经常看到这样的检查点:“结果正确”,“速度合理”,这些检查点对其他人没有丝毫的帮助。所以应该尽量做出让机器也能识别的检查点,比如输出“8”,或者“rt<30m”。

  7、合理区分优先级:在Bugfree中有4个级别的优先级,从1到4,1表示最重要的测试用例,4表示最不重要的测试用例。不同的缺陷管理平台对优先级的定义会有不同,但是都会有优先级的概念。在时间紧张的情况下,优先级的作用会特别大,我们会优先执行比较重要,对系统功能,用户体验影响大的测试用例,将级别比较低的测试用例留在后期或者指派给一些新人来执行。

  加分点:

  1、用例自动化:有自动化脚本的地址能够一一对应,对于淘宝的bugfree就已经和自动化框架mmt打通,通过测试用例可以直接链接到脚本,方便对用例的理解。

  2、记录每轮的测试结果:对于有些功能的测试用例,结果只是简单的pass我们不需要记录,但是对于性能测试这些结果不确定的测试用例,如果能保留每次测试的结果对于之后的测试是很有帮助的。对于fail的部分用例,如果能和bug产生一一对应关系对之后的回归也产生很大的便利。

  3、对检查点进行逻辑说明:很多用例有了结果的检查点,但是为什么是这个结果,对于新人来说必须重新翻看需求或者设计文档才能理解。尤其对于算法的测试,理解需求和逻辑是一个比较痛苦的过程,如果能够对每个结果进行一些备注和逻辑上的说明,会和方便自己今后以及新人对用例的理解。

   以上是对测试用例特性的一些总结,真正编写测试用例的时候,mm图由上到下的树形结构会对测试用例的结构和思路提供很大的帮助,在测试用例评审的时候也 方便展示和说明,所以强烈推荐作为附件上传。而且对系统越加深入的了解越能写出完善的测试用例,很多开发错误的理解测试工程师只需要知道需求就可以了,不 需要对程序有代码级别的了解,但是无数的实践证明测试工程师越了解系统的设计,编码的逻辑越能发现潜在的bug和风险。Unit test通 常由开发完成比较高效,但是Integration Test开始就必须有测试工程师开始真正介入,这期间能发现很多潜在的问题,如果把风险全部留到System Test的阶段风险是很大的,大量case的回归和问题的定位都会变得更加复杂,成本更加的巨大。所以在时间允许的情况下毫无疑问是前期的测试越完善整体 效率越高。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-24 11:08:50

霜波说测试——优秀的测试用例的相关文章

霜波:她是双11的大队长,她也是天猫资深美女程序媛

每个人都有觉得自己不够好,羡慕别人闪闪发光的时候,但其实大多数人都在经历着不凡,也做着不一般的事儿.不要沮丧,也不必惊慌,在非凡的日子里,谦卑和努力.总有一天,你会站在最亮的地方,活成自己曾经渴望的样子.女王节那天,我们在微信公号上,分享了天猫技术程序媛上神霜波的故事,获得无数的转发和正能量,今儿本君想把她的故事继续分享给云栖的朋友们,特别是积极上进的程序媛. 2016年的双11被誉为有史以来最稳定顺利的双11,霜波作为双11稳定性大队长功不可没.作为一位成(ren)功(sheng)女(ying

测试场景VS测试用例,哪个更好?

6年前,我在一家中型跨国公司工作的时候,我建议与其浪费时间在准备充分的测试用例,还不如编写描述测试场景的文档.所有的人都对我的建议.投以烦恼的目光.他们的脸上清晰地传递出,我这个建议犯了个大错误.虽然没人否认了这一想法,但更没有人愿意接受.每个人都认同传统做法,即编写测试用例,会更稳妥.我无力反驳. 4年之后,该公司接到一个测试项目,唯一的约束就是时间,唯一的期望是完整的测试证明材料.再次见面,我们讨论了怎么赶上最后期限的想法.应用程序主要是关于"通过搜索和生成不同菜单项的报表".编写

如和执行多个seetest生成的用于app测试的自动化测试用例

问题描述 现在需要用seetest来做app的自动化测试,通过seetest录制的单个c#自动化测试脚本添加进visualstudio之后可以运行,将多个脚本添加进visualstudio之后,也能够单个执行.但是选择执行所有测试用例之后,就会出现很多测试用例执行失败的情况(我使是通过Nunitadapter来在vs中执行测试用例的).导致问题的原因是这些测试用例不是按顺序依次执行一个的,而是多线程并行执行的.但是这些测试用例都使用同一个手机上的app,导致冲突了.现请大神指点如何管理seete

测试用例之性能测试用例

性能测试.压力测试.负载测试.强度测试.稳定性测试.健壮性测试.功能测试.接口测试--,这么多眼花缭乱的测试类型名称,估计很少有人能准确的区分并说出定义来,至于对应的测试用例如何编写和执行,就更不用说了. 如果问测试工程师测试用例如何编写,就象是问程序员如何编写代码得到的答案一样,每个人都会给出不同的编写方法,但实用的测试用例却象优秀的程序一样难以编写. 目前国内,测试工程师却时常要面对"已经延期几倍计划时间的项目",测试用例如何发挥更大的作用,是一个迫切需要解决的问题.事实上,完全可

浅谈软件测试用例

发现: 人来了,又走了! 有篇博文如是说,大体意思是有些的程序员,中途转测试,但很快又转回程序员.为何会这样,难道说测试不值得他们一试吗?普遍流行说测试工作如何如何简单,就是会点点鼠标.按钮就能做的工作:然而,事实恰恰相反,这些老到的程序员却是因为测试工作的复杂而没有既来之,则安之的. 软件测试乍看起来是件简单的工作,深入其中后,发现并不如所想,程序中各个模块之间的接口调用错综复杂(特别是大型程序),加之程序员的编写代码技巧以及个人习惯,使得一个程序有多种编程思路,只为实现功能,而不考虑代码的优

功能测试用例的书写方式

功能性测试用例 1. 测试的来源,即测试的需求 测试用例的主要来源有: 1) 需求说明"及相关文档 2)相关的设计说明(概要设计,详细设计等) 3)与开发组交流对需求理解的 记录(可以是开发人员的一个解释) 4)已经基本成型的UI(可以有针对性地补充一些用例) 简而言之,所有你能得到的项目文档,都尽量拿到. 从所得到的资料中,分解出若干小的"功能点",理解"功能点",编写相应的测试用例. 2. 用例的组织方式 不同的公司有不同的做法,原则上,只要方便管理和

通过IBM RQM来执行和管理Selenium测试脚本

它能够管理并运行由其他工具创建的http://www.aliyun.com/zixun/aggregation/18863.html">自动化测试脚本.本文将介绍如何通过 JUnit Selenium Adapter 将 Selenium 与 RQM 集成起来,更好的通过 RQM 来执行和管理 Selenium 测试脚本. 一.RQM 及其如何管理自动化测试脚本的简介 IBM Rational Quality Manager(RQM)是一款基于 Web 的出色的质量管理软件,用于贯穿软件生

有关软件测试用例执行的讨论

贺炘-让测试敏捷起来在微博上问道:刚刚了解到,大多数测试人员不按测试用例来进行测试,原因是太麻烦了,那么测试用力基本形同虚设,对于这个问题,您怎么看? 大家对此展开了讨论. 贺炘-让测试敏捷起来: 首先测试过程是需要规划的.规划的方法可以是大纲或者具体的用例,也就是用颗粒度来平衡. 徐毅-Kaveri:回复@宝贤2011:测试用例要看你具体的内容,写得太详细,那么很有可能容易过时,某些命令.操作已无法执行:也有可能是用例写得太虚,起不到指导的作用.这些都有可能是对方不按用例执行的原因,需要去弄明

《JavaScript忍者秘籍》——2.2 测试用例生成

2.2 测试用例生成 Robert Frost曾写道:篱笆筑得牢,邻居处得好,Web应用程序也是如此,不管是何种编程准则,好的测试铸就好的代码.注意对这个"好"字的强调.如果测试用例的构建很差,它很有可能只是大量的测试套件,不会真正帮助我们提高代码质量. 优秀的测试用例具有三个重要特征. 可重用性(repeatability)--测试结果应该是高度可再生的.多次运行测试应该产生相同的结果.如果测试结果是不确定的,那我们又如何知道哪些结果是有效的,哪些又是无效的呢?此外,可重现性可以确保