携程内部的测试用例是如何设计的?

程序员二黑 程序员二黑     2022-12-07     180

关键词:

  • 我是二黑,一个快要秃头的测试人

  • 欢迎点赞 收藏 ⭐留言 如有错误敬请指正!

  • 我收集了一些软件测试资料,关注我公众号:程序员二黑,免费领取!

  • 最困难的时候,也就是我们离成功不远的时候!


在跟大家讲解测试用例之前,首先想要问大家对一个“好的”的测试用例中的“好”是怎么定义的?可能对一些才接触的同学来说,那个“好”可能只是需要它运行起来就可以了,其实不然,接下来跟大家讲解一下“好的”测试用例是什么?如何去做一个“好的”测试用例?

一、什么是“好的”测试用例

“好的”测试用例一定是一个完备的集合,它能够覆盖所有等价类以及各种边界值,而跟能否发现缺陷无关。
举个例子:
如果把被测试软件看作一个池塘,软件缺陷是池塘中的鱼,建立测试用例集的过程就像是在编织一张捕渔网。“好的”测试用例集就是一张能够覆盖整个池塘的大渔网,只要池塘里有鱼,这个大渔网就一定能把鱼给捞上来。
如果渔网本身是完整的且合格的,那么捞不到鱼,就证明池塘中没有鱼,而渔网的好坏与池塘中是否有鱼无关。

二、好在哪里

1、整体完备性,即能够尽可能的覆盖测试需求。
2、等价类划分的完备性,是指对于每个等价类都能保证只要其中一个输入测试通过,其他输入也一定测试通过。
3、等价类集合的完备性,需要保证所有可能的边界值和边界条件都已经正确识别。

三、3种最常用的测试用例设计方法

1、等价类划分
即等价类中任意一个输入数据对于揭露程序中潜在错误都具有同等效果。后续我们只要从每个等价类中任意选取一个值进行测试,就可以用少量具有代表性的测试输入取得较好的测试覆盖结果。

以“用户登录”用户名为例,用户名长度最少5位,最长11位,可以是大小写字母、数字、大小写字母数字混合。

那么我们就可以使用任意的大小写字母、数字,长度限制在5-11位进行混合测试。如“a1514918722”、“123abcD12”,这样就构成了所谓的“有效等价类”。但等价类划分的关键点是要找出所有的“无效等价类”。

综上,考虑了无效等价类以后,测试用例可以设计为:

  • 有效等价类1:11位纯数字组合
  • 有效等价类2:11位纯大小写混合字母组合
  • 有效等价类3:11位字母数字混合组合
  • 有效等价类4:大于5小于11位字母数字混合组合
  • 无效等价类1:长度超过11位
  • 无效等价类2:长度小于5位
  • 无效等价类3:包含特殊字符组合

2、边界值分析
边界值分析是对等价类划分的补充,你从工程实践经验中可以发现,大量的错误发生在输入输出的边界值上,所以需要对边界值进行重点测试,通常选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据。

继续上面用户名输入的例子,边界值划分可以是:用户名长度4位、5位、6位、10位、11位、12位

3、错误推测

错误推测方法是指基于对被测试软件系统设计的理解、过往经验以及个人直觉,推测出软件可能存在的缺陷,从而有针对性地设计测试用例的方法。这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,当然还有个人的能力。

错误推测方法很那系统化,更多依赖测试人员的个人能力,在实践中,为了降低对个人能力的依赖,通常会建立常见缺陷知识库,在测试设计的过程中,会使用缺陷知识库作为检查点列表(checklist),去帮助优化补充测试用例的设计。
如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以加软件测试交流:1085991341,会有不定期的发放免费的资料链接,还会有同行一起技术交流。

四、如何设计出好的测试用例?

一句话概括:对被测软件的需求有深入的理解。

深入理解被测软件需求的最好方法是,测试工程师在需求分析和设计阶段就开始介入,因为这个阶段是理解和掌握软件的原始业务需求的最好时机。

