关于软件测试未来发展趋势分析与总结

中国近几年软件业迎来了一个超高速发展期,其中软件测试发展也成为业内关注的话题,越来越多的高校毕业生投入到软件测试行列中,这表明软件测试有可能会成为下一个IT行业的发展风口。除了软件测试人员数量需求和技能经验要求外,测试人员能不能把握最新行业动态趋势,掌握最新测试技能和知识变得尤为重要。

随着人工智能(AI)、虚拟现实(VR)、增强现实(AR)等新技术的出现,对于测试人员来说,扩充在这些技术方面的知识将变得更加重要。在测试基于这些技术的应用程序时,需要完全不同的思维方式、测试设置、测试环境/基础件,这可能是 2019 年测试人员要面临的最大挑战。

作为测试人员,我们需要有好奇心和开放的思想来适应变化,学习和阅读最新的技术趋势,并做好迎接我们测试过程中遇到的任何问题的准备。你必须随时保持对市场行情的好奇和热情,跟随趋势做出改变,做到与时俱进。

关于软件测试未来发展趋势分析与总结_第1张图片

2019年测试新趋势大概分为以下几个类:

一、人工智能AI+测试

利用AI(深度学习等)系统来辅助测试工作绝对是最近几年最为热门的一个测试趋势,其中包括测试用例,测试数据和测试代码的自动生成、大规模测试结果分析、自动化探索性测试、缺陷定位等,美国已经有多个公司推出了商用的AI测试工具。

虽然已经有很多公司开始研究AI辅助测试,也有很多工具问世,但是它们都存在一个很大的问题:准确性不够高。由于现在AI学习算法本身存在一些问题,其学习并生产的测试用例和验证条件的准确率都不是很高。

AI辅助测试分为三步:

1、通过深度学习模型自动生产测试用例的输入,人工验证输出。

2、通过深度学习模型自动生产测试用例的输入,并通过规则模型自动验收输出。

3、通过深度学习模型自动生产测试用例的输入和输出,并自动验证输出。

现在业界基本上能实现第一步了,有部分公司已经可以实现第二步了,而对于第三步,只有少量大公司实现了,并且准确度还不是很高,所以AI辅助测试还有很长的路要走。

关于软件测试未来发展趋势分析与总结_第2张图片

二、新型业务和架构系统的测试

随着AI系统、区块链、微服务以及大数据等系统的出现与繁荣,对其进行专项测试也将是一个测试领域的趋势。这其中会涉及到一些新的挑战,比如测试AI系统可能会用到和以前完全不一样的方法与理论体系;测试区块链的时候如何模拟真实环境来进行测试;微服务在规模变大的情况下,是不是需要使用到与以前不一样的测试策略与一些特殊的测试技术;大数据系统如何在测试环境下,模拟真实的大规模数据,并进行业务测试等。

三、测试基础设施

随着软件系统规模的增大,测试环境的搭建变得越来越复杂,其成本也越来越高。而且在很多实际的项目中都对测试环境有一些特定的需求,比如每轮测试之前,回滚上一轮测试影响到的所有数据;或者可以快速将集群中的多个节点上的被测系统回滚到之前的某个版本等。随着这些需求的增多以及成本压力的增加,建设现代化的高效的测试基础设施已经成为了一个大型系统的必然趋势。比如可以利用Docker,Ansible等来搭建高效的测试基础设施等,然后它还有另外一个新的名字:TestOps。

四、产品环境下的测试

去年阿里云和腾讯云都发生不同类型的线上故障,其中阿里云对于其在2018年6月27日线上故障的说明中写到:“这一功能在测试环境验证中并未发生问题,上线到自动化运维系统后,触发了一个未知代码bug”。由此可见对于大规模、高复杂度的服务器系统来讲,仅仅是在测试环境进行测试已经无法满足质量需求了,如何在产品环境下进行测试必将会在现在以及未来云时代中占据重要位置。

五、基于故障注入的测试(混沌工程)

随着云平台越来越庞大,越来越复杂,普通的测试用例已经很难满足高可用的需求了,所以基于故障注入的测试(FIT-Failure Injection Testing)也越来越重要。其中Netflix甚至在其产品环境中大规模的使用FIT,而不仅仅是在测试环境中。Netflix在其官方博客中发表了多篇关于故障注入测试的文章。在未来云的系统的越来越多、越来越复杂的时代,对于一个追求质量的系统,基于故障的注入的测试肯定是必不可少的。

六、安全开发流程与自动化安全测试

现在一谈到安全,一般都是聊渗透测试或者是安全防护,比如WFA等,很少有人谈到安全开发和开发流程中的安全测试。其实安全开发才是最有效的安全防护办法,比如早在本世纪初微软就提出了自己的安全开发流程SDL(Security Development Lifecycle),但是由于微软的SDL十分笨重,成本也十分高,导致在其当前需要敏捷和快速开发软件的互联网时代很难推广。

其中BSI就是结合了敏捷方法论和实践的一种安全开发流程,并需要在开发流程中嵌入各种不同类型的安全测试,比如基于业务功能的安全测试,基于威胁建模结构的白盒安全测试,以及基于各种黑盒自动化的安全扫描和测试等,对于需要持续交付的敏捷团队特别适合。

七、可测性分析与设计

现在很少有公司会对系统进行可测试分析和设计,只有一些大型公司的部分大型系统会使用它。其实可测试是一个非常古老的话题,就像契约测试早在上个世纪80年代就被提出了,但是由于其对于中小型项目的投资回报比不高,很少有公司会用到。直到规模化微服务的出现和盛行,契约测试这个老古董也逐渐成了一个新的热点。但是随着软件规模的增加,特别是当云平台等大型系统成为一种趋势时,通过提高其可测试性来使其各种测试更加有效也将成为一种趋势。

八、敏捷测试

敏捷测试也许在国外很多公司(比如Atlassian,Netflix,Google等)已经是常态了,但是在国内,在未来很长时间内还是一种奢望。其中测试前移、测试驱动开发(业务功能级别的ATDD),以及预防缺陷优于发现缺陷等理念和实践,使得敏捷测试能有效的减少缺陷代码和返工,从而有效节约开发成本,提高交付速度和软件质量,所以敏捷测试中的各种实践也一定会在国内成为一种趋势。

总结:虽然测试方法、测试分析和测试策略非常重要,但是随着技术的发展,测试领域中技术占比越来越大。虽然还需要长时间的发展或者还没有大规模被业界所采用,但是其中大部分都依赖技术的发展。所以,在未来想发展成为一名高级测试工程师或者测试专家大佬,除了需要精通传统的测试方法、测试分析、测试策略以外,技术可能也是无法避免的一项技能。

你可能感兴趣的:(软件测试)