首页 > 其他分享 >测试工程师必知的10大测试法则

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

时间:2024-01-15 09:33:25浏览次数:18  
标签:10 功能 法则 必知 用户 测试 团队

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

——爱德华·戴明

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

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

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

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

 

1.人人皆测试

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

 

2.度量风险而非覆盖率

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

 

3.测试的是“金钱”想要什么

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

 

4.广度比深度更重要

浅层测试产品的所有区域比深层测试产品的某些区域更重要。业务逻辑的深度、多元组合旨在找到最模糊的边缘案例:这可能会在其他高优先级领域遗漏更明显的缺陷。一旦达到了广度,那对某个特定功能的深度是多少?请参考法则2。

 

5.唯一完美的信号是用户的信号

在你的用户与你的软件交互之前,你所做的一切都是理论性的。

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

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

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

 

6.代码在可测试(并经过测试)之前是不完整的

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

 

7.每项测试都应导致明确的行动

如果不知道当测试失败时该怎么办(无论是从测试的角度还是从产品的角度),那么测试就没有提供价值。这通常是由于测试步骤太多,或者产品没有提供足够的失败信息(包括没有充分的可测试性,参照法则2。)

 

8. 始终测试高层级

软件测试有“层”(从高到低):生产、UAT、功能、集成和单元。

高层测试对于强制不同团队开发的不同组件之间的交互至关重要,但边缘案例的细节可能会向下移动到较低层。这些较低层测试具有较少的依赖性,避免了昂贵的管道配置/编排,并且运行速度比较高层测试更快。

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

 

9.从不链接测试

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

 

10. 首选最紧密的反馈回路

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

 

写在最后

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

标签:10,功能,法则,必知,用户,测试,团队
From: https://www.cnblogs.com/chenqiAaron/p/17964697

相关文章

  • 阿里又开发了一款 IDEA 新插件,开发效率提升了 10 几倍!好用到爆!!
    大家好,我是R哥。昨天,我在我的《Java技术小密圈》知识星球分享了《JavaAI辅助编程工具推荐》:帮我智能辅助写代码,开发效率至少提升了10倍,有兴趣的可以加入学习交流,持续分享技术干货,之前一直是199的,为了做大,目前99元优惠中,满3000人持续恢复原价……说到AI辅助工具,市......
  • Visual Studio 2010 授权修改
    参见以下步骤:32位的系统中,修改以下注册表键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Registration\UserNameHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\RegisteredOrganization64位系统,修改以下注册表键值HKEY_LOCAL_MACHINE\SOFT......
  • 11.10
    《程序员的修炼之道:从小工到专家》的第三章节主要探讨了“技术深度与广度”的问题。这一章节强调了技术深度和广度对于程序员的重要性,以及如何在这两个方面取得平衡。首先,作者指出技术深度是程序员的核心竞争力。只有深入理解某个领域的技术,才能更好地解决相关问题。因此,程序员需......
  • P10058 Reverse and Rotate题解
    简单题意一共3个操作:rev:将字符串翻转。>\(x\):将后面\(x\)个字母移到前面。<\(x\):将前面\(x\)个字母移到后面。解法解法一看到#1到#3的范围可以打出暴力程序,按题意模拟,时间复杂度\(O(n|S|)\)。预计\(30\)pts。解法二很明显,第二个操作和第三个操作有点像......
  • 10.13
    今天我对斐波那契数列进行了深入的学习,理解了其基本概念和应用,包括斐波那契数列的定义、递归和非递归算法的实现等。通过编写代码,我实践了这些应用,对斐波那契数列有了更深刻的理解。然而,在处理复杂的斐波那契数列问题时,我意识到自己在理解和应用斐波那契数列的性质方面还有待提高......
  • 10.12
    今天我对二叉搜索树进行了深入的学习,理解了其基本概念和操作,包括节点的定义、插入、查找和删除等。通过编写代码,我实践了这些操作,对二叉搜索树有了更深刻的理解。然而,在处理复杂的二叉搜索树问题时,我意识到自己在平衡树和高效查询方面还有待提高。如何选择合适的旋转策略来平衡树......
  • 10.16
    今天我主要学习了Java中的异常处理知识。通过编写一个简单的程序,我了解了如何使用try-catch语句来处理异常,以及如何使用finally语句来确保资源的正确释放。此外,我还了解到使用二分法查找可以优化多次比较的算法,提高程序的运行效率。在实践中,我遇到了一些困难。例如,在Web界面中实......
  • 10.17
    异常捕捉 publicclassCatchWho{publicstaticvoidmain(String[]args){try{try{thrownewArrayIndexOutOfBoundsException();}catch(ArrayIndexOutOfBoundsExceptione){Syst......
  • 10.19
    继承 publicclassParentChildTest{publicstaticvoidmain(String[]args){Parentparent=newParent();parent.printValue();Childchild=newChild();child.printValue();parent=child;parent.printValue();......
  • 10.11
    今天我对堆进行了深入的学习,理解了最大堆和最小堆的基本概念和操作。我通过编写代码实践了堆的创建、插入和删除等操作,这让我对这些知识点有了更深刻的理解。明天我计划进一步探索堆的高级应用,尝试解决实际问题并编写一个简单的堆程序。在处理复杂的堆问题时,我发现自己在构建和管......