看完这篇文章,才发现我的测试用例写的就是垃圾

这篇具有很好参考价值的文章主要介绍了看完这篇文章,才发现我的测试用例写的就是垃圾。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

测试用例编写作为测试技能最基础的一个能力,大家应该或多或少都有自己写用例的习惯和思考方式,这里分享一些需求分析和编写用例的经验,主要针对功能测试,旨在尽量降低测试遗漏的可能性,而对于新同学来说,则希望可以达到入门的效果。最后会分享一个小工具,梳理一些比较复杂的业务需求时,可以协助做快速的分析。

01、如何拆解需求

一个需求的提出必然伴随着对现有系统优化的期望,一般来说有这几种类型:

新增功能以满足业务发展需要

功能优化,旨在改进存在的不足及影响业务发展的细节

满足监管部门政策

系统层级优化,不涉及业务层面,可能是SQL优化、代码重构等等

线上问题

接口,包括其他系统提供的以及自身提供给其他系统

定时任务,异步任务

对于不同类型的需求,我们的应对方式也会有差异,下面每一个点都会以这几种类型为前提逐一讲解。

1、新增功能

一般来说,此类功能会尽量避免影响原有功能,所以关联影响系数在几种类型中是最低的,可遵循以下思路进行拆解:

了解需求产生的背景,快速浏览需求,理清包含的菜单、模块、页面以及页面控件;

理清业务逻辑及数据录入控制;

根据需求的特点来大致划分测试用例/测试点的测试规格,一般可能有这几种:流程、页面/控件操作、数据展示、计算逻辑、易用性、兼容性等。

2、功能优化

此类功能的关联影响系数较高,除了从需求层面进行分析,开发设计也是辅助测试用例设计的关键。

了解需求产生的背景,理清优化点;

测试根据自身对系统的了解,或者系统文档等资料,初步对比变更前后的差异,并列举出来;

与开发沟通开发设计思路,理解代码、数据库层面的改动点,评估可能的影响点,并列举出来;

根据以上测试重点,划分测试特性。

3、满足监管部门政策

这类需求一般会比较紧急,大概率可能是上传数据或者逻辑控制之类的功能点,分析需求时侧重数据方面验证。

了解需求产生的背景,理清优化点;

根据需求列举数据类型、监管控制触发时点等;

自己分析,或与开发沟通是否存在关联影响,若存在则依照“功能优化”类需求继续分析;

根据以上测试重点,划分测试特性。

4、系统层级优化

这类需求由开发提出,一般为了提升代码执行效率、提高代码可复用性、降低代码复杂度等,会对现有功能产生关联影响。

与开发沟通优化方案,一定要了解清楚修改的前因后果,有任何不清楚的概念要打破砂锅问到底,因为任何一个疑问点都可能影响后续的用例设计;

确认验证方式,可能会通过页面功能遍历、SQL执行效率、页面响应时间等来验证;

根据1)分析优化到哪些功能,是单纯效率上的提升,还是也影响了原有功能的实现方式,若为后者,可能需要遍历该功能,依照“新增功能”类需求继续分析;

根据以上测试重点,划分测试特性。

5、线上问题

线上问题大致可分为紧急和一般两种级别

① 紧急级别对业务已经产生了阻断,需要通过数据修改、配置修改、少量代码修改当天上线

② 一般级别则是对业务暂时没有阻断影响,并且可能尚未分析到具体原因,不会在当天修复上线。

迅速找到问题对接人了解现象及操作步骤,并在测试环境进行重现;

若能重现且为近期上线功能引起的,需首先分析测试遗漏原因,若为历史问题,则需了解该问题被触发的原因及开发代码分析结果;若不能重现,则极大可能为配置及数据问题,非测试遗漏;

若进行了代码改动修复,则依照“功能优化”类需求继续分析,一般代码改动量很少,但此类情况下测试时间可能很少,需准确定位到代码改动点缩小测试范围。

6、接口

这种类型一般更偏重于数据组合的验证,界面上的测试比重较低,所以测试规格的划分会比较格式化。

了解需求产生的背景,理清优化点;

根据接口文档列举出入参组合情况;

确定接口调用频率,频率较高的话可能还存在其他潜在的测试需求;

确定数据是否落地(存入本地数据库),若是,则需列举落地的字段及数据处理方式,如插入、更新、删除情况下分别的处理方式;

确定数据是否用于页面展示,若是,则需列举展示的字段及展示形式;

