许多编程组越来越依赖于自动化测试,特别是那些使用测试驱动开发的组。有许多框架可以编写测试,每次将代码输入版本控制系统时,连续集成软件都会自动运行测试。
虽然自动化不能重现人类所能做的一切(以及他们所认为的所有方式),但它对回归测试非常有用。但是,为了真正有用,它确实需要一个精心开发的测试套件的测试脚本。
虽然手动测试可能会在软件应用程序中发现许多缺陷,但这是一个费时费力的过程。此外,它可能无法有效地发现某些类型的缺陷。测试自动化是一个编写计算机程序来进行测试的过程,否则就需要手动完成这些测试。一旦测试实现了自动化,它们就可以快速运行了。对于维护寿命长的软件产品来说,这通常是最划算的方法,因为在应用程序的生命周期中,即使是很小的补丁也会导致在早期工作的特性中断。
测试自动化一般有两种方法:
·代码驱动的测试。对类、模块或库的公共(通常)接口使用各种输入参数进行测试,以验证返回的结果是否是正确的。
·图形用户界面测试。测试框架生成用户界面事件,如击键和鼠标单击,并观察导致用户界面的变化,以验证程序的可观察行为是正确的。
测试自动化工具可能很昂贵,而且通常与手动测试结合使用。从长远来看,它可以实现具有成本效益,特别是在回归测试中重复使用时。
自动生成测试用例的一种方法是通过使用系统的模型进行测试用例生成来进行基于模型的测试,但研究将继续进行各种替代方法。
自动化是什么,何时自动化,甚至是否真的需要自动化,这些都是测试(或开发)团队必须做出的关键决策。选择产品的正确功能,在很大程度上决定了自动化的成功。应避免自动化不稳定的特性或正在进行更改的特性。
代码驱动测试
软件开发的一个日益增长的趋势是使用测试框架,如xUnit框架(例如,JUnit和NUnit),允许执行单元测试,以确定代码的各个部分在各种情况下是否按预期发挥作用。测试用例描述了需要在程序上运行的测试,以验证程序是否按预期运行。
代码驱动的测试自动化是敏捷软件开发的一个关键特性,其中它被称为测试驱动的开发(TDD)。在编写代码之前,需要先编写单元测试来定义该功能。只有当所有测试都通过时,该代码才被认为是完整的。支持者认为,它生产的软件比通过人工探索进行测试的代码更可靠,成本也更低。它被认为更可靠,因为代码覆盖率更好,而且它在开发过程中不断运行,而不是在瀑布式开发周期结束时运行一次。开发人员在进行更改时立即发现缺陷,而修复缺陷的成本最低。最后,代码重构更安全;将代码转换为更简单的形式,代码重复更少,但等效的行为,不太可能引入新的缺陷。
图形用户界面(GUI)测试
许多测试自动化工具提供了记录和回放功能,允许用户交互式地记录用户操作,并回放任何次数,并将实际结果与预期结果进行比较。这种方法的优点是它需要很少或不需要软件开发。这种方法可以应用于任何具有图形用户界面的应用程序。然而,依赖于这些特性就带来了主要的可靠性和可维护性问题。重新标记一个按钮或将其移动到窗口的另一部分,可能需要重新记录该测试。录制和回放还经常添加不相关的活动或错误地记录一些活动。
这种类型的工具的一个变体是用于对网站的测试。这里的“界面”是网页。这种类型的工具也需要很少或不需要软件开发。然而,这样的框架使用了完全不同的技术,因为它是读取html,而不是观察窗口事件。
另一个变体是无脚本的测试自动化,它不使用记录和回放,而是构建被测试应用程序的模型,然后允许测试人员通过简单地编辑测试参数和条件来创建测试用例。这不需要任何脚本技能,但具有脚本方法的所有能力和灵活性。测试用例维护很容易,因为没有代码需要维护,而且由于被测试的应用程序会更改,因此可以简单地重新学习或添加软件对象。它可以应用于任何基于gui的软件应用程序。
要测试什么
测试工具可以帮助自动化任务,如产品安装、测试数据创建、GUI交互、问题检测(考虑配备了oracles的解析或轮询代理)、缺陷日志记录等,而不一定是以端到端方式自动化测试。
在考虑测试自动化时,必须保持满足普遍的要求:
·平台和操作系统独立性
·数据驱动功能(输入数据、输出数据、元数据)
·可自定义的报告(数据库访问、晶体报告)
·易于调试和日志记录
·版本控制友好-最小的二进制文件
·可扩展的和可定制的(开放的api,以便能够与其他工具集成)
·通用驱动程序(例如,在Java开发生态系统中,这意味着Ant或Maven和流行的ide)。这使得测试能够与开发人员的工作流集成。
·支持无人值守的测试运行,以便与构建过程和批处理运行进行集成。连续集成服务器需要这样做。
·电子邮件通知(在故障或阈值级别上的自动通知)。这可能是执行它的测试运行器或工具。
·支持分布式执行环境(分布式测试台)
·分布式应用程序支持(分布式SUT)
自动化框架方法
框架是一个设置特定产品自动化规则的集成系统。该系统集成了功能库、测试数据源、对象细节和各种可重用模块。这些组件作为小型构建块,需要组装以表示业务流程。该框架提供了测试自动化的基础,并简化了自动化工作。
定义自动化框架和测试工具之间的边界
工具是专门针对某些特定的测试环境而设计的。例如:Windows自动化工具、web自动化工具等。它作为一个自动化过程的驱动代理。但是,自动化框架并不是执行某些特定任务的工具,而是一个提供解决方案的基础设施,其中不同的工具可以插入自己,并以统一的方式完成它们的工作。因此,为自动化工程师提供了一个共同的平台。
有各种类型的框架。它们是根据它们所利用的自动化组件进行分类的。这些内容包括:
·数据驱动测试
·模块化驱动的测试
·关键字驱动测试
·混合动力测试
·基于模型的测试
测试工具
程序测试和故障检测可以通过测试工具和调试器得到显著的帮助。
测试/调试工具包括以下功能:
·程序监控,允许全面或部分监控程序代码,包括:
·指令集模拟器,允许完整的指令级监控和跟踪设施
·程序动画,允许在源级别或机器代码中逐步执行和条件断点
·代码覆盖报告
·格式化转储或符号调试,允许在错误或选定点上检查程序变量的工具
·自动化的功能GUI测试工具用于通过GUI重复系统级的测试
·基准测试,允许进行运行时性能比较
·性能分析(或分析工具),可帮助突出显示热点或资源使用情况
其中一些特性可以合并到集成开发环境(IDE)中。
审核编辑 :李倩
-
自动化
+关注
关注
29文章
5562浏览量
79239 -
代码
+关注
关注
30文章
4779浏览量
68516
原文标题:自动化测试
文章出处:【微信号:QCDZYJ,微信公众号:汽车电子工程知识体系】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论