影响软件测试未来的5件事 (译)

摘要:

从我们看软件、评估风险、思考复杂性、设计我们的测试方法和策略,以及帮助发布一个稳定的产品给用户的方式,技术在我们如何测试软件上产生了影响。而且那种影响将只会随着技术进步而持续。在一个高水平上,有5件我们已经看到正在使软件测试的将来成形的重要事情。

在过去的二十多年里,软件测试不仅以执行不同活动的工具,而且以人们使用这些工具的思维演进。那时习惯了少量的工具用于软件测试,但是现在我们有过多的工具可以选择,从专利到开源。同样地,人们开始把测试者当作信息破坏者而不是守门员,并且在敏捷的世界里有很多积极的开发团队在团队跟随他们的软件开发生命周期的流程中重要的改变做贡献。这些演进感谢技术的进步。

从我们看软件、评估风险、思考复杂性、设计我们的测试方法和策略,以及帮助发布一个稳定的产品给用户的方式,技术在我们如何测试软件上有明确的影响,并且那种影响将只随着技术的进步而持续。在一个高层面上,有5件我们已经看到正在使软件测试的将来成型的重要事情。

1. 人工智能

大约5年以前,每个人在谈“移动第一”并给用户以使用手机网页、本地和混合应用程序的方式带来手机体验。现在,新的流行词是人工智能。它在自动驾驶汽车、家庭助理(人们当然喜欢他们的亚历克莎)、计算机视觉、健康护理、金融里,并且现在在软件测试里。

现在,在市场上很少有些信得过的工具使用机器学习去帮助程序编写和执行功能测试、端到端测试和回归测试。首先它们集中在基于用户界面的测试自动化——越多用户创造的测试,算法变得越智能,使得测试更稳定。

幸亏有人工智能,有一些我们可以期望开始看到的在测试中的好处:

  • 更简单的测试代码编写
  • 更低的测试脚本的维护工作
  • 更少的古里古怪的测试
  • 使非技术人们开始做自动化
  • 更简单的CI/CD集成
  • 更可复用的测试

举个例子,我创建了一个Cucumber、 Java和Appium自动化框架。虽然我有一个健壮的框架和很多在写自定义代码去执行各种各样动作的灵活性,但我经常遭受普通的维护问题。当一个开发改变了一个元素的属性,这属性已经被我的自动化测试覆盖了,测试开始失败。结果,我花费了很多时间只是维护这些测试,而不是写新的自动化脚本去覆盖新的已实施的功能。

这个问题现在可以用使用人工智能从文档对象模型提取的动态定位器来解决。实时地,人工智能分析所有的对象树和从文档对象模型的属性,并且能创造一个特殊元素的不同属性的一览表。因此,当一个元素的属性变化时,人工智能尝试在这个一览表的下一个属性去定位这个元素,并且继续仔细检查这个表直到元素被定位到。这种测试更加稳定,程序编写和测试执行会快得多,而且测试者不得不花更少的时间在维护上。

2.开发运营

开发运行帮助软件开发团队和运营团队更好地协作,因此确保有恒定的自动化和监控贯穿同时包含基础架构管理的软件开发生命周期中。

你可能会问,这如何去影响软件测试?答案:我们做的一部分测试的每件事正在变化。我预见的变化包含:

  • 一个在软件开发生命周期的起始时开始自动化的需要,并且确保近乎所有的测试用例被自动化
  • 所有的质量保障工作需要被分配,为了确保平稳的CI/CD循环
  • 需要一个高水平的协作以确保在生产环境的持续监控
  • 所有的质量保障工作需要被标准化
  • 测试思维从“在这种模式的完整测试”转变到“在发布候选者中被减少的业务风险是什么?”

以上所有变化的关键是自动化。开发运营和自动化手牵手前进——缺少其一,另一个将无法工作。这就是机灵的人类和工具能帮助带来更短和更独立的发布周期的地方。

我曾在一个开发、测试、运营团队合作很少的公司工作。我们看到了在软件开发生命周期循环里的很多缺陷,用术语来讲,越多带到产品的问题,CI/CD基础架构越不稳定,并且很少看到产品监控和统计。注意到这些缺陷,团队决定实施开发运营实践,并且每个人开始在每一个软件开发生命周期中合作并做贡献。这开始于需求收集并自始至终扩展到产品发布和监控上。