确定接口是否用于触发另一功能的入口,若是,则需列举接口调用点,并列举接口数据与另一功能的关联关系;

根据以上测试重点,划分测试特性。

7、定时任务/异步任务

这类跟接口有点类似,一般不会存在于需求文档里面,而是在开发设计的时候实现需求的一种方式。一般会处理大批量的数据,并且调用频率没有接口那么高,这两种任务一般是为了降低系统即时处理数据的负担

了解任务处理过程中数据流向,是否有中间表,以及数据落地情况

任务触发时点

状态回写及重试机制

02、如何组合测试点和数据

了解需求类型并且写下了测试规格、测试点之后,需要进一步细化为测试用例,这时候可能会用到很多大家听过的方法,比如等价类、边界值、异常值、组合等等。大家应该发现了,这些方法其实都是协助筛选数据,把用例的数量控制在合理范围的手段。在一个版本的快速迭代中,测试时间很宝贵,我们不太可能无限制地设计测试用例进行全覆盖,因此我们需要对测试点和数据进行有效组合,将一个大的测试集转换成一个较小的测试集。

以最常见的用户登录系统作为例子:

1、对于登录操作来说

测试特性有:用户名输入,密码输入,登录

测试数据有:

已存在的用户,不存在的用户,包含特殊字符的用户;

与用户匹配的密码,

与用户不匹配的密码,包含特殊字符的密码。

登录作为预期结果的触发点

取值有:登录成功,用户名或密码不正确。

2、第一步梳理出来的测试特性和数据,如果进行全组合,会有18个测试用例,该功能只考虑功能测试的情况下,这样的用例数量太多了。试想下如果再增加输入框,用例数会成倍的增长,日常测试中功能逻辑比这个例子复杂的是绝大多数情况,这时候我们需要精简,用最少的用例达到尽量多的测试覆盖。

3、首先我们可以发现里面有一些组合是无效用例,比如“不存在的用户,与用户不匹配的密码,登录成功”这样的是无效的;第二,有一些组合可划分为等价类,即虽然特性取值不一样,但是达到的测试目的是一样的,比如“不存在的用户,与用户不匹配的密码,用户或密码不正确”、“不存在的用户,与用户匹配的密码,用户或密码不正确”,目的其实都是测试用户不存在的情况,可以进行用例精简。


4、至此,我们可以得到一份比较合理的测试用例文档,但是需要注意的是,我们精简用例的同时,必须保证测试路径的覆盖,涉及到的改动点是必须测试到的,上面的精简过程只是删减了对改动点进行了重复测试的部分。

03、确定测试方法

测试用例确定下来之后,还有一个重要的部分,测试方法的确定,包括执行方法和数据准备。日常测试中,比较普遍的方法是进行手工测试,但是有些情况下,通过手工测试来执行用例会相当耗时,在快速迭代过程中,会影响到测试进度。在执行阶段,比较常用的还有:接口测试、白盒测试、数据库脚本等。

1、接口测试适用于明确定义为接口的需求,以及提供了暴露到外部的service服务,尤其适用于组合情况非常多的测试用例,单纯的手工测试可能会涉及长时间的关联系统联调、页面流程遍历,而通过接口测试来覆盖,则可以在短时间内遍历完这些用例组合,快速发现逻辑层面的BUG,最后仅需要在联调、页面测试环节执行少数用例即可。

2、白盒测试一般来说用于开发环节比较多,但是在快速迭代的项目中,经常会出现后台逻辑方法开发完毕,但是页面还未开发完成,无法从界面上去执行用例,这时候就需要使用白盒测试。与接口测试的思路是类似的,但是这种情况一般不会有暴露到外部的service服务,没法从外围进行调用,需要到项目代码中编写单元测试调用。其余同接口测试。

3、数据库脚本一般应用在数据批量准备、数据批量修改,快速准备测试数据。了解数据流及关系是使用该方法的基础,通过数据库脚本模拟系统中数据的走向,输出测试所需要的数据。接口测试在某些情况下也可以达到这个目的。

04、PICT组合案例生成工具

PICT可以有效地按照两两测试的原理,进行测试用例设计·在使用PICT时,需要输入与测试用例相关的所有参数,以达到快速生成用例的效果,可以协助我们完成第二大点中的工作,极大提升效率。但工具生成的用例并不是完全可靠的,需要人工review一遍是否存在无效用例。文章来源地址https://www.toymoban.com/news/detail-555658.html

