作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
在软件开发生命周期中, 质量保证(QA)通常是代码发布前的最后一步——几乎是事后才想到的. 正因为如此, 它通常也是资源不足的, 人口不足, 流程, 工具, 并将时间投入其中. 这可以用a来证明 2022年卡塔隆报道, 哪个调查超过3个,000名软件专业人员,发现只有大约一半的受访者对他们团队的QA工作感到满意. 这并不奇怪, 然后, 67%的受访者表示他们的主要软件质量目标是改进QA过程和实践.
质量保证通常不是 产品经理,但我认为应该是这样. 在产品团队中,没有人比他更有能力确保 产品愿景 交付时没有任何问题会让你的客户付出代价——或者更糟,导致你的公司付出代价 失去市场价值.
在理想的情况下, QA应该贯穿于整个产品生命周期, 产品经理应该带头. 在我25年的工作中, 我发现下面的QA最佳实践和技巧——无论使用什么过程都可以实现——可以产生更高质量的代码和更满意的客户.
定义高质量软件的主要有四个方面:
客观的 | 属性 |
---|---|
功能 | 软件做它想做的事情. 例如, 如果你在设计费用管理软件, 它应该正确地计算诸如税收和总数之类的东西. QA测试计划应该涵盖所有的功能测试, 理想的情况是采用自动化的方式, 这样,任何新引入的代码都不会导致现有的函数中断. |
可用性 | 用户体验应该简单、直观、高效. 该软件还应该始终表现良好. 费用管理系统, 通常在周五或周一使用,当人们提交费用报告时, 即使在这些高使用率时期也应该表现良好吗. 性能测试应该作为完整QA计划的一部分. |
可靠性 | 软件应按预期运行,无错误. QA测试的一个重要方面是涵盖尽可能多的潜在错误和边缘情况, 这样软件就可以应付任何情况. 例如, 它应该知道如何处理输入为负数而不是正数的费用. |
安全 | 软件必须安全,保护用户数据. 这对于基于消费者的软件和商业企业软件都是关键. 投资于良好的渗透测试和其他安全测试是至关重要的. |
产品经理应该促进整个团队的心态和态度的转变,以建立和维护一种能够创建高质量软件的文化. 以下QA最佳实践既包括总体原则,也包括更具体的想法,这些想法能让你快速获得支持,并推动你走向强大的QA.
推广高质量的软件,并投入资源以确保良好的QA. 当我还是一家初创公司的产品主管时, 我得到了雇佣一个小型QA团队并获得必要的测试自动化软件的预算. 我强调要与工程团队建立良好的关系,以便我们能够调整设计, 发展, 发布过程 纳入QA闸门. 有了对QA的投资,我们能够更快地制作软件,并减少问题.
QA不仅仅是QA团队应该考虑的事情——它始于产品经理通过一组详细的需求和全面的验收标准来定义产品. 在我早期的产品管理生涯中,我学会了放慢速度,考虑用户可能犯错误或误解功能的所有潜在方式. 写a很容易 产品要求文档 (PRD),侧重于最佳路径或默认场景, 但一个好的PRD也应该包括错误和边缘情况, 这样你就可以建立最直观的体验. 从开发的早期阶段开始,在你的团队中灌输这种QA思维方式,可以带来更高质量的软件.
此外,实施 测试驱动开发 (TDD)方法可以非常有效地促进QA心态. 而非tdd团队则会先编写代码,然后再编写测试用例, 这通常会导致代码的重做, TDD意味着测试用例作为需求的一部分预先编写,并在整个开发过程中不断使用,以确保代码在发布之前通过所有测试.
测试结果应该被很好地记录下来,特别是当测试失败时. 一个清晰的过程——包括能够快速无缝记录测试结果的工具, 哪些是自动路由到开发人员的—将帮助产品团队更有效率.
在每个开发阶段,设置QA里程碑. 问题越早被发现,解决它所需要的干扰和努力就越少. 建立开发中期QA集成测试, 例如, 意味着代码可以集中在一起进行测试,以便在构建最终的候选版本之前发现问题或失败.
自动化测试和bug报告工具对于快速生成高质量的软件是必不可少的, 特别是在持续集成和持续交付环境中,它们节省了大量时间. 我经常使用Jira插件,比如 x光 or 西风规模,以帮助管理QA测试用例.
还有人工智能工具, 哪些是最近可用的, 可以帮助QA的某些领域, 例如使自动化测试的维护更容易. 许多自动化测试依赖于识别屏幕元素的单一方法, 比如它的名字或位置. 目前, 如果开发人员移动或重命名屏幕元素, 自动测试将失败, 尽管功能保持不变. 与人工智能, 可以使用更多的属性来标识屏幕元素, 在没有测试失败的情况下启用更改. 然后, 随着时间的推移, AI会学习依赖哪些属性来准确识别屏幕元素.
另一个领域 AI可以协助QA工作 是自主测试. 您可以通过向AI展示用户如何在生产环境中浏览您的应用程序来训练AI. 然后,AI创建模拟普通用户流程的自动化测试脚本. 这, 结合自动化测试的维护, 意味着您可以用更健壮的测试获得更高的覆盖率,而需要更少的维护. 看看基于人工智能的测试工具,比如 Appvance, SauceLabs, Testim.
结对编程——一种常见的编码实践,即一个开发人员编写代码,另一个进行审查——可以帮助在引入错误之前捕获它们. 即使是作为产品经理, 我经常发现让同事检查我的需求文档很有帮助, 例如. 在每个阶段实施同行评审,甚至在发现和 设计阶段,可以帮助创造出更强大的产品. 让QA团队的人来检查你的产品的验收标准可能是个好主意 用户故事 确保它们清晰完整.
用于在多个平台上运行的软件, 比如web, iOS, 和安卓, 应该在所有平台上进行测试,甚至在不同版本的操作系统和浏览器上进行测试. 特定负载测试对于确定在峰值负载下是否存在显著的性能下降非常重要. 使用新浏览器, iOS, Android版本在不同的时间发布, 定期运行测试非常重要,而不仅仅是在您自己的应用程序发布周期中运行测试. 最近,当一个新版本的Android出现,导致我们的Android应用程序无法下载,因为我们没有升级它时,我以惨痛的方式吸取了这一教训.
在落实QA流程之后, 确保你定期评估它, 注意哪些方面在工作,哪些方面没有工作, 以及如何改进. 冲刺之后, 开发团队通常会举行回顾会议, 反思在迭代中发生了什么,并确定下一步的改进行动. 为整个QA流程和程序召开类似的会议, 或者将QA评估纳入现有的回顾中.
为了生产出高质量的软件,在QA上投资是至关重要的. 作为产品经理,您可以立即采取一些步骤来指导这项工作:
通过优先考虑QA,并尽早将这些技术构建到你的产品过程中, 你们的产品质量无疑会更高. 最终,这不仅将使您的团队能够继续工作 新的创新, 而不是修复bug, 它还将使你作为产品经理更快地实现你的产品愿景.
良好的质量保证(QA)意味着在产品开发过程的早期就开始QA过程,并在产品生命周期的所有阶段继续集成它们. QA不应该被视为一次性的活动——它需要持续的努力和奉献.
理想的QA过程首先通过一组详细的需求和全面的验收标准来定义产品, 然后考虑潜在用户可能犯错误或以错误方式解释功能的所有方式. 使用测试驱动的开发方法(例如.g., 编写测试用例作为需求的一部分,并在整个过程中持续使用这些测试用例是非常有效的.
Some QA best practices for 产品经理 include documenting test results clearly; setting up regular milestones; leveraging automation 和 AI 工具; implementing a peer-review process; testing across multiple devices 和 at peak loads.
世界级的文章,每周发一次.
世界级的文章,每周发一次.