软件测试分析左移方法
这样,你如何左移呢?为了简洁起见,左移测试方法分解成两个主要的活动:提供开发和测试最佳实践,借力服务虚拟化以确保持续性测试。 做更早阶段的开发实践,比如静态代码分析和单元测试,有助于你在这个流程中更早地识别和防止缺陷。重要的是记住找问题不...
这样,你如何左移呢?为了简洁起见,左移测试方法分解成两个主要的活动:提供开发和测试最佳实践,借力服务虚拟化以确保持续性测试。
做更早阶段的开发实践,比如静态代码分析和单元测试,有助于你在这个流程中更早地识别和防止缺陷。重要的是记住找问题不是目标,而是减少问题的数量,尤其是那些赶上发布的。最后,首先制造更少的问题比找更多的问题还有价值得多——并且它更低廉得多。看以下的图表,在左边有个可爱的减少的泡泡。
编码标准是软件工程标准的等价物,而且它们是减少问题容量(除更早地找到问题外)的钥匙,并且从你的左移活动中获得更多的价值。编码标准帮助你避免坏的、危险的或者是不安全的通过静态代码分析的代码。
为了软件的安全性,尤其重要的是加强你的软件。你想要在你的代码里创建安全性,而不是测试它。代码标准让你从开始去构建一个更安全的应用(比如通过设计使它安全),这既是一个好的想法也是一个需求,如果你服从于比如通用数据保护条例的规则。
接下来,你必须执行在所有开发流程阶段的测试,包括晚期,并持续向前地执行它们。对团队来讲重要的是在开发流程的自始至终采取敏捷开发实践去提供持续的反馈。单元测试能简单地被持续执行但是晚期功能测试执行的左移通常很困难,因为外部系统独立性。这就是你能借力服务虚拟化使能够持续测试的地方。
服务虚拟化使你能够模拟可能有限能力的独立系统,比如主机、第三方服务,或者可能还没有准备好的系统。通过模拟它们,你可以在还没有完整系统可用时执行功能测试,并且你能一直在桌面端开发中左移测试执行。
在性能测试的术语里,服务虚拟化使你能够在每件事都准备好之前测试,并且不用有一个每一东西都在系统里的完整的实验室。你甚至可以运行所有种类的“什么——假如”场景,就像假如智慧云快而数据库慢(在真实世界里很难发生的一些事)运行什么?或者我的服务器开始抛出可笑的错误,就像500错误——那将会如何影响系统的性能?你可以随你喜欢并超越地推动你的系统坚固,而且尽可能早地做这个。
类似地,你可以更早地开始你的安全测试。从物理系统中去耦合允许你做甚至更有趣的一些事:使仿真的系统以一个恶魔的方式行动。代替只为污染的数据捅你的系统和分布式拒绝服务攻击,你可以有一个充满包、发送有缺陷的数据的系统,或者很多其他普遍被攻击者使用的漏洞。所以你不仅可以测试地更早,你还能测试地可能比一个测试实验或产品系统更深入。
避免错误和陷阱
在转移到代码阶段进行缺陷检查的一个危险是意外地在软件开发者们身上放太多测试负担。当你看图表时需要记住的重要的事情是当你向右去时缺陷修复的成本变得大幅高,在左边的资源可能在任一软件生命周期里有最高的成本——更不用说你正在把他们从专注于开发功能性中抽走。
你不仅想要更早地找到问题,你想要减少你首先放进程序里的缺陷的数量。
而且那有另一个陷阱:假如你正在奖励找到和修复问题的人们,现在他们将找到更少的——这是你真正想要的,但是仅仅假如你确实减少了你正在制造的问题数量。度量缺陷数量使它赶上场可能是更有用得多的测量。
改进你的流程和产品
通过借力于现代软件测试技术,你能获得安全的、可靠的和保密的软件。通过在软件开发生命周期里左移测试,你能通过更早地找到问题而减少测试的成本,当它低廉时,同时当你首先放进代码的问题的数量减少时。尝试这个方法去节省时间、金钱和头痛之事。