测试工程师必知的10大测试法则

粉妆玉砌
• 阅读 185

作为开发人员,我们应该遵守这样一句话:“质量不是来自检查,而是来自生产过程的改进。”——爱德华·戴明

“测试即代码。”
太多的组织将任何未编码的东西视为一次性的。很明显,测试是必不可少的,但我们一次又一次地发现,团队将测试自动化和相关材料视为二等公民。测试是用户行为的文档,与产品组织产生的需求密不可分,并在虚拟层面与用于创建功能的代码相连。

如果它提供了价值,就应该对它进行版本化、维护、照顾和尊重,就好像它是产品本身的核心功能一样。这应该包括测试用例规范、设计和技术文档以及错误报告。

“时间扼杀信心。”
大多数人可能会认为,在一个功能上花的时间越多,就需要花越多的时间来完善、完善、测试和探索它。与直觉相反,这适合“旧世界”风格的开发,有一个测试环境、一个阶段环境,以及围绕用户将如何与之交互的许多宏大假设。

这些法则试图将SDLC(系统生命周期)引入云计算世界:微小的、渐进的变化,在推广到整个世界之前,先向有限的受众推广。“键盘在10分钟内完成生产”——这会带来更快的反馈、更少的逃脱和更高的信心。以下是编码新世界的10大法则。

1.人人皆测试
团队的每一位成员,无论使用什么流程,无论生产什么产品,无论哪个行业——每个人——都对产品的质量负责。产品、工程、测试,甚至周围的功能:客户支持、销售、营销、业务开发、早期访问测试版客户、高管——每个人都在测试。

2.度量风险而非覆盖率
假设团队甚至可以就“完美”的工作定义达成一致,那么仅仅追求完美就会导致注意力从最重要的事情上转移:关键缺陷转移到生产中对业务的风险。
在你开始担心所有功能的全面覆盖之前,先痴迷于对你的业务最关键的六个用户流。

3.测试的是“金钱”想要什么
每个业务、每个部门和每个团队都部署了一组核心功能,这些功能对收入的影响比其他功能更大。或者,每个团队都必须维护一组影响较小但仍然必要的功能。在考虑其他因素之前,将测试工作重点放在影响收入的部件上。对于电子商务,将结账流程优先于用户配置文件。对于财务,优先考虑安全和资金处理工作流程,而不是信息页面。

4.广度比深度更重要
浅层测试产品的所有区域比深层测试产品的某些区域更重要。业务逻辑的深度、多元组合旨在找到最模糊的边缘案例:这可能会在其他高优先级领域遗漏更明显的缺陷。

一旦达到了广度,那对某个特定功能的深度是多少?请参考法则2。

5.唯一完美的信号是用户的信号
在你的用户与你的软件交互之前,你所做的一切都是理论性的。

测试就是模型。它们是基于从过去用户行为中获得的信息的用户行为的近似值。我们从测试中得到的信号可能因环境、测试本身的逻辑缺陷、无意识的偏见,甚至之前模型中的错误数据而存在缺陷!

了解用户使用软件时会发生什么的唯一方法是观察用户使用软件后会发生什么。生产分析的用户旅程应与测试覆盖率相关联,以评估测试策略的有效性。

此外,考虑到用户体验中包含的元素甚至不会被视为bug,也可能不会反映在分析中。当构建变为绿色时,并不意味着就是工作的结束。

6.代码在可测试(并经过测试)之前是不完整的
可测试性是对代码的各个部分进行检测的行为。如果不允许对这些信号进行轮询和解释,很难判断正确的行为。这导致了不成比例的额外工作,这增加了发布周期的时间,并将焦点从客户体验上转移开。时间将会扼杀信心。

7.每项测试都应导致明确的行动
如果不知道当测试失败时该怎么办(无论是从测试的角度还是从产品的角度),那么测试就没有提供价值。

这通常是由于测试步骤太多,或者产品没有提供足够的失败信息(包括没有充分的可测试性,参照法则2。)

8. 始终测试高层级
软件测试有“层”(从高到低):生产、UAT、功能、集成和单元。
高层测试对于强制不同团队开发的不同组件之间的交互至关重要,但边缘案例的细节可能会向下移动到较低层。这些较低层测试具有较少的依赖性,避免了昂贵的管道配置/编排,并且运行速度比较高层测试更快。

例如,UI测试应该仅用于确定用户界面是否能够呈现API的输出。如果通过同一个UI重复测试业务逻辑,则应该将这些测试中的大部分“向下”移动到API层。

9.从不链接测试
所有测试都应在不考虑任何其他测试状态的情况下执行。测试数据的管理应确保每个测试都生活在自己的独立场景中,并且不能被另一个测试更改。

测试应该是原子化的、自主的。

10. 首选最紧密的反馈回路
所有测试都是反馈回路。他们从特定的角度贯穿产品,并向特定的人或团队提供反馈。最严密的反馈回路是尽可能多地切断以测试所讨论的特定操作的回路。测试一个比必要的更宽的循环会引入一些变量,这些变量可能会混淆你从测试中得到的信号。

