软件测行业发展新趋势:
一、人工智能AI+测试
利用AI(深度学习等)系统来辅助测试工作绝对是最近几年最为热门的一个测试趋势,其中包括测试用例,测试数据和测试代码的自动生成、大规模测试结果分析、自动化探索性测试、缺陷定位等,美国已经有多个公司推出了商用的AI测试工具。
虽然已经有很多公司开始研究AI辅助测试,也有很多工具问世,但是它们都存在一个很大的问题:准确性不够高。由于现在AI学习算法本身存在一些问题,其学习并生产的测试用例和验证条件的准确率都不是很高。
AI辅助测试分为三步:
1、通过深度学习模型自动生产测试用例的输入,人工验证输出。
2、通过深度学习模型自动生产测试用例的输入,并通过规则模型自动验收输出。
3、通过深度学习模型自动生产测试用例的输入和输出,并自动验证输出。
现在业界基本上能实现第一步了,有部分公司已经可以实现第二步了,而对于第三步,只有少量大公司实现了,并且准确度还不是很高,所以AI辅助测试还有很长的路要走。
二、新型业务和架构系统的测试
随着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),以及预防缺陷优于发现缺陷等理念和实践,使得敏捷测试能有效的减少缺陷代码和返工,从而有效节约开发成本,提高交付速度和软件质量,所以敏捷测试中的各种实践也一定会在国内成为一种趋势。
在IT业处于发展的初级阶段时,由于大多数软件比较简单,对其的测试工作也不复杂,往往是软件开发企业在开发完成后进行一下简单的检测就可以了。但在IT业发展到一个高级阶段后,系统越来越精密,而软件也越来越复杂,影响的范围也不断扩大。因此,这时期开发的软件就必须进行十分严格的测试。否则,不仅会引发企业销售收入下降和运营成本的增加,甚至给企业带来法律责任。而在金融、电信这种系统趋于全国集中,风险波及面大,业务影响广泛的行业,其产生的后果更是不堪设想。IT服务资深专家神州数码系统集成服务有限公司质量测试事业部总经理单军指出,全面、严谨的测试和评估是降低企业IT系统风险的最佳实践,没有经过质量测试就上线运行的IT系统犹如一颗“定时炸弹”。
中国目前大多数的软件都是由软件开发企业自行进行质量测试的。总体而言,企业是重视开发而轻视测试。相关资料显示,国内测试所花的费用不超过整个项目投资的5%(这个数据如果包括硬件投入会更低,另外在一些行业低得可怜)。但在国外,一般测试环节所花的费用占项目比重非常高,达到30%左右。事实上,近年来许多软件的质量问题已引起人们的关注,有的在运行中出现问题甚至带来巨大影响。
因此,除了政府制定相关法律法规外,还需要越来越多的企业致力于此项事业。这不仅会带来良好的声誉,也会带来不菲的利润。神州数码系统集成服务有限公司正是凭借对IT系统建设过程中的风险要素和关键点非常了解这种优势,正式提出了覆盖IT全生命周期的“锐行服务”,其中质量测试服务是重要产品线之一。
据美国国家标准和技术研究院的报告显示,美国大型专用软件开发的失败率高达70%,美国经济因软件错误每年都要损失高达595亿美元,与此同时,预计2009年中国的软件市场将达到62.3亿美元,未来五年的年均复合增长率为18.7%。可见,随着软件规模的不断扩大,软件设计的复杂程度不断提高,软件开发中出现错误或缺陷的机会越来越多,客户对质量测试的需求将日益旺盛。此外,IT管理开发与运行维护分离的趋势,也推动着独立测试中心的诞生和发展。
单军认为,建立大的测试中心是质量测试发展的一个趋势,尤其是金融、电信等业务对IT稳定性依赖严重的行业,建立单独的测试中心尤为必要。针对大型银行对测试的深入需求,他们专门提出的一套方案——大型测试中心解决方案,能够帮助银行从如何构建组织,如何以组织行为来实施测试等方面实现测试中心的完美建设。据悉,目前国内比较大的银行都是神州数码的客户。
质量测评和质量保证服务目前正处在一个快速发展的阶段。但是与国外相比,国内用户和大多数厂商对质量测试的重视程度还远远不够。东吴证券有关分析师表示,国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。
中国目前已涌现了很多的第三方测试机构,但其中很多仍然处于发展的初级阶段,行业自律也还不足,而如何提高中国目前的软件测试水平也是需要探讨的问题。业内人士指出,提高中国的软件测试行业的发展水平,首当其冲要解决软件测试队伍的不足问题;其次要重视第三方的测试力量