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

简介:

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

  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/

目录
相关文章
|
5月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
697 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
8月前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
213 35
|
8月前
|
数据挖掘 测试技术 项目管理
2025年测试用例管理看这一篇就够了 ----Codes 开源免费、全面的测试管理解决方案
Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费。它通过整合迭代、看板、度量和自动化等功能,简化测试协同工作,使敏捷测试更易于实施。并提供低成本的敏捷测试解决方案,如同步在线离线测试用例、流程化管理缺陷、低代码接口自动化测试和 CI/CD,以及基于迭代的测试管理和测试用时的成本计算等,践行敏捷测试。
2025年测试用例管理看这一篇就够了 ----Codes 开源免费、全面的测试管理解决方案
|
8月前
|
前端开发 JavaScript Java
通过ChatGPT生成测试用例和测试脚本(2)
通过ChatGPT生成测试用例和测试脚本
184 21
|
测试技术
测试用例设计方法之基本路径测试法
基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法,设计出的测试用例要保证在测试中程序的语句覆盖100%,条件覆盖100%
647 7
测试用例设计方法之基本路径测试法
|
11月前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
294 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
12月前
|
测试技术 数据库
『软件测试2』 关于黑盒测试和测试用例的基础知识
该文章讲解了黑盒测试的基本概念以及如何编写有效的测试用例,包括选择合适的输入数据、预期结果的设定和测试执行的步骤。
|
测试技术
测试与开发问题之测试用例设计的重点是什么,如何实现
测试与开发问题之测试用例设计的重点是什么,如何实现
111 1
|
测试技术 数据安全/隐私保护
软件测试的艺术:如何高效地编写测试用例
【9月更文挑战第2天】在软件开发的海洋中,测试用例是导航灯塔,指引着质量保障的航向。本文将带你航行于测试用例编写的技巧之海,从理解需求到设计思路,再到实际执行,我们将一起探索如何高效而精准地构建测试用例,确保软件的稳健与可靠。
240 0
|
Java 测试技术 API
SpringBoot单元测试快速写法问题之计算测试用例的分支覆盖率如何解决
SpringBoot单元测试快速写法问题之计算测试用例的分支覆盖率如何解决

热门文章

最新文章