这十条法则并不完整,测试领域还有很多限定守则,而且使用这些法则时的上下文环境也很重要。也许某次测试会打破一两条法则,那也无妨,不必把它们奉为金科玉律,重要的是寻求持续改进,而非特定一次的完美。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Selenium自动化的JUnit参数化实践
作为自动化测试人员,经常会遇到这样Selenium测试自动化场景:_需要一次又一次地执行相同的测试用例,只是使用不同的输入和环境配置,从而使工作变得冗长且多余。_为了处理这种用例冗余,大多数人都会选择可以选择参数化测试。使用参数化测试,测试人员可以再次运行相同的自动化测试脚本,但使用不同的数据。参数化测试通过利用测试方法收集结
Stella981 Stella981
3年前
RobotFramework接口自动化的设计思想
自动化终极思想:以目标为导向,不断抽象沉淀,消除冗余,做到测试数据与测试代码分离1、自动化测试对人员的要求1、对测试人员的技能要求较高,需要自己写测试代码或看得懂别人的测试代码;2、需要根据版本迭代进行更新测试用例,有一定的维护成本;3、自动化能发现的缺陷数(bug)远远少于手工测试,产出低;4、自动化测
Stella981 Stella981
3年前
Parasoft cpptestcli 指令行参数配置
ParasoftCtest  是款功能非常强大的自动化测试工具,能有效提高软件开发效率和代码质量。功能特点如下:    静态代码分析和编码策略实施;  自动代码审查的图形界面和进度跟踪;  自动化的单元测试和回归测试;  代码覆盖率分析,集成通过应用层覆盖跟踪从单元级测试;  结合静态分析、单元测试、代码评审和其他
Wesley13 Wesley13
3年前
2020自动化测试岗位需求的7项必备技能(更新版)
随着敏捷和DevOps等新时代项目开发方法逐渐取代旧的瀑布模型,测试需求在业界不断增长。测试人员现在正在与开发人员一起工作,自动化测试在许多方面极大地取代了手动测试。如果您是自动化测试领域的新手,刚雇用您的组织将期望您快速,开箱即用,并能够检测到错误或提供没人想到的解决方案。但是,仅凭测试的基础知识,您将如何成为一名成功的,不同于前任的测试自动化工程师?成为
敏捷开发 敏捷开发
1年前
实践了上万次,原来这些才是敏捷测试需要遵循的原则
与传统的阶段性测试不同的是,敏捷测试能够将测试集成到整个软件开发过程中,尽早、及时地发现缺陷,帮助交付有价值的高质量产品。传统测试与敏捷测试的比较大的区别在于:在瀑布方法中,测试只能在开发结束后进行;在敏捷方法中,测试是贯穿在整个开发过程中的,同时可以在需
京东云开发者 京东云开发者
10个月前
探索Playwright:前端自动化测试的新纪元
作者:京东保险张新磊背景在前端开发中,自动化测试是确保软件质量和用户体验的关键环节。随着Web应用的复杂性不断增加,手动测试已经无法满足快速迭代和持续交付的需求。自动化测试通过模拟用户与应用的交互,能够高效地执行重复性测试任务,加快测试周期,提升测试覆盖率
京东云开发者 京东云开发者
4个月前
探索Playwright:前端自动化测试的新纪元
作者:京东科技张新磊背景在前端开发中,自动化测试是确保软件质量和用户体验的关键环节。随着Web应用的复杂性不断增加,手动测试已经无法满足快速迭代和持续交付的需求。自动化测试通过模拟用户与应用的交互,能够高效地执行重复性测试任务,加快测试周期,提升测试覆盖率
API 小达人 API 小达人
1年前
Eolink Apikit 如何进行自动化测试?零代码!无门槛!快速上手!
作为测试人员,在进行比较大的项目时,使用自动化测试能帮助我们事半功倍地完成测试工作,提高测试效率,缩短开发周期。EolinkApikit“零代码”自动化测试,帮助开发人员创建自动化测试,而不需要编写代码,是人人皆可使用的“零代码”自动化测试平台。在EolinkApikit的自动化测试应用中,所有的测试用例都是以项目维度来进行管理,一个自动化测试项目可以从多个API文档项目中引用API信息来创建API测试用例。
API 小达人 API 小达人
1年前
如何进行自动化测试,提高测试效率?
作为测试人员,在进行比较大的项目时,使用自动化测试能帮助我们事半功倍地完成测试工作,提高测试效率,缩短开发周期。EolinkApikit为测试工程师提供API文档管理、快速接口调试、测试用例管理、及自动化测试等功能。协作测试工程师快速查看API文档及变更,以及更快的进行接口测试和自动化测试工作,降低测试用例编辑成本,提升自动化测试效率。
API 小达人 API 小达人
1年前
使用 Eolink Apikit 进行 HTTP 接口测试
HTTP是互联网上应用最广泛的一种网络传输协议,所有的www文件都必须遵守这个标准。因此,在软件开发过程中,HTTP接口测试是必不可少的一环。传统的HTTP接口测试需要编写大量的测试代码,这对于开发人员来说是一项繁琐且耗时的工作。EolinkApikit是一款基于API文档的自动化HTTP接口测试工具,可以帮助开发人员快速、高效地完成HTTP接口测试。在本文中,我们将介绍EolinkApikit的HTTP接口测试流程,帮助开发人员快速入门。