被遗漏的软件缺陷可能会造成数百万美元的损失,更糟糕的是,它会破坏用户的信任。许多质量保证(QA)工程师,无论从事手动测试还是自动化测试,都会在不知不觉中犯下影响软件质量和测试可靠性的错误。你是否也在犯这些错误呢?
一、测试的目的发现软件缺陷,而非隐瞒
QA工程师可能会遇到在用户故事或验收标准中未明确界定的意外行为。拿不准的时候,一定要记录并报告问题。清晰的报告能开启讨论之门,帮助利益相关者确定这究竟是缺陷、缺失的需求,还是预期行为。若问题复杂或不明确,应立即与上级安排会议。这可能是个真正的问题、已知问题,或是计划未来修复的问题。现在标记出来,总比之后经理质问为何没发现要好。
二、寻找有创意的方式来创建测试证据
测试证据为开发人员提供了可复现和修复问题的确凿依据。跳出常规,寻找有创意的展示方式尤为重要,特别是在复杂场景。这对理解问题根源和确保更好修复影响重大。例如:
1. 可访问性测试:证明键盘导航顺序不正确时,可使用内置屏幕键盘和Snagit等屏幕录制工具捕捉问题,而非仅依赖自动可视化工具。
2. 功能测试证据提供:使用Word文档整理带标题和描述的截图,比直接附加.png格式且文件名描述性不强的截图,更便于产品负责人审核。
3. 性能测试:用图表对比性能指标前后差异,可清晰显示趋势。既可用Grafana和InfluxDB自动跟踪,也可手动记录在Excel文档中。
三、始终要调查已发现的软件缺陷,即使你自己没有遇到过
当有人提及软件缺陷时,不要马上忽视。即便自己没遇到,也应调查确认是否为真正的问题。问题可能源于报告者设置错误,但确定根源能体现对测试系统的深入理解,就像别人说门没关,自己要再检查一遍一样。
四、避免创建与验收标准要点相同的测试用例
直接将验收标准要点用作测试用例存在诸多弊端:
1. 缺乏粒度:验收标准宽泛,测试用例需具体步骤和数据,直接使用会导致测试用例笼统。
2. 清晰度降低:测试用例应明确具体测试内容,验收标准表述可能达不到此清晰度。
3. 遗漏边缘情况:验收标准可能无法涵盖所有场景,尤其是边缘和负面测试情况。
4. 细节缺失:测试用例包含前置条件、后置条件、测试数据和预期结果,仅用验收标准作标题,无法记录这些重要信息。
五、在实施新测试时避免破坏现有测试
在添加新测试时破坏现有测试,反映出自动化工程师对细节关注和测试套件稳定性的不足。在大型团队中,测试套件维护可能耗费QA工程师高达50%的时间,不当测试会导致更多失败和调试工作。新测试应仔细集成,避免干扰现有功能。可通过在流水线中运行回归测试来验证更改。
六、自动化中良好编程实践的重要性
自动化工程师应严格对待代码。应用整洁代码原则,确保自动化脚本功能正常、可扩展且团队成员能理解。结构良好的自动化框架可减少技术债务,促进协作,提高测试套件可靠性。将测试自动化代码当作产品,AI工具如GitHub Copilot或亚马逊CodeWhisperer可提供支持,例如提高代码可读性、编写注释、检查代码异味等。
七、技术娴熟的自动化工程师仍需记录自己的工作
即便技术娴熟,若不记录实现过程,可复用函数可能被误解、误用或忽视。在共享资源(如维基百科、README文件或内联注释)中进行适当文档记录,能确保他人在需要时扩展、修复或优化脚本。知识共享对可持续高效的自动化框架至关重要,可避免知识瓶颈。若觉得文档任务繁琐,可使用GitHub Copilot、ChatGPT等工具,如自动生成函数描述、生成图表等。
八、避免过度设计可复用方法
创建可复用方法是自动化基本实践,但过度抽象会使代码难读且复杂。过度设计测试自动化会增加团队理解、复用或修改脚本的难度,降低效率。应在可复用性和简单性间找到平衡,创建既能简化测试实现,又不引入过多复杂层次的方法。结构良好、易读的自动化代码可提高可维护性,便于调试。
九、深究自动化测试失败是质量保证人员的职责
QA自动化工程师应定期查看测试报告,分析失败原因。仅称“在我的机器上能正常运行”不可接受,这反映出缺乏责任感和解决问题的心态。应承担责任,调查根本原因,与团队合作解决。有效的调试能体现专业素养,加深对系统的理解。每次测试失败都是学习和提高测试稳定性的机会。CI/CD中测试失败常见原因包括共享测试数据冲突、测试清理不当、配置更改、超时与同步问题等。深入调查问题根源,能获取关于测试框架和系统的大量知识,实现双赢。
十、及时了解质量保证行业的最新动态
QA领域不断发展,相关社区在收集新技术、新工具和新策略见解方面表现出色。通过行业杂志、博客和时事通讯保持信息畅通很有必要。此外,“两分钟规则”值得遵循,如果一项任务耗时不到两分钟,应立即去做,比如优化定位器、记录问题、填写时间表、重构代码、更新文档、运行快速测试等,这些小任务可能带来有价值的成果。