到了这里,关于看完这篇文章,才发现我的测试用例写的就是垃圾的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python常用基础语法知识点大全合集,看完这一篇文章就够了

    Python 是一门独特的语言,快速浏览一下他的要点: 面向对象:每一个变量都是一个类,有其自己的属性(attribute)与方法(method)。 语法块:用缩进(四个空格)而不是分号、花括号等符号来标记。因此,行首的空格不能随意书写。 注释:行内用“#”号,行间注释写在两

    2023年04月22日
    浏览(40)
  • 在工作中怎么保持稳定的情绪?看完这篇文章一定对你有帮助!!

    近期发生的新闻热点再度引发公众对稳定情绪和心理健康的关注。有时候我们遇到的最大的敌人,不是运气也不是能力,而是失控的情绪和口无遮拦的自己。如何在工作中保持稳定的情绪? 目录 一.什么是情绪? 二.在工作中怎么调节情绪? 三.怎么在工作中保持一个愉快的心

    2024年02月12日
    浏览(37)
  • RabbitMQ如何保证消息可靠性,看完这篇文章佬会有新的理解

    前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍RabbitMQ的消息可靠性机制,如消息丢失,消息重复性消费,消息积压等问题。 如果文章有什么需要改进的地方还请大佬不吝赐教 👏👏。 小威在此先感谢各位大佬啦~~🤞🤞 🏠个人主页:小

    2024年02月03日
    浏览(40)
  • 怎么用ai绘画二次元拍同款?看完这篇文章你就懂了

    在我们的二次元世界里,每一张优质的插图都能够引发无尽的想象和瞬间的心动。而现如今,随着人工智能技术的飞速发展,ai绘画已经成为一个备受瞩目的领域。在使用ai绘画生成二次元作品时,ai绘画二次元描述词就显得相当重要。那么,究竟ai绘画二次元描述词怎么写呢

    2024年02月16日
    浏览(35)
  • 中缀表达式转后缀表达式看完这一篇文章你就懂了

    一、什么是中缀表达式 二、什么是后缀表达式 三、后缀转中缀具体思路 四、代码实现 中缀表达式就是我们常用的算术表达方式,例如 (12+34)*5 ,运算符在两个数的中间,但是对于中缀表达式来说括号和加减乘除使得问题对于计算机非常复杂,为了有效的处理他们,波兰逻辑

    2024年02月08日
    浏览(35)
  • 看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题27移除元素) 2023.4.18

    本文章一部分内容参考于《代码随想录》----如有侵权请联系作者删除即可,撰写本文章主要目的在于记录自己学习体会并分享给大家,全篇并不仅仅是复制粘贴,更多的是加入了自己的思考,希望读完此篇文章能真正帮助到您!!! 力扣题目链接 分析题目 整形 数组 删除元

    2024年02月04日
    浏览(28)
  • 如何使用Sentinel的Slot插槽实现限流熔断,看完这篇文章会有新的收获

    前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍如何使用Sentinel的Slot插槽实现限流熔断,后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教 👏👏。 小威在此先感谢各位大佬啦~~🤞🤞 🏠个人主页

    2024年02月07日
    浏览(35)
  • 看完这篇文章你就彻底懂啦{保姆级讲解}-----(面试刷题链表相交) 2023.4.24

    本文章一部分内容参考于《代码随想录》----如有侵权请联系作者删除即可,撰写本文章主要目的在于记录自己学习体会并分享给大家,全篇并不仅仅是复制粘贴,更多的是加入了自己的思考,希望读完此篇文章能真正帮助到您!!! 分析题目: 两个链表都是 单链表 目标是

    2024年02月04日
    浏览(38)
  • Http响应状态码大全(看完这篇文章估计你会对HTTP状态码有更深入的了解)

    在 HTTP 协议中,状态码一般有3位数字。 这些状态码有一个识别它们的关联名称,但是重要的还是数字。 简而言之: 100  及以上状态码用于「消息」响应。你很少直接使用它们。具有这些状态代码的响应不能带有响应体。 200 及以上状态码用于「成功」响应。这些是你最常使

    2024年01月17日
    浏览(32)
  • 看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题59螺旋矩阵II) 2023.4.20

    本文章一部分内容参考于《代码随想录》----如有侵权请联系作者删除即可,撰写本文章主要目的在于记录自己学习体会并分享给大家,全篇并不仅仅是复制粘贴,更多的是加入了自己的思考,希望读完此篇文章能真正帮助到您!!! 力扣题目链接 分析题目: 元素按照 顺时

    2024年02月05日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包