logo Parasoft 行业资讯(二) 我也要发布文档

如何通过5个步骤快速实现质量


敏捷和DevOps通常是作为一种以更少的资源来更快地完成软件的方式而出售的。但是质量呢?在本文中,学习如何通过连续测试快速实现质量。

每个人都想要质量更高,速度更快的软件。从竞争加剧和市场压力,功能和复杂性增加到对产品质量、安全性和可靠性的更高期望,对现代软件开发团队的需求是巨大的。敏捷开发方法之所以经常被人们追捧,是因为它有望对变化做出更好的响应,并更好地满足客户需求。

但是,敏捷和DevOps经常被作为一种用更少的资源来更快地完成软件的方式而出售,尽管这并不是故意的。实际上,随着多达70%的IT项目失败或未达到目标,精明的开发团队正在寻求改善其开发实践,以便他们不仅可以成功完成项目,而且可以为未来的迭代和产品创建可重复的流程。在本文中,我们将讨论如何实现敏捷和迭代方法所需的敏捷性,而不仅要获得最终产品,还要达到和超过质量和安全性目标的产品。


持续测试是快速质量的答案

事实证明,测试既是问题所在,也是更快地获得更好质量的解决方案。在敏捷过程中,可以缩减许多开发步骤,以便创建合理的功能来进行设计和实现;但是,集成新功能存在风险,测试范围尚不清楚。正如我在上一篇文章中谈到的那样,测试是软件团队在采用敏捷方法时费劲的关键原因之一。团队失去了他们追求的敏捷性,因为他们陷入了过多或不足的测试困境。

持续测试被视为解决采用DevOps和敏捷开发的软件团队所面临问题的解决方案。 Wikipedia将持续测试定义为“……作为软件交付管道的一部分执行自动测试的过程,以获取与候选软件版本相关的业务风险的即时反馈。”尽管定义简单明了,但随着时间的推移进行连续测试并对其进行优化是完全另一回事,而这就是我今天将重点介绍的内容。


将您的冰淇淋蛋筒变成金字塔

理想的测试金字塔定义了在项目上投入时间和精力的最佳位置。在理想的金字塔中,您将宝贵的时间和精力投入到金字塔基础上的全面的单元测试套件中,该单元测试由API和服务测试支持,而在金字塔的顶部,数量较少的系统和基于GUI的测试。

但是,这个金字塔经常被倒置为所谓的冰淇淋蛋筒。团队在易碎和复杂的系统级GUI测试上花费了很多时间和精力,这些测试需要实现和集成完整的功能-导致在SDLC的早期阶段无法连续执行测试。成功进行连续测试的关键是融化冰激凌,并专注于创建可在开发人员实施新功能时连续执行的自动化单元和API测试。



通过连续测试快速实现质量的五个步骤

1.建立单元测试的基础

通过自动化创建,执行和维护测试的过程,为单元测试奠定基础。只有使单元测试的工作更易于创建和维护,开发团队才能对所有组件采用项目范围内的单元测试。

在测试创建、执行和管理中均采用测试自动化,从而扩展了当前的单元测试套件,以包含尽可能多的产品代码。

2.避免依赖后期UI中心测试

避免依赖于后期的、脆弱的、以用户界面为中心的测试,这只会导致诊断和修复最耗时,最昂贵。与其专注于自动化所有手动测试场景,不如为单元和API测试打下坚实的基础,以确保与UI进行通信的体系结构首先是牢固的。

尽管系统级测试仍然很重要并且是必需的,但它不应该是第一位的。现在也不是时候发现关键的体系结构、性能和安全性问题。软件团队可以通过建立单元和API测试的坚实基础来减少对这些UI和系统测试的依赖。通过遵循此处的其他建议,应在系统级测试开始之前对许多系统进行充分的验证。

确保还使用静态分析来分析整个代码库,包括旧代码和第三方代码,以帮助检测测试可能遗漏的错误和安全漏洞。静态分析对于执行项目编码标准也很重要。

3.了解整个测试金字塔的代码覆盖率

了解整个金字塔的上下代码覆盖范围以及对需求/用户故事的可追溯性,因为没有它,开发团队就不会真正知道测试过什么和没有测试过什么。另外,不了解测试范围意味着不知道要在金字塔的每个级别上测试什么,这意味着即使是很小的更改也需要进行大量测试,这会使整个过程陷入困境。请参阅我以前的有关基于变更的测试的文章

4.通过服务虚拟化向左移动

利用应用程序依赖项的服务虚拟化,可以在开发生命周期的更早阶段进行自动化API测试。自动化程度的提高和漏洞的早期发现对于成功至关重要。提早进行API测试有助于发现系统的关键方面,例如性能和体系结构健全性。这也是安全测试的重要阶段。

5.利用变化影响分析来加速敏捷

通过基于每个构建的变更影响分析来加速敏捷开发,以了解每次新迭代引入的风险的详细信息。变更影响分析提供的分析对于使测试仅集中于绝对需要测试的内容而不是其他方面使用的shot弹枪方法至关重要。

只有通过基于数据的明智决策,才能进行真正的连续测试。使开发团队专注于最少的测试集,以确保每次迭代都覆盖适当的范围,这是使敏捷性回归敏捷开发方法的关键。


改善之路

毫不奇怪,最好的入门方法是检查测试金字塔,然后评估项目当前的位置。是否有基于每个构建运行的自动化单元测试的坚实基础?是否有尽可能多的产品API经过自动化测试?是否使用虚拟化?测试是否依赖于一套复杂的手动UI测试套件,这些套件要等到系统即将完成后才能运行?改进之路基于构建适当的测试金字塔,自动化以及数据收集和分析。


现代软件开发团队承受的巨大压力使按时按规范构建产品变得困难。诸如敏捷开发之类的新开发方法已帮助团队专注于为客户构建正确的东西,但是项目仍为时已晚且容易出错,而测试是继续困扰现代开发方法的开发的关键方面。要获得重大改进,请采用自动化单元测试的坚实基础,并尽早(通常通过服务虚拟化)执行API测试。而且不要忘记,通过使用来自高级软件测试分析的数据来驱动测试管理,测试结果会大大改善。