QA的成长之路——深入测试的奇妙之旅

2024-04-24 16:20

本文主要是介绍QA的成长之路——深入测试的奇妙之旅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言

功能测试的小伙伴,你们是否遇到过这些问题:

1、工作中重复性很高:尽管尽可能地让一个 case 覆盖更多场景,但仍有许多重复性 case,耗费大量时间,让人感到枯燥疲惫;

2、覆盖度不全:凭借需求文档写case,难以全面覆盖各种可能的情况,从而导致潜在的问题被遗漏;

3、技术提升缓慢:在技术评审时听着别人热火朝天的讨论,自己却无法发表有价值的意见,对代码也感到陌生,让人感到焦虑无助。

功能测试遇到了瓶颈,自动化测试的收益不确定,工具开发又有局限性。如何更快、更准、更稳的交付?未来的路,到底该怎么走……

来到采货侠后,我接触到了“深入测试”的概念——通过了解系统内部实现来进行测试,帮助我走出了困境。

心中疑问重重

通过大家的分享,我了解到深入测试有很多好处。

· 我们可以通过技术评审、代码走读能够提前发现问题,从而在提测前就把bug解决;

· 我们可以根据代码补充case,把需求文档上没有的异常场景都覆盖到;

· 我们更可以针对重复性场景去了解代码是如何实现的,从而精简case,提高测试效率。

但我心中仍有疑问:深入测试到底是什么?我该怎么去做呢?它真的有用吗?它的投入回报比又是如何?

此时内心:疑问重重~
在这里插入图片描述

深入测试前提–代码

在小师傅和团队的引导下,我开始执行深入测试,但很快遇到了难题:我的“代码能力”似乎跟不上深入测试的要求。我开始求助小师傅,首先他教会了我怎么去看代码……

1、覆盖率–定位位置:可以从覆盖率的角度去理解case,利用覆盖率工具去定位功能对应的代码位置;

2、debug–了解链路:去了解需求中一些主要的实现类,并通过debug的方式走遍代码链路;

3、diff代码–分析bug:尝试去分析bug,修复后的bug可以通过diff代码来了解问题的根源。

经过几个需求的练习,我对代码熟悉了很多,小师傅开始教我怎么去写代码……

4、数据构造–练习代码:通过几个数据构造的练习,我对代码的熟练度越来越高了。

通过不断的学习和实践,我的代码能力有了显著的提升。面对代码时也变得更加自信了。

此时内心:进步了,开心~
在这里插入图片描述

深入测试初体验

在经历了代码能力的提升之后,我迎来了深入测试的初次实践。

1、效率提升 - 精简case的体验:

首先,我针对重复性较高的case进行了精简。

例如:我需要根据品牌、成色等字段去和库表中字段匹配,看是否命中策略。

之前的case设计–重复性高:

图片1.png
查看代码,代码逻辑如下:

图片2.png

实现逻辑:根据不同逻辑分成三个组,每个组中的逻辑对于每个变量处理都是一样的。于是我也把case分成了三组,每组只验证一个,其他的变量只需检查一下参数是否写正确即可。十几条case变成了三条。

图片3.png
通过这样的精简,原本预计需要2小时验证的case,只需要30分钟就能完成了!

2、质量保证- 帮助补充case的体验:

深入测试不光可以精简case,还能帮助补充case,提高case覆盖度。

例如:我需要根据时间和价格区间取红包的值。

之前的case设计–只写了验证匹配规则是否正确:

图片4.png

但我在代码中发现:他对红包的值进行了正、负的判断。因为红包是一个三方提供的数据,如果红包为负数,有红包的优惠价会比没有红包时的价格更高。为了避免出现这种情况,代码中做了处理:红包值为负,就取原本的价格。

图片5.png
通过查看代码逻辑,我补充了关于红包值正、负判断的case:

图片6.png
通过这些实践,我逐渐认识到深入测试是可以帮助我们更快更稳进行测试的。

此时内心:深入测试效果初现,继续加油~
在这里插入图片描述

过程中的小插曲

在深入测试的实践过程中,我也走过偏路,那就是我过度重视case的覆盖度而在很多不重要的地方花费了大量精力。像抛异常后没有后续处理逻辑,仅记录error日志的代码,是不需要耗费大量精力去覆盖的。

像那些消息队列(MQ)的返回、幂等逻辑的处理,这些有逻辑处理的地方才是我们需要特别关注的。

同样,在深入测试的过程中,不能只关注代码实现而忽略业务逻辑。作为QA,业务能力是基本,深入测试是辅助,只关注代码而不关注业务逻辑,这样也会导致业务场景覆盖不全面。

此时内心:深入测试之路,任重而道远啊~
在这里插入图片描述

吸收、理解

每个需求都如此练习,我对深入测试有了更深的理解,并总结了自己的测试方法。

1、针对于改动小,回归范围大的需求。–可以通过diff代码来确定回归范围。例如:入参而底层逻辑没有变动,我就可以只验证入参是否获取正确即可,而无需进行全量回归测试。

2、匹配规则类、上传校验类的case。–他的特点是重复性高,可以根据代码实现看看有没有规律进行分类,每类验证一个,其余的只需验证参数是否正确。

3、异常场景想不到。–可以根据代码实现来补充场景。

慢慢地,某些功能在设计case时就会想到代码可能是怎么实现,设计case的时候,重复场景的case就可以缩减估时;哪些场景可能需要额外补充,都可以用做到心中有数。

此时内心:吸收理解,总结方法论,下次更轻松~
在这里插入图片描述

进阶

目前我已经掌握了深入测试入门技巧,我意识到需要给自己设立新的目标来进一步提升。

