在托斯卡纳的旅行中,我敲了门,进入了列奥纳多·达·芬奇博物馆。在那里,我被列奥纳多完成的众多项目所震撼。最令我印象深刻的一个装置是[自动黄金锤炼机],特别吸引我的注意,这是专为佛罗伦萨纺织业设计的。
人类已经意识到通过自动化提高生产力的想法已经有段时间了。或者说,莱昂纳多·达·芬奇是不是远远超前于他的时代了?
现在,自动化已经成为一种趋势,不仅在制造业中发展,而且也成为数字环境中必备的资产。通过采用自动化的CI/CD管道,开发和测试变得更加优化,这也是敏捷团队的标准配置。在质量保证领域,测试自动化工程师这一新角色不断出现。自动化对质量保证行业产生了巨大的影响。随着AI驱动工具的快速发展,可能会有更多的变化即将到来……
不到10年前,在质量保证(QA)领域,自动化引起了极大的轰动:大家认为通过采用CI/CD方法,团队可以自动化任何东西,包括测试。我记得,质量保证社区对未来进行了激烈的讨论。坦率地说,空气中弥漫着不少悲观情绪。因此,测试人员由于自动化带来的角色调整,感到特别脆弱。
更短的发布周期确实需要更多的自动化工作。测试本应在所谓的“快速迭代环境”中更快地进行;否则,它会被视为开发过程中的瓶颈。敏捷团队转向自动化重复测试,例如端到端测试,以便腾出时间进行更复杂的(但仍需手动进行的)测试方法,例如探索式测试。当时最流行的自动化框架是Selenium和Cypress——它们需要一定的编程技能……这就是一直到2020年代的情况。
几年后,由人工智能驱动的自动化工具加入进来。一些甚至不需要任何编码技能(再见了,亲爱的旧朋友Selenium和Cypress!)之前,测试自动化需要耗费大量时间和精力。现在你可以借助基于AI的工具,轻松地通过录制来自动化测试。
我们能很大程度上依赖自动化吗?尽管自动化工具(包括由AI驱动的工具)非常适合基于定义需求的功能测试,但对于机器如何评估诸如易用性之类的质量属性仍然存在质疑。此外,也不清楚这些工具是否足够敏感,能够充分测试产品对不同特殊需求群体的可访问性。因此,业内专家在这些领域仍然采用手动测试方法。
此外,自动化测试还有其他限制。一旦你们团队在测试上的时间越来越紧张,依赖于一组自动化检查来确认产品可以发布,这可能会给人一种产品的质量是安全的错觉。如果测试只检查了功能A和B,而功能C和D却被忽略了呢?这种情况通常是新 bug 飞进系统的原因。
总之,对于需要人类直觉、创造力和批判性思考的测试案例,人工测试至关重要。人工测试者能发现自动化测试可能错过的实际问题和边缘情况。此外,他们可以运用判断力确保产品符合用户期望和当地规定。在需要快速探索产品各个角落时,人工测试者也更为灵活。
正如Kate Dames所提到的,手动测试既有好处也有限制:
人类善于发现不一致。他们也擅长找出问题所在。然而,技术却更擅长重复同样的工作。当人类感到厌烦、分心并对眼前的事物习以为常时,技术却在能够重复同样的工作时表现优异。
人类测试者有明显的优势,但机器可能使测试过程更顺畅。因此,自动化不应被视为保证质量的灵丹妙药。在我看来,成功的企业会在手动测试和自动化测试之间保持平衡。
不要为了自动化而自动化,自动化只是手段在规划自动化任务时,团队需要小心谨慎。最好召集你的团队,讨论哪些测试适合自动化。如果没有一个明确的自动化策略,你可能会陷入为了好看的数据而自动化的陷阱。这可能会让你的老板或相关人士印象深刻,但也会给团队带来不必要的负担。
我喜欢Iryna Suprun分享的那个想法。她提到:
“不要为了自动化而自动化,或者为了达到别人说你必须实现的自动化程度 %。尤其是当资源有限时,你不需要这样做。你唯一需要做的,就是确保你的客户喜欢使用你的软件并且公司能盈利。当你确实需要自动化某些东西时,尽可能在低层次进行自动化。如果单元测试已经足够,就不要添加端到端测试。”
而且这个想法与流行的测试自动化金字塔概念很契合。根据这个概念,测试层次越底层,自动化程度就应该越高。
说到可视化方面,我更倾向于使用倒置的测试金字塔——即诺亚·萨斯曼提出的所谓“bug过滤器”。单元测试可以在早期阶段捕获缺陷,而集成和UI(端到端)测试则会捕获它们。
这听起来有点理想化,但为什么不尝试寻找一种更好的(更智能的)自动化方法呢?越早发现 bug(例如在单元测试阶段)后续所需的返工就越少,这样就更好。
别太惊讶如果你的测试覆盖率仅包括20%的自动化端到端测试。这在某些情况下是正常的。有一次,我在一个项目中,因为多个产品组件相互依赖,自动化测试受到了限制。因此,只有可以自动化的测试被自动化。否则,那会是时间和精力的浪费。
对于一个团队来说,定义哪些产品领域风险较高也至关重要,这样可以将自动化测试的重点放在这些领域。例如,以电子商务产品为例,最关键的部分之一是订单流程。这类流程的测试非常适合自动化。
所以在估算自动化所需的资源时要明智。让我们来一次全团队的头脑风暴会怎么样?这样的会议能帮助我们确定哪些努力最有效。开发和测试人员的时间需要分配到合适的工具和流程,来满足整个团队的需求。
自动化背后其实还是有人在操作除了要决定自动化哪些任务之外,我们还应该考虑到自动测试运行的结果仍然需要人工检查,这些检查可以帮助确保测试的准确性。即使管道中的通知发出给QA工程师或开发人员,他们依然需要干预并确认是否有任何错误或回归出现。
此外,如果对产品进行任何更改,谁来维护自动化测试也是一个问题。例如,某些测试可能会变得多余,或者某些功能已经更新——这些变化需要在自动化测试套件中体现。即使是声称“自我修复”和“自我管理”的AI工具也是如此,我不会完全依赖AI。仍然需要人类来掌控这一切。
因此,重要的是要记住,总有人在自动化背后支持,并时刻监督自动化测试。管理层在分配自动化测试任务时应该考虑到这一点。
自动化的未来很难预测质量保证(QA)在未来10年或20年内会变成什么样。然而,根据一些业内人士的说法,自主测试(当前质量保证领域的一个趋势)可能会上升到一个新的层次。这表示AI驱动的机器人将会代替人类完成所有测试工作……但是等等,我们真的准备好了吗?
在我看来,无需人类参与的自动化测试是可能的。然而,可能需要几十年的时间才可能实现这一点。虽然已经开发了一些用于此目的的工具,但它们仍然缺乏人类的同理心、直觉、批判性思维和创新力。
未来,AI技术能否融入这些价值观呢?让我们拭目以待,……不过话说回来,我相信质量保证团队明天依然会为数字产品的质量改进做出贡献。
总之,我支持平衡测试法的理念:这一点是明确的,自动化不能取代人类的创造力。在敏捷团队中,重复测试应尽可能地自动化。不过,自动化测试应给团队(如果有专门负责测试的工程师)提供机会,让他们利用他们的知识和技能来处理更复杂的问题,并向左移——即用户体验(UX)。是的,我们可以通过自动化部分测试范围来优化测试流程、缩短反馈周期并提高效率。然而,一旦产品上线,对人工测试的需求将会上升。
您可以看看我的LinkedIn页面,如果您想联系我或对我背景感兴趣。作为一名有丰富经验的质量保证工程师,我准备好帮助那些寻求提升产品质量和测试的团队。
插图:由我画(使用Apple Pencil、iPad,无AI辅助)
资源如下:
- Arpita Goala, 为什么手动测试在质量保证中仍然值得努力 : https://builtin.com/articles/manual-testing-still-worth-effort-qa
- Iryna Suprun, 没有时间测试和自动化 : https://iryna-suprun.medium.com/no-time-to-test-and-no-time-to-automate-306e0b4cedc6
- Janet Gregory 和 Lisa Crispin, 测试自动化金字塔模型 : https://agiletester.ca/test-automation-pyramid/
- Kate Dames, 精益测试自动化方法 : https://medium.com/teal-times/a-lean-approach-to-automation-testing-ad6fcdcf41e3
- Kirstie Magowan, 左移测试:什么是左移测试及如何实施 : https://www.bmc.com/blogs/what-is-shift-left-shift-left-testing-explained/
- Nicholas Yaw, 左移测试的实际应用 : https://medium.com/@nicholasyaw/shift-left-testing-in-practice-aed86c909dfe
- Ruslan Desyatnikov, 保持冷静,继续测试:手动测试将永远具有必要性的原因有九个 : https://www.forbes.com/councils/forbestechcouncil/2020/03/18/keep-calm-and-continue-testing-nine-reasons-manual-testing-will-always-be-in-demand/
共同學習,寫下你的評論
評論加載中...
作者其他優質文章