这增加了合作文化,从在团队士气上有积极影响开始,更多自动化产生,并且整个团队开始作为一个单位一起工作。

3.质量保证即服务

就像我们如何有软件即服务、基础架构即服务、平台即服务,我们现在有质量保障即服务。在过去的几年里,这成为一个为公司去满足它们的软件测试需求的流行的方式。

有质量保障即服务解决方案的公司使得你的软件测试流程更简单,通过:

  • 测试用例管理和维护解决方案
  • 需要更少编码的测试自动化工具
  • 健壮的有日志、视频回放和截图的测试报告特点
  • 简单的CI系统集成

像移动手机、虚拟机、安全网络和人类测试的资源,在过去做自动化的7年里,我经常陷入的一个大问题是不得不维护我自己的服务器去运行我的自动化测试。这个服务器有不同问题,像存储空间的惯性运动,一个古怪的因特网连接,缓慢的处理速度在遍及整周的持续运行的多数测试,以及最新系统、搭建工具、安全补丁、集成开发环境等等的频繁更新的需求。这些种类的问题能以质量保障即服务的提供商解决,因为他们能为你做所有的这些活动,因此团队成员能集中精力在更重要的任务上。

将来,质量保障即服务的提供商们正在思考更多的改进他们产品的方式,为了对他们竞争者保持领先地位,这也将有利于软件测试者们。

4.物联网

随着可穿戴的、灵活房屋、可连接的汽车和其他基于云技术的到来,物联网已经开始成为讨论的大主题。这些设备的惊奇的事情是有这么多交流和集成发生在每一秒。

在高层次上,让我们分析,不同的交流随着可穿戴的健康追踪器的发生。首先,移动应用程序和健康追踪器需要互相交流。被你的移动应用程序捕获的数据应该无缝地集成于桌面、移动网页和应用程序平板电脑的版本,并且这些通过设备的交流需要实时地发生。所有数据踏遍且来源于云、设备和应用程序。人们也能组成群并互相通过应用程序比赛,所以这些计算和交流也需要实时地发生。基于不同触发的事件,适当的通知需要在适当的时候发往正确的用户。所有这些交流通过网络发生。

想象你是一位测试者测试这个健康追踪器。你从哪里开始?你如何设计你的测试策略和方法?

物联网引进它自己的复杂等级到软件测试。它将要影响我们思考测试的方式,尤其因为更多的集中需要被提供给集成测试而不是每个组件单独测试的老的方法。

举个例子,当我正在为一个旅行预定公司工作,我们对使用手表系统(当它首先被苹果引进)的苹果手表想出了一个新的应用程序。应用程序限制了有用的功能,比如查看通知和奖励信息、预定、旅馆定位、航班和汽车租赁的能力。当测试这个应用程序,我发现了当苹果手表应用程序被连接到我手机上相同的应用程序时,有怪异的事情:当我在手机上最小化应用程序,苹果手表变成空白,只显示一个黑屏;但是当我再次在手机上打开这个应用程序时,黑屏消失了,苹果手表应用程序功能正常。

这是一个完美的例子,关于为什么做集成测试是重要的。随着越来越多的设备进入到市场,这将对组织机构和用户显得很重要。

5.机器人

现在机器人做测试。一些人可能会觉得这个会威胁到术语表达的“工作保障”,但是我仍然认为人类的思维不可能被替代。将会需要人类对机器监控,确保它们正在做他们期待的事情并且事实上编写程序让它们做事情。离这个可扩展有多远?只有时间会告诉。

概括地说,技术的进步已经开始影响我们做软件测试的方式。它也使得公司重新想他们的组织架构:质量保证团队正在嵌入到开发团队,而且整个团队将拥有质量。它也将开始对研究变得重要,开发组频繁与测试组的互动为了使产品对它们的顾客来讲更灵活、更有用。

有个替换控制大数据的程序也成为一种需要,就像适当的计算能力滤过这个数据使得到有用的信息和反馈。最后,使这个成为现实,公司需要采取倾斜的流程,并且更加透明,避免成为创新的一个障碍。倾斜的转化将对高效的成长及其重要。

改变我们关于我们如何看系统和相应测试的思维是重要的。我们可以选择忽略它或者拥抱它。你将做什么?

原文地址:https://www.cnblogs.com/fengye151/p/11518709.html