只有真正理解了原始业务需求之后,才有可能从业务需求的角度去设计针对性明确、从终端用户使用场景考虑的端到端(End-2-End)的测试用例集。

在具体的用例设计时,首先需要搞清楚每一个业务需求所对应的多个软件功能需求点,然后分析出每个软件功能需求点对应的多个测试需求点,最后再针对每个测试需求点设计测试用例。

具体到测试用例本身的设计,有两个关键点需要你注意:

从软件功能需求出发,全面地、无遗漏地识别出测试需求是至关重要的,这将直接关系到用例的测试覆盖率。 比如,如果你没有识别出用户登录功能的安全性测试需求,那么后续设计的测试用例就完全不会涉及安全性,最终造成重要测试漏洞。

从软件功能需求出发,全面地、无遗漏地识别出测试需求是至关重要的,这将直接关系到用例的测试覆盖率。 比如,如果你没有识别出用户登录功能的安全性测试需求,那么后续设计的测试用例就完全不会涉及安全性,最终造成重要测试漏洞。

测试用例设计经验

只有深入理解被测试软件的架构,你才能设计出“有的放矢”的测试用例集,去发现系统边界以及系统集成上的潜在缺陷。

作为测试工程师,切忌不能把整个被测系统看作一个大黑盒,你必须对内部的架构有清楚的认识,比如数据库连接方式、数据库的读写分离、消息中间件Kafka的配置、缓存系统的层级分布、第三方系统的集成等等。【也就是说你要有一定的代码读写能力】

必须深入理解被测软件的设计与实现细节,深入理解软件内部的处理逻辑。

单单根据测试需求点设计的用例,只能覆盖“表面”的一层,往往会覆盖不到内部的处理流程、分支处理,而没有覆盖到的部分就很可能出现缺陷遗漏。在具体实践中,你可以通过代码覆盖率指标找出可能的测试遗漏点。

同时,切忌不要以开发代码的实现为依据设计测试用例。因为开发代码实现的错误会导致测试用例也出错,所以你应该根据原始需求设计测试用例。

需要引入需求覆盖率和代码覆盖率来衡量测试执行的完备性,并以此为依据来找出遗漏的测试点。

以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

最后为方便大家学习测试,特意给大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面。


包括,软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2021软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……

关注我公众号:【程序员二黑】即可获取这份资料了!

如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们的群:785128166 大家一起讨论交流,里面也有各种软件测试资料和技术交流。

推荐阅读

高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救

大学毕业开始销售…不甘于现状,转行测试的自救之路

从销冠到失业,最后选择软件测试,回头看看这段路,我很幸运!

在敏捷测试中如何设计用例

1.测试用例的粒度测试用例可以写得很简单,也可以写得很复杂。最简单的测试用例是测试的纲要,仅仅指出要测试的内容,如探索性测试(ExploratoryTesting)中的测试设计,仅会指出需要测试产品的哪些要素、需要达到的质量目... 查看详情

测试用例

测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小测试实体。测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序所设计的执行结果。测试用例... 查看详情

如何设计测试用例

测试用例是业务测试过程中测试者的生命线。在大需求面前无从下手测试时,测试用例是测试者对全盘概念的梳理和深度探索;在测试过程中碰到任何问题阻断测试场景或思路时,测试用例是测试者的执行指令和方向... 查看详情

从功能测试到自动化测试,携程大牛总结一些工作经验分享

现如今应该有很多测试人员应该有这样的疑虑,自动化测试要怎么去做,今天把一些学习经验分享给大家,希望对你们有帮助,有说的不好的地方,还请多多指教!对于测试人员来说,不管进行功能测试还是自动化测试还是性能... 查看详情

如何设计测试用例

