最近人们谈到测试,常常会听到:测试其实很复杂,所以很有前途。但具体怎么复杂却不尽其详。我觉得这篇我在微软内部测试架构师站点里读到的,Jim Moore 关于测试领域中有待解决的难题的文章很有启发。读过之后,静心想想,技术含量如何?好像蛮高的?呵呵,也许吧。这其中有些在微软已经解决了,有些却也是没有解决的。突然发现,测试技术对一个公司来说好像还蛮秘密的,微软很多内部测试工具测试框架都不产品化,虽然那些工具看起来是可以普遍运用到业界的。
测试领域中的难题涉及多个方面,包括质量衡量标准、测试覆盖率、效率定义、自动化测试、集成测试、项目计划以及团队协作等。以下是对这些难题的详细阐述:
1. 质量衡量标准:测试中需要明确如何量化产品质量。例如,测试覆盖率(代码块覆盖、功能覆盖、用例覆盖)各有其合理目标,但确定这些目标的标准并不统一。同时,根据缺陷发现来源(用户、非测试团队、测试团队)和回归性缺陷数量来评估质量也是关键。
2. 发布质量指标:制定合适的发布标准至关重要,它们应能够指导是否立即发布或延迟至满足特定指标。这需要权衡各种衡量标准与产品质量之间的关系。
3. 测试效率:定义测试效率包括考虑变更对测试的影响。如何衡量并优化测试流程,确保测试资源的有效利用是另一挑战。
4. “完成”测试的定义:何时可以认为测试工作已完成,通常需要综合考虑覆盖率、风险和时间限制。
5. 复杂领域测试:对于如音频和视频质量这类主观判断的测试,需要找到客观的评估方法。此外,测试工具自身可能对系统造成的影响(如性能测试工具对硬件性能的消耗)也需要关注。
6. 测试范围与组合:随着测试要素的增加,组合测试的数量迅速膨胀,如何选择关键组合进行测试成为一个难题。
7. 时间相关性测试:对于依赖时间条件的产品,如何穷举所有可能的时间场景进行测试是一项挑战。
8. 整体产品测试:包括压力测试和性能测试,需要确保整个产品在不同环境下的表现。
9. 测试集优选:选取测试用例的策略多种多样,可能基于时间、进度、用户反馈或投资回报率等因素。
10. 项目计划与安排:准确估计测试时间,并确保测试团队在项目计划中的有效参与,特别是在敏捷开发环境中。
11. 测试影响与决策:在要求修复缺陷时,如何有力地提出论据,以及在设计阶段就考虑到可测试性,都是测试团队面临的挑战。
12. 自动化测试:自动化测试的维护成本高,如何有效地模拟人类感官(如音频/视频测试),以及如何处理产品代码中缺乏自动化测试接口的问题,都是自动化测试领域亟待解决的问题。
13. 集成测试:自动化集成测试的实施,调试责任的分配,以及确定集成测试用例的选择,都需要细致考虑。
14. 长期维护:随着版本更新,测试代码可能变得庞大且难以维护,设计良好的测试架构和避免冗余测试用例是持续关注的重点。
15. 人才保留:吸引和留住经验丰富的测试人员,保持团队的专业性和稳定性,对测试领域的长远发展至关重要。
这些难题反映出测试领域的复杂性和多样性,解决这些问题需要跨学科的知识、创新的方法以及有效的团队协作。随着技术的发展,测试领域的挑战也会不断演进,要求从业者持续学习和适应新的变化。