第一个目标,我希望可以像其他组员那样在提测前进行CR并发现问题。通过几个需求的积累,我现在也可以在提测前发现代码中的问题,让rd提前修复,节省了测试时间。

现在,我希望在技术评审时不再只是被动地参与其中,而是能够贡献出自己的见解。当然,业务方面的建议我是能够提出的,然而涉及到实现的合理性,就需要了解系统框架、了解代码位置才可以做到。想要达成目标,还需要更多的学习和提升。
此时内心:坚定信心,持续进步~
在这里插入图片描述

总结

回到最开始的疑问。

什么是深入测试?

是测试左移+灰盒测试概念的融合

测试左移,更早地发现问题和预防问题,降低问题的解决成本;

灰盒测试,基于代码实现精简和补充case, 精准定位问题,以便提升测试效率,提高覆盖度;

该怎么去做?

图片7.png
如何保持长期耐心呢?

首先我们要相信:深入测试一定是有帮助的。在开始的初期,要不断给自己设定目标,小进步带来成就感。如果遇到了困难要积极面对,与大家一起交流沟通,把困难当做成长的机会。

深入测试真的有用吗?

对工作:可以帮助我们更快、更准、更稳的交付。提前发现问题,精简用例,提高了测试用例覆盖度。

对个人:提升了代码能力和对系统实现的了解,突破了功能测试的瓶颈,测试更加有技巧性,更加深入。

投入回报比是怎样?

投入:学习代码的时间、看代码的时间

回报:一次投入,终身受益。对于实现方式差不多的case,可以利用之前的方式进行case精简,长期来看是节省时间的。

最后的结语

作为QA,具备扎实的业务能力是根本,但也需要了解代码和系统,结合系统实现去进行深入测试。刚开始可能会有些不适应,但慢慢地你会发现深入测试对我们有很大帮助,只是它需要长期持续的坚持。

成长是一个持续的过程,永远不要停止学习和进步的脚步。希望我的成长之路能给其他 QA 带来启发和鼓励。让我们一起努力,成为更优秀的测试工程师,为软件质量保驾护航。欢迎在评论区留言分享你的经验。

关于作者

郭荣、蔡京宁 采货侠测试工程师

> 转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。

> 关注公众号「转转技术」(综合性)、「大转转FE」(专注于FE)、「转转QA」(专注于QA),更多干货实践,欢迎交流分享~

这篇关于QA的成长之路——深入测试的奇妙之旅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/932227

相关文章

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级

将一维机械振动信号构造为训练集和测试集(Python)

从如下链接中下载轴承数据集。 https://www.sciencedirect.com/science/article/pii/S2352340918314124 import numpy as npimport scipy.io as sioimport matplotlib.pyplot as pltimport statistics as statsimport pandas

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

从《深入设计模式》一书中学到的编程智慧

软件设计原则   优秀设计的特征   在开始学习实际的模式前,让我们来看看软件架构的设计过程,了解一下需要达成目标与需要尽量避免的陷阱。 代码复用 无论是开发何种软件产品,成本和时间都最重要的两个维度。较短的开发时间意味着可比竞争对手更早进入市场; 较低的开发成本意味着能够留出更多营销资金,因此能更广泛地覆盖潜在客户。 代码复用是减少开发成本时最常用的方式之一。其意图

编译测试后出现“发现不明确的匹配”错误

原文链接:http://blog.163.com/zhaoyanping_1125/blog/static/201329153201204218533/ 错误提示: 【“/”应用程序中的服务器错误。  分析器错误 说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。  分析器错误信息: 发现不明确的匹配。】   这个问题发生原因一般情况是

[大师C语言(第三十六篇)]C语言信号处理:深入解析与实战

引言 在计算机科学中,信号是一种软件中断,它允许进程之间或进程与内核之间进行通信。信号处理是操作系统中的一个重要概念,它允许程序对各种事件做出响应,例如用户中断、硬件异常和系统调用。C语言作为一门接近硬件的编程语言,提供了强大的信号处理能力。本文将深入探讨C语言信号处理的技术和方法,帮助读者掌握C语言处理信号的高级技巧。 第一部分:C语言信号处理基础 1.1 信号的概念 在Unix-lik

WeakHashMap深入理解

这一章,我们对WeakHashMap进行学习。 我们先对WeakHashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用WeakHashMap。 第1部分 WeakHashMap介绍 第2部分 WeakHashMap数据结构 第3部分 WeakHashMap源码解析(基于JDK1.6.0_45) 第4部分 WeakHashMap遍历方式 第5部分 WeakHashMap示例

RODNet安装测试

项⽬地址: GitHub - yizhou-wang/RODNet: RODNet: Radar object detection network 搭建环境并配置RODNet 1. 参考README.md搭建并配置环境 准备数据集 1. 本实验使⽤ ROD2021 dataset. 百度⽹盘链接:百度网盘 请输入提取码 密码:slxy 2. 使⽤这个script来重新组织文件。 具体形

Mockito测试

Mockito 一 mockito基本概念 Mock测试是单元测试的重要方法之一,而Mockito作为一个流行的Mock框架,简单易学,且有非常简洁的API,测试代码的可读性很高。 Mock测试就是在测试过程中,对于一些不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者说获取比较复杂的对象(如JDBC中的ResultSet对象)

jmeter测试https请求

公司最近在搞全站HTTPS改造,进一步提高网站的安全性,防止运营商劫持。那么,改造完成后,所有前后端的URL将全部为https。 So ,研究下怎么用Jmeter访问https请求呢。 其实很简单, 第一步在jmeter中创建HTTP请求,如下图进行配置,https端口为443; 第二步,在本机浏览器,如Chrome中导入该域名证书,在更多工具-设置-管理证书的地方,找到该证书,导出到本地。然后在