测试用例是业务测试过程中测试者的生命线。在大需求面前无从下手测试时,测试用例是测试者对全盘概念的梳理和深度探索;在测试过程中碰到任何问题阻断测试场景或思路时,测试用例是测试者的执行指令和方向... 查看详情

如何设计测试用例

测试用例是业务测试过程中测试者的生命线。在大需求面前无从下手测试时,测试用例是测试者对全盘概念的梳理和深度探索;在测试过程中碰到任何问题阻断测试场景或思路时,测试用例是测试者的执行指令和方向... 查看详情

如何开发有效的可复用测试用例,又如何使用和管理?

在软件测试过程中,一个成熟的团队一般都有自己的公共测试用例库。公共测试用例库即可复用的测试用例库。今天我们就讨论一下如何开发有效的可复用测试用例,并学会如何使用和管理。一.可复用测试用例的开发测... 查看详情

功能测试

测试用例是什么?测试用例是为了特定的目的而设计的一组测试输入、执行条件、预期结果;通过大量的测试用例来检验软件的运行效果,它是指导测试工作进行的依据。编写测试用例的目的是什么?目的是有效地找出软件可能... 查看详情

如何开发有效的可复用测试用例,又如何使用和管理?

在软件测试过程中,一个成熟的团队一般都有自己的公共测试用例库。公共测试用例库即可复用的测试用例库。今天我们就讨论一下如何开发有效的可复用测试用例,并学会如何使用和管理。一.可复用测试用例的开发测... 查看详情

如何简单设计接口测试用例

...试。接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点。测试的重点是检查数据交互、传递、和控制管理过程以及系统间的相互依赖关系等。  如何设计接口测试用例?首先,明确出发点,和所有的... 查看详情

如何简单设计接口测试用例

...试。接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点。测试的重点是检查数据交互、传递、和控制管理过程以及系统间的相互依赖关系等。如何设计接口测试用例?首先,明确出发点,和所有的测试... 查看详情

如何简单设计接口测试用例

...试。接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点。测试的重点是检查数据交互、传递、和控制管理过程以及系统间的相互依赖关系等。  如何设计接口测试用例?首先,明确出发点,和所有的... 查看详情

蓝桥杯里面的测试用例是啥

参考技术A蓝桥杯测试用例一般包括:输入样例、输出样例、输入输出范围、特殊情况测试等。 查看详情

如何高效开展测试用例评审?附用例评审检查清单及用例评审报告模板

...试用例的书面检查。按参与角色来说:测试组评审测试组内部成员参与的评审。当一份测试用例初稿完成后,一般先进行测试组内部评审。评审内容侧重在测试思维完整系统性、确保对需求是可追溯且高覆盖的。尤其是当测试团... 查看详情

新手如何开始学习自动化测试?

对于测试人员来说,不管进行功能测试还是自动化测试,还是性能测试,都是需要编写测试用例,所以我们必须先要了解清楚手工测试用例与自动化测试用例的一些特点,才能更好的开展自动化测试工作。  1.1手工测试用例和... 查看详情

自动化用例设计原则

  用例设计部分,无论是手工测试还是自动化测试,都必须的环节,也是非常重要的环节。在做自动化测试的时候,用例需要考虑前置,步骤和比对。每一个部分都要有提供非常明确的测试数据,要考虑数据的重复使用是否会... 查看详情

我的测试用例设计-01测试用例的个人见解

刚入行的时候,看了很多关于测试相关的文章,记得有一篇说到测试用例是测试灵魂让我印象深刻。如今,我入行几年了,越发深感测试用例的设计重要性,可以这么说,测试用例的设计与管理是测试工程师的核心技能。我发现... 查看详情

携程大牛带你了解自动化测试脚本设计

今天给大家讲解一下自动化测试脚本设计,首先跟大家了解一下编写自动化测试脚本的方法。一、不同的自动化测试脚本的编写方法主要有:1、线性的;2、结构化的;3、共享的;4、数据驱动的;关键字驱动的(1)、线性脚本... 查看详情