现代软件开发流程中,测试是不可缺少的一环。传统的手动测试需要开发人员付出极大的时间及精力,重复执行测试行为。为适应现代快速变化的技术环境,您需要了解一下自动化测试。
阅读本文,您将了解到什么是自动化测试、它与手动测试的不同、实施自动化测试的策略、对于自动化测试的常见误解以及如何开始自动化测试。
龙智作为DevSecOps研发安全运营一体化解决方案供应商、SmartBear中国授权合作伙伴,持续关注自动化测试领域的动态与发展,致力于将优秀的测试工具引入中国,助力提高软件开发的测试效率与质量。立即联系我们,了解自动化测试工具的原型建议与最佳实践。
软件行业的大多数人都知道,手动测试和自动化测试之间存在着明显的差异。手动测试需要花费时间和精力来确保软件代码能完成它们的目标。而且,手动测试人员必须记录他们的发现,以及检查日志文件、外部服务和数据库是否存在错误。如果您熟悉手动测试,就会知道此过程可能非常耗时且循环往复。
手动测试和自动测试之间的根本区别十分明显。在手动测试中,一个人负责以用户的方式单独测试软件的功能。而自动化测试是通过自动化工具完成的,因此,您可以将更多时间花在更高价值的任务上,例如探索性测试,同时您也可以自动化一些耗时的测试,例如回归测试。虽然确实需要花时间维护测试脚本,但是,您的收获是增加了测试覆盖率和可扩展性。
手动测试的好处在于,如果自动化测试有遗漏的部分,可以通过手动排查找出。自动化测试则非常适合大型、需要反复测试相同区域以及已经通过初始手动测试过程的项目。
实施金字塔自动化测试策略
向敏捷转型后,很多团队会采用金字塔测试策略。自动化测试金字塔策略要求在三个不同级别上自动化测试。单元测试代表了这个自动化测试金字塔的基础,占最大的百分比。接下来是服务层(service layer)或API测试。最后,GUI测试位于顶部。金字塔是这样的:
集成了GUI和API测试的解决方案,例如TestComplete,可以使实现自动化测试金字塔的过程更容易,因为它确保了对API测试用例所做的更改会自动反映在GUI级别上。
谁会参与自动化测试?
在较短的敏捷迭代中进行测试,通常需要使用“左移”方法。敏捷开发过程中的这种左移意味着在应用程序生命周期的早期开始测试。因此,这需要专业技能高超的开发人员对测试负责,他们将经常与测试人员一起工作,创建自动化测试框架。
在评估测试解决方案时,最重要的是拥有一种工具,能满足测试过程中所有参与团队的需求,这些需求包括:
- 手动测试人员:记录和回放对于手动测试人员来说至关重要,尤其是那些不熟悉自动化的人。在跨多个环境识别和修复问题时,带有各种输入数据的同一记录脚本能派上用场。
- 自动化工程师:对于自动化工程师来说,对脚本语言的强大支持、与CI系统的集成以及轻松扩展测试的能力都很重要。
- 开发人员:在开发过程中实施测试,需要具备在Eclipse和Visual Studio等IDE中进行测试的能力。
关于自动化测试的常见误解
前文已经介绍了自动化测试是如何工作的,以及会涉及哪些人员。现在,来仔细看看关于自动化测试的一些常见误解:
- 自动化会提供更多的空闲时间
有人认为自动化测试会给您带来更多的空闲时间,这个观点即是正确的,也是错误的。在手动测试中,大部分的时间都用于探索性和功能性测试,您需要手动搜索错误。一旦该过程完成,手动测试人员必须再次重复执行相同的步骤。有了自动化测试,这方面花费的时间就大大缩短了。相反,自动化测试人员的工作是对测试进行编码,并在需要调整时反复改进这些测试。然而,一旦测试完成,自动化测试就能循环使用测试,这样他们就不用反复了。所以,手动测试人员花在高重复性任务上的时间,自动化测试人员花在了更大、更重要的问题上。 - 自动化测试的成本太高
起初,在自动化测试的投资看起来成本高昂,尤其是如果您是一家较小的公司。但分析表明,随着时间的推移,自动化测试能够收回成本。自动化测试让您可以专注于更大的问题,例如客户需求、功能和改进。自动化测试还减少了成本和多次修改代码的需求,因此随着时间的推移,投资会得到回报。此外,每次修改源代码时,都可以重复的进行软件测试。手动重复这些测试既昂贵又耗时,但自动化测试可以一遍又一遍地运行,无需额外成本。查看自动化测试投资回报率的另一种方法是并行测试。并行测试能够同时运行多个自动化测试,而不需要一个接一个地运行单个测试,这大大减少了您执行自动化测试所需的时间。 - 自动化测试比手动测试更好
事实上,在自动化测试与手动测试的辩论中没有“更好”或“更差”,只有“不同”。每种方法都有其自身的优缺点。手动测试由人工通过SQL和日志分析仔细检查应用程序、尝试各种用法和输入组合、将结果与预期行为进行比较并记录结果来执行。自动化测试通常使用于初始软件开发完成后。手动测试通常会避免一些冗长测试,自动化测试则可以让它们在无人看管的情况下,甚至是在不同配置的多台计算机上运行。
最后,手动和自动的测试都是有用的,特别是当您正在开发的软件太大、太复杂,无法仅仅依赖手动测试方法时。
- 自动化测试影响了人与人之间的互动
关于自动化测试的另一个常见误解是认为它影响了人与人之间的互动。老实说,这种误解可以理解,因为在没有大规模人为错误的情况下,自动化测试比人类做的更快更明确。也就是说,像TestComplete这样的产品是为了促进协作而设计的,它的功能中有一项是让同事编写测试代码中的某段并对脚本进行评论。
所以,这并不会取代软件开发中必要的面对面交流。相反,它通过提供另一个沟通渠道来增强了面对面交流。你可以这么想——电子邮件并没有取代电话,它只是一个可用于交流的附加工具。SmartBear的TestComplete等工具也是如此——它们不是面对面交流的替代品,而是改善交流的一种方式。
开始自动化测试的旅程
建立一个成功的自动化测试策略并不容易,并且方法会因团队而异。没有哪个团队与另一个团队是完全相同的。有些团队可能手动测试人员比自动化工程师更多,而有些团队可能已经左移了,他们依赖开发人员来完成繁重的工作。预算、截止日期、应用程序类型和开发模型都是影响着自动化测试策略应该如何实施的因素。
使用TestComplete进行自动化测试
有了TestComplete这样的工具,从手动测试演变到自动测试不再困难。通过让您查看您在生成测试代码或管理测试时的每一个操作,手动测试人员能够边学习边调整。在使用自动化测试工具和技术后,手动测试已被证明是一种有效的、对软件进行双重检查的方法,可用来帮助确保万无一失。从这个意义上说,手动和自动化测试是齐头并进的,如果使用得当,就能确保最终产品趋近于完美。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。