现代软件开发中的自动化测试趋势
“如果你想教人们一种新的思维方式,就不要费心去教他们。相反,给他们一种工具,使用它会导致新的思维方式。——理查德·巴克敏斯特·富勒,20世纪的发明家和梦想家
《2016年世界质量报告》由全球技术咨询公司Capgemini和Sogeti与HP Enterprise合作发布,是一份关于QA和测试趋势的大型行业研究报告。所有参与软件开发项目的招聘经理、预算涉众和测试人员都应该对该报告感兴趣(这里使用“测试人员”是为了合并软件开发中的各种专业职称,其中测试软件是主要功能)。报告中的当前趋势表明,组织重视测试自动化,以帮助改变他们快速创新和扰乱市场的方式。它还提到测试对于它的主要功能——防止缺陷——是必不可少的,但是对于这些产品交付的客户体验的影响也是很有价值的。ob欧宝娱乐app手机下载
数据也显示出挑战的趋势。与自动化测试环境相关的成本继续增长,并且通过采用“QA方法”和在开发生命周期的早期启用测试自动化功能的“左移”运动来强调在测试中寻找更高效的方法。测试自动化是DevOps、敏捷的左移软件开发实践的基本部分,也是更快交付软件的相关方法。报告提到了在应用程序测试的所有领域投资于自学平台和“即服务”解决方案的一个关键建议。对技术熟练的测试人员的需求将继续,以利用促进更多测试自动化和自动化软件工具使用的建议。来自测试社区的专家指出,自动化工具和技术不能取代所有的手工测试活动或合格测试专业人员的批判性思维。了解更多关于自动化软件测试.
巩固工作。同步冲刺。管理资源。欧宝体育app官方888
Smartsheet是一个基于云的平台,它允许团队和组织计划项目,简化操作,并扩展软件开发工作。参见Smartsheet的实际操作。
自动化测试和知识工作
在包括软件开发在内的“高科技”类别中,关于自动化将如何影响就业创造,有两种观点。一方面,数据是明确的:某些行业的工作岗位已经被机器人和先进软件抢走,而且还将继续被机器人和先进软件抢走,这些机器人和软件比人工操作更好地完成任务。
然而,另一组数据显示,自动化的出现可能会增加计算机驱动职业的就业增长,因为对这些产品和服务的需求不断增长。ob欧宝娱乐app手机下载在学术论文中计算机自动化如何影响职业:技术、工作和技能美国作家詹姆斯·贝森支持这一理论。贝森是一名经济学家,也是波士顿大学法学院的讲师。他提供了职业数据,并探讨了自1980年以来计算机自动化如何在使用先进计算机技术的领域带来就业增长。
图片来源:大西洋
Bessen写道:
“劳动力增加的变化并不一定会导致自动化职业的失业,原因有二。首先,更高的生产率可能会降低价ob欧宝娱乐app手机下载格,从而增加产品需求,抵消节省劳动力的效应。第二,提高一种职业的生产力可能会导致其他职业的ob欧宝娱乐app手机下载替代;工作可能会转移到新的更有生产力的职业。ob欧宝娱乐app手机下载这两种影响都可能导致自动化职业的就业增加,而不是减少。”
贝森举了一个电子文档发现软件的例子,该软件于20世纪90年代首次推出。这种形式的自动化技术现在是一个价值10亿美元的产业,取代了传统上由律师助理和律师长时间搜索法律数据库完成的工作。自引进这项技术以来,雇用的律师助理人数有所增加。另一个例子涉及银行业。自动柜员机自动化了过去银行柜员为会员执行的功能。尽管使用的自动柜员机数量增加,而且无处不在,但对银行柜员的需求也随着时间的推移而增加。除了他们仍在执行的传统客户服务相关任务外,他们还开发了新的技能来服务于销售和营销职能。
贝森在他的论文中指出,自动化并不是技术影响职业的唯一方式:
“数字技术可以降低通信成本,促进权力下放、外包和离岸;它可以提高使用的便捷性,方便自助服务[…]这样的轮班代表了工作人员的变化,而不一定会改变单位产出所需的劳动量。”
谷歌的自动测试趋势
在谷歌,当工作从谷歌员工生产劳动开发和测试web应用程序,转移到谷歌用户和“dogfooders”的公共社区时,测试工程师和测试管理人员所扮演的角色发生了变化。dogfood这个术语被软件公司用来描述尚未发布的软件,所以dogfooders是测试产品的用户(来自其他产品团队或早期采用者)。ob欧宝娱乐app手机下载
在《谷歌如何测试软件》一书中,作者描述了软件测试在用户手中的未来。谷歌对于快速软件发布的“快速失败”心态依赖于用户反馈,不喜欢依赖测试人员(谷歌中的“测试工程师”)。根据作者的说法,“尽管我们相信这个角色是注定的,但工作本身不会消失。”谷歌用新的头衔重组了他们的测试人员,并强调开发人员和项目经理在测试开发中应该扮演的角色。换句话说,测试自动化技术并没有减少对测试人员的需求,但是理念的改变和快速软件发布的现代方法将工作转移给了其他人。
作者建议测试人员将他们的专业知识转化为更多的测试设计角色。开发人员和项目经理将设计具有最小缺陷的高质量软件,并快速发布以快速失败。谷歌用户、dogfooder和早期采用者将使用该软件并提交反馈。测试人员将通过创建或使用现有工具来分析和收集数据,并“评估覆盖率,计算风险影响,确保其趋势下降,并相应地调整测试活动。”
根据此建议,创建和执行测试将不再是谷歌测试人员的工作。相反,识别需要将安全性、隐私性能和探索性测试定向给有能力的专家的实例将是更有价值的服务。测试人员将为涉及安全的角色培养专业技能,安全是2016年世界质量报告调查的技术领导者最关心的问题。
自动化测试工具和框架
用于web应用程序开发的测试自动化框架和自动化工具的基本概念是经常交换的术语,因为许多可用的自动化工具提供了作为测试框架的完整功能套件。此外,混合框架结合了各种开源自动化工具,以提供由最佳软件组成的框架。要全面了解自动化框架,包括利用现代测试自动化框架类型的分析和建议,请阅读自动化框架指南.
测试自动化框架为支持用于各种软件测试的自动化软件工具提供了基础,包括:
- 单元测试
- 功能性需求测试
- 性能测试
- GUI(图形用户界面)测试
- 回归测试
- 集成测试
- 系统负载测试
- 安全性测试
测试自动化框架的开发需要批判性思维、设计、项目实现和培训方面的技能。很明显,理解如何设计、开发、实现和维护框架是有好处的。
测试自动化框架是组织和开发项目测试的一组已定义的指导方针。测试人员使用他们开发的测试脚本,或者自动化工具和他们的测试接口,来促进web应用程序的软件自动化测试。接口是两个组件之间的连接。接口测试验证系统(API或web服务器)之间的通信。测试自动化接口为在自动化框架内工作的测试自动化工具提供了一个平台。例如,自动化测试以检查服务器和应用程序或应用程序和数据库之间的通信。
测试自动化框架可能包括支持程序、测试对象、测试库、测试脚本语言和其他工具,以帮助测试被测应用程序的不同组件(AUT)。对象是特性(结合数据和方法的代码单元),而对象存储库是在测试自动化工具与AUT交互时记录的特性的集合。使用对象存储库允许自动化框架进行调整,以创建完整的应用程序。这个系统使得为不同的AUT重用框架变得更加容易。
自动化框架和工具是不同的。框架不像自动化工具那样执行特定的任务。相反,框架是服务于自动化工具并授权测试人员的自动化目标的基础设施。测试框架具有不同的特性或测试类和接口集,并通过控制对象的交互方式支持代码重用。这减少了开发新的web应用程序所需的新测试代码的数量。
测试自动化框架的设计有助于为AUT生产高质量的软件。设计良好、灵活的自动化框架和适当的自动化工具的使用使测试人员能够花更多的时间在AUT上满足测试自动化的目标。使用测试自动化框架的目标是促进单个AUT的测试自动化。然而,目标应该是开发一个可重用的、易于维护的测试自动化框架与敏捷开发相关联的现代软件开发方法.诸如持续集成和部署以及行为驱动开发(BDD)等方法依赖于测试自动化来实现当今的快速软件进度安排。
测试自动化工具功能和基础设施
在谷歌如何测试软件E,作者讨论了测试基础设施检修的必要性,因为“昂贵的人员和机器基础设施”。这一改革将包括将测试存储库、测试代码编辑器、记录器和执行迁移到云中。在谷歌,测试自动化适用于web aut和非web aut,如Android或iOS应用程序。
对于谷歌来说,需要更少的内部定制测试框架和专用测试执行机器是很重要的。测试人员利用并贡献开源项目,将它们拼凑在一起,并在共享的云计算资源上执行它们。欧宝体育app官方888Selenium WebDriver是作者选择的自动化工具。他们强调了Selenium的社区维护和公司赞助的基础设施开发,这是更多带有开源跟踪系统和控制的开源测试框架将蓬勃发展的原因。
这本书解释说,在谷歌上,“共享测试数据、测试用例和测试基础结构将值得放弃对一切保密或专有的想象优势。秘密和专有的测试基础设施只意味着它昂贵、进展缓慢,甚至在公司内部跨项目通常也不能重用。”
谷歌设想在未来,测试代码与尽可能多的“bug数据”一起共享。这种形式的“基于群体的测试和测试创建”超过了“隐藏一切的想象好处”。基于云的测试方法节省了资金,并提供了适当的测试自动化基础设施,以专注于导致“更高质量的产品和更快的发布周期”的测试。ob欧宝娱乐app手机下载
自动化测试工具的成本
通过将商业许可的成本与实现和维护自动化测试所需的人力资本的人工成本相加,计算购买自动化工具的成本似乎是一个简单的等式。但是,您如何考虑由于可重用测试代码而产生的改进的长期投资回报,或者由于测试自动化失误而产生的潜在增加的成本呢?
道格拉斯•霍夫曼是软件QA管理顾问,著有测试自动化的成本效益分析.在他的分析中,Hoffman强调在自动化软件测试的好处上设定现实的期望。他从固定成本和可变成本的一般角度考虑测试自动化投资的ROI。通过与“手动测试或完全不测试并接受风险”的替代方案进行比较,您可以计算自动化的财务影响。
Hoffman发布了考虑到与自动化测试相关因素的方程式。他总结道,尽管“测试自动化并不总是必要的、适当的或具有成本效益的”,但是如果您确定了相关的因素,估计测试自动化的财务风险是可能的。
仔细考虑使用哪个自动化框架,以及正确使用自动化工具,将决定成本效益。成本会因使用的工具和功能而异。测试自动化的成本包括自动化框架的开发和维护,使用的工具,以及负责自动化测试的人员。选择适当的框架和自动化技术可以帮助保持与自动化测试相关的较低成本。该框架为自动化测试提供了一个结构,以保持测试资源的可访问性。欧宝体育app官方888确定ROI需要分析自动化测试的预期结果、适当的框架和基于这些目标使用的工具,以及谁将开发和维护该技术。
测试自动化的动机
2016年,LinkedIn通过Lynda.com增加了一个新的学习功能,旨在帮助人们跟上自动化和不断变化的技术技能引入到他们的工作环境中。微软260亿美元收购领英(LinkedIn)是一项受其企业生产力愿景驱动的投资。ob欧宝娱乐app手机下载一支受过教育、相互联系和富有创造力的劳动力队伍是一支富有生产力和盈利能力的劳动力队伍。ob欧宝娱乐app手机下载ob欧宝娱乐app手机下载生产力和跟上市场要求快速创新和高质量的客户体验的需求推动了自动化技术在软件开发中的兴起。
从事软件开发的测试人员应该熟悉最常见和广泛使用的测试自动化工具,以防止自动化从工作中取代他们的威胁。为了从这种需求中受益,测试人员应该专注于允许他们为自动化使用工具的技能开发。
关于自动化对测试人员和软件测试工作的影响,自动化正在改变技术技能需求的前景。随着持续集成、持续部署和行为驱动开发(BDD)的兴起,测试自动化是敏捷开发方法的一个基本方面。测试自动化将继续帮助快速软件部署目标和对更多、高质量、安全可靠的特性的需求。
John Kent擅长使用Selenium、HP UFT、Fitnesse、Cucumber和SpecFlow等工具构建测试自动化框架。他的测试解放框架是一个关键字驱动的测试自动化平台,旨在消除自动化测试代码的编程(也称为“无脚本自动化”)。Kent的框架减少了实现所需的时间、测试自动化的成本,以及与测试自动化项目相关的失败风险。
Kent在构建测试自动化框架方面有超过20年的经验,并且他认为实现这一目标的唯一方法是敏捷开发中每个冲刺阶段所需的回归测试是通过测试自动化进行的.他写道:
“我觉得我们能够获得足够的测试覆盖率并解决这些问题的唯一方法是使用测试自动化。它永远不会取代测试人员,但它可以在大量硬件平台、浏览器和这些平台的组合上提供巨大的测试覆盖面。”
Kent对于成功的测试自动化项目的建议呼应了敏捷开发所需的测试自动化框架的核心元素。适当的框架为生成可重用的、易于维护的自动化测试提供了指导方针。他还认为测试人员应该能够使用工具,而不需要复杂的编程需求,这需要专家。
7个用于Web应用程序测试的流行自动化测试工具
能够设计、构建和维护混合测试自动化框架以及编写测试自动化脚本的技术测试人员的需求很高。但是,达到这种技术熟练程度并掌握一门编程语言并不是走在自动化趋势前面的唯一途径。熟悉现代软件自动化工具的测试人员对于实现测试自动化的组织来说仍然是有价值的。
请记住,为了充分利用这些工具,建议您熟悉一些编程技能。对于下面的web应用程序示例,您需要具备一些Java知识。LinkedIn Learning有在线技能开发Java和其他编程语言的课程.
这个列表包含了7个开放源码和商业测试自动化工具。这些授权的自动化工具都有免费的试用版本。
Selenium Webdriver是一套工具,用于在所有主流浏览器和操作系统(包括移动设备)上自动化web应用程序。它支持所有主要的编程语言和测试自动化框架。大多数流行的开源测试自动化工具都是为使用或增强Selenium而设计的。
其他Web应用程序工具:
Apache Maven是一个基于项目对象建模(POM)的软件项目管理和综合工具。POM是一个XML文件,其中包含项目的信息和默认值,以及用于构建项目的配置细节。Maven允许持续集成(CI)服务器在独立于开发的环境中管理项目的测试构建。它提供来自中央来源的报告和文档。
Jenkins是一个开源的测试自动化CI服务器,它可以分布在多台机器上。它支持在检测到Git存储库中的更改时构建和部署自动化代码。Jenkins还可以作为web应用程序项目的自动测试的持续交付服务器。
其他持续集成工具:
Git由Linus Torvalds (Linux操作系统的创建者)创建,是世界上使用最广泛的版本控制系统。Git是一个积极维护的开源项目,与主要的操作系统和ide(集成开发环境)都能很好地工作。它可以跟踪所有的代码更改,这样测试人员就可以独立地进行自动化测试,而开发人员则可以实时地处理特性。
其他版本控制系统:
Cucumber是驱动项目的行为驱动开发(BDD)的工具(在这里阅读更多关于BDD的内容).Cucumber是针对非技术涉众可以理解的可执行规范的最新测试规范和文档的来源——换句话说,您可以用简单的语言定义应用程序行为。Cucumber是用Ruby编写的,但是能够测试其他语言的代码。
其他BDD自动化工具:
JUnit是Java编程语言的单元测试框架,也是xUnit体系结构的一部分。它是GitHub上最常见的外部库,也是测试驱动开发(TDD)的重要工具。
其他单元测试框架:
这些框架用于测试应用程序中的功能。单元测试是作为测试自动化构建系统和部署过程的一部分来自动化测试新版本和构建的。
IntelliJ IDEA是一个免费的Java文本编辑器IDE,旨在最大化代码分析、设计和重构的效率(IDE代表集成开发环境)。ob欧宝娱乐app手机下载IDE工具通过使用更多的组件改进标准的文本编辑器功能,本质上是将代码转换为可运行的应用程序和程序。学习或引入到项目中的最佳IDE取决于操作系统、所选择的编程语言以及所开发的平台。还需要注意的是,IDE具有标准文本编辑器功能之外的其他自动化测试工具。
其他文本编辑器和IDE工具:
提高他们的技术技能并学习与创新一起工作的软件开发和测试专业人员可以从测试自动化的兴起中受益。数据显示,自80年代以来,美国需要高于平均水平的计算机技能和高计算机使用率的领域的工作岗位有所增加。经济学家们继续争论自动化、人工智能和先进机器人等技术如何影响软件开发领域的知识工作者。领先技术顾问研究的趋势表明,软件开发和测试专业人员有机会在自动化技术和机器的崛起中建立自己的价值。
使用Smartsheet管理自动化测试过程
现在您已经了解了用于自动化测试的各种工具,选择正确的工具来开始跟踪和管理测试的结果是非常重要的。Smartsheet就是这样一个工具,它是一个协作工作管理和自动化平台,可以帮助企业和团队更好地工作。
使用Smartsheet跟踪计划测试、当前测试和已完成测试的进度和结果。在一个中心位置,与您的团队分享时间表,并在细节上实时协作。无论您是运行手动测试还是自动测试,Smartsheet的广泛视图(日历、甘特、卡片和传统网格)都允许您以您想要的方式管理进度。用层次结构组织测试结果,并使用注释将工作保持在上下文中。
此外,通过Smartsheet Sights,您可以创建自定义仪表板来监视测试,并为管理提供进度和关键指标的高级视图。改进测试过程中的协作,增加对时间和资源的控制,并通过一个位置获得对结果前所未有的可见性。欧宝体育app官方888
了解使用Smartsheet中的模板跟踪和管理自动化测试是多么容易。
顶级软件开发团队使用Smartsheet
通过设计一个灵活的平台来满足团队的需求,并根据这些需求的变化进行调整,使你的员工能够超越这些需求。
Smartsheet平台可以方便地在任何地方计划、捕获、管理和报告工作,帮助您的团队更有效地完成更多工作。报告关键指标,并在工作发生时通过滚动报告、仪表板和自动工作流来获得实时可视性,以保持团队的联系和消息灵通。
当团队清楚要完成的工作时,没有人知道在同样的时间内他们能多完成多少。今天就可以免费试用Smartsheet。