软件开发技术一直在不断进步,在谈论软件开发方法时,人们越来越重视测试在软件开发中所扮演的角色。因此,为了跟上最新的软件开发技术的步伐,测试也必须紧跟技术前行的脚步。
敏捷之前
在敏捷软件开发出现之前,瀑布式开发技术是流行的软件开发模型。瀑布模型涉及从规划、设计、开发和测试开始的一系列步骤中的开发。但是,此模型的最显着特征是仅在上一个阶段完成时才执行下一个阶段。这意味着产品的测试是在最后阶段完成的。如果用户在更靠前阶段添加了某些新需求,那么剩下的唯一选择就是根据新用户需求重新开发应用程序。或者说测试人员检测到错误,那么整个过程必须迭代以找到引入错误的阶段。此外,该产品只有在完全构建后才能部署,因此要花费大量时间才能发布新版本。
敏捷开发如何工作
在敏捷中,测试和开发是通过多次迭代完成项目的。敏捷开发方法包含了持续集成、持续开发和持续部署的概念。在产品也经过连续测试的情况下,才能连续部署。更快的测试需要更快、更高效的测试方法。如果在SDLC中,开发工作以更快的速度进行,而测试却无法适应这种速度,敏捷很容易陷入困境。所以要跟得上开解开发,测试也必需要加快速度。
自动化测试
为了满足快速部署的需求,测试方法需要更少时间。例如某一款正在开发游戏程序。在第一版中,该游戏已投放市场。现在,每次更新都会向应用程序添加新功能或者修复老功能的BUG
。因此公司需要不断迭代游戏应用程序,同时保障每个新功能以及现有功能按照预期正确运行。对于如此多的功能,几乎不可能手动测试每个功能。这是自动化测试的主场以及优势。
假如能够有效地使用适当的工具,那么自动化测试可以解决各类快速测试方法问题。有多种测试工具和测试框架可用于自动化测试过程,例如:Selenium
、TestNG
、Appium
、Cucumber
、Test Studio
等。这些工具和框架需要根据要测试的软件的需求来编写测试用例。这些测试用例需要在执行连续构建时多次运行。这样可以确保所某一次构建不会产生新BUG
,这样很容进入软件敏捷开发的下一阶段。
何时应用自动化测试
- 如果要对单个测试用例进行重复测试。
- 如果测试用例非常繁琐且耗时。
- 如果必须多次使用不同的数据和条件运行测试用例
- 如果需要为不同的用户集执行类似的测试套件。
- 如果发布周期较短,节省时间是重中之重。
- 当需要在各种浏览器和环境中执行测试用例。
敏捷测试挑战
敏捷测试人员可能会面临各种挑战。下面列出了其中一些,可以通过使用适当的测试方法来克服
更早发现BUG
如果在早期发现BUG
,则更容易且更廉价地修复它。但是如果在开发周期的后期发现缺陷,则变得更加昂贵且难以修复。针对此问题有两种解决方案:可以进行后续代码审查或对源代码运行静态分析。这些自动测试的辅助工具旨在查找代码中显而易见的BUG
,强制执行编码标准和发现由于数据类型不匹配等低级错误而在产生的BUG
隐患。
API测试不足
API
测试需要高级的编码知识,因为与测试代码相关的复杂性。因此,这是因为很多时候API功能
可能没有经过正确的测试。为了确保这一点,有许多测试工具可用来检查API
的功能,而无需大量的编码技能,参考API测试基础、API自动化测试指南。
测试覆盖率不足
大多数时候由于持续集成以及与服务相关的需求不断变化,测试人员很容易错过了针对某个需求的关键测试。错过测试范围的另一个重要原因可能是对代码进行了意外更改而没有及时周知。为了确保测试所有更改的代码,需要进行源代码分析以识别更改的模块。关于测试覆盖率、为什么测试覆盖率如此重要。
频繁的构建
随着代码的每天更改和编译,受代码影响的现有功能会变得更加频繁。由于每次更改代码都需要对其进行编译和测试,这大大消耗了有限的资源,还可能造成更多的垃圾数据。
性能瓶颈
随着越来越多的功能的添加,代码的复杂性也随之增加。如果开发人员无法掌握这对最终用户性能的影响,将面临性能问题。因此,测试人员需要确定代码的哪些部分正在产生性能隐患,以及由于这些问题而导致的性能随时间的变化如何受到影响。可以使用负载测试和自动化测试工具检查这些受影响的区域,并随时间跟踪性能。
为什么敏捷开发喜欢自动化
- 更快的速度:自动化的测试为我们的开发方法引入了速度。
- 更高的ROI(投资回报率):尽管初始投资成本很高,但是由于其优势,投资回报率是长期的,并且也节省了时间。
- 可靠的部署:通过在测试过程中使用脚本,可靠性提高了很多倍。
- 并行测试:同一脚本可以在不同设备上运行,因此可以同时进行测试
- 可重用的代码脚本:开发脚本后,可以使用它多次测试软件错误。也可以在同一脚本中进行不同的更新,以将其用于最新的用户需求。
总结
自动化测试就像敏捷软件开发方法论的骨干一样,因为它具有优势。通过将自动化测试应用于敏捷,可以轻松克服敏捷所面临的挑战。