李宁+庄丽华+石林+刘锁兰+徐守坤
摘要:针对大数据云计算背景下软件测试所面临的问题,分析了传统软件测试无法适应大数据处理的原因,云架构对软件测试提出更高要求,以及软件测试ORACLE和杀虫剂效应问题,提出应对上述挑战的措施和方法,探索和研究软件测试新技术和新方法是软件工程发展的当务之急。
关键词:大数据;云计算;软件测试;挑战
中图分类号:G642.0;O245 文献标志码:A 文章编号:1674-9324(2017)51-0275-02
随着大数据云计算的快速发展,传统软件测试已经无法满足大数据云计算的需求,软件测试面临着全新的挑战,这其中主要包括大数据云架构处理数据的巨量性、多样性和复杂性,软件测试ORACLE问题和杀虫剂效应等,探索和研究新的软件测试的技术和方法来应对大数据对软件测试所带来的困难和挑战,具有十分重要的现实意义。
一、传统软件开发和测试
软件测试伴随着软件开发模式的发展而发展,从上个世纪50年代开始软件开发经历了完全编码、构件化、服务和大数据云计算四个阶段。传统的软件开发和测试主要指前三个阶段,完全编码阶段:属于简单的程序设计阶段,代码基本由编程人员手工编写,软件通用性差,调试和测试简单。构件化阶段:是软件开发由手工作坊式生产变成工业化生产的主要阶段,此阶段软件是由第三方在系统类库的基础上所开发的业务组件,这种组件具有高效、易用、高耦合、高复用和本地运行等特点,软件类似一个黑匣子用户只能对其运行结构进行跟踪,不能对其内核进行跟踪和分析。这个阶段软件测试主要是检查构件属性、接口和不能实现的特性等。软件服务阶段:随着通信和网络技术的发展,本地组件需要提供远程服务,远程访问者需要了解软件外部服务的接口,以及输入、输出情况,软件测试变得更为复杂和不透明。
二、大数据云计算软件开发和测试
软件开发和测试第四个阶段是大数据云计算阶段。由于数据规模呈几何级上升,要从海量数据中挖掘出有价值的信息,传统软件系统无法实现海量数据的提取、存储、分析、处理和共享。软件开发需要跨结构、跨系统,系统架构在PAAS上,数据存储是分布的、异构的,用户对PAAS服务内部结构很难深入了解,因此,这个阶段软件测试更加复杂。数据处理流程分为采集、处理与集成、分析、解释和应用等几个过程,数据源包括结构化、半结构化和非结构化数据,以半结构化和非结构化数据为主,数据处理与集成主要是清洗、去噪和整合,数据分析是大數据处理的核心,采用的技术有数据挖掘、数理统计、机器学习、智能算法和云计算等,采用传统技术无法真正实现对大数据的处理和分析。大数据处理是信息技术发展的热点和重点,大数据云计算架构的复杂性使得软件测试也非常复杂,针对大数据测试研究还比较薄弱。
三、大数据云计算时代软件测试面临的挑战
1.大数据背景下软件测试的ORACLE问题日益突出。软件测试的目的就是将软件实际运行的结果和事前预期的结果进行比较,从而来判断运行结果是否正确,这就是软件测试的ORACLE问题。大数据时代,很多场景下对大数据输出结果的验证不论采用趋势分析法还是图论计算法都变得十分困难,其输出结果正确与否常常无法直接判断。大数据的处理模式主要包括物理作用和化学作用,物理作用下的大数据处理主要在确保数据价值不变的情况下,通过数据清洗来缩小数据规模,方便进行数据分析,这种模式下数据处理测试不存在ORACLE问题。化学作用下的大数据处理主要采用预测和快速计算方法,使得大数据测试ORACLE问题变得严重。例如采用个性化推荐算法对用户推荐产品时,到底有多少用户会对算法所推荐的产品感兴趣是无法估计的,这就导致测试结果难以判定,使数据测试的ORACLE问题变得突出。
2.云计算架构对软件测试所带来的挑战。目前大数据处理所采用的框架大都是Google公司的MapReduce。该架构把数据处理抽象成map和reduce两个过程,用户对分布式程序的设计主要是实现map()和reduce()两个函数,而任务调度、数据分片、机器容错、机器间通信等均由MapReduce框架来处理。因此,用户所设计的功能没有框架自身所承担的功能丰富,这无形中给软件测试带来困难。主要表现在:(1)由于JobTracker采用动态调度方式分配任务,无法预先知道任务在集群的哪个TaskTracker节点中执行;(2)无法预先知道map或者reduce任务执行的节点位置;(3)不像传统的软件测试可以在错误发生之前设置断点;(4)部分功能依赖分布式集群,虽然功能存在,但是无法预测其所在节点。这些都是传统软件测试所未曾碰到过的问题。
3.传统软件测试平台难以满足大数据处理的需求。传统C/S和B/S架构的软件平台,其性能测试借助协调控制器直接向服务器发送响应请求,实现服务器的压力测试。对于服务器数量有限,并发请求数在百、千数量级的应用服务,传统软件测试方法能满足其需求。大数据时代,数据规模和用户数量急剧增长,服务器的访问数量、次数和频率也在逐步上升,这就势必会造成服务系统崩溃、服务丧失等现象,采用云架构可以缓解这种危机,但是系统部署在千万级的服务器资源上,必然会给软件测试带来困难。
4.软件测试的杀虫剂效应日益显现。软件测试的杀虫剂效应是指测试软件越多,软件的免疫力越强的现象。跟农药杀虫相似,如果长期使用同一种农药来杀虫,则虫子就会产生抗药性,再继续使用这种农药就起不到杀虫作用了。在构件化软件开发日趋频繁的今天,软件开发中期发现的各种缺陷均可以通过验证和校验的形式集成到各种构件中,形成构件的内在属性,其对已有的测试方法会产生天然免疫力。杀虫剂效应促使软件测试技术必须不断的更新和升级。通常情况下软件测试初期较少的测试用例就会发现较多的缺陷,在软件测试后期,发现错误和缺陷的数量会逐渐趋于平缓,甚至缺陷数量在某些周期内停止增长。杀虫剂效应使得软件测试初期发现错误和缺陷的难度增加;同样数量的测试用例发现缺陷的数量也在减少;软件测试前期发现缺陷的数量在减少,发现缺陷的总数量也在减少。
四、如何应对挑战
如何应对大数据云计算背景下软件测试的挑战,有效避免软件测试所面临的诸多困难?建议从以下几个方面做起。
1.改進软件测试技术。单一的测试技术需要向多元化、综合性测试技术发展,才能有效克服软件测试中的杀虫剂效应。从两个方面来改进软件测试技术,一是对传统软件测试方法进行升级和改造;二是在软件测试过程中尽量综合使用多种测试方法和技术。
2.面向智能化数据处理技术的应用。大数据云计算所带来的软件测试ORACLE问题,需要从软件测试的用例设计上着手,测试用例的设计不但要保持原有的功能和作用,而且还要更多的考虑大数据处理时输入样本集的分布特性、大小,以及输出ORACLE的评判方法。
3.面向云架构的自动化测试环境的构建。要满足大数据处理运行的云架构环境测试,实现客户端环境的处理能力和服务器端需求相匹配,不但需要云架构能够充当云测试环境负载产生器,而且还要进一步探索和研究在大规模并发问题产生时软件测试、系统监控所产生的新要求和解决的新方法。
五、结论
大数据云计算的快速发展,给软件测试带来前所未有的挑战。不论是传统软件测试平台无法适应大数据处理的需求,还是云架构对软件测试带来的高标准高要求,以及软件测试的ORACLE和杀虫剂效应等问题,要有效的应对这些挑战,应该从改进软件测试技术、应用面向智能化数据处理技术和构建面向云架构的自动化测试环境等方面做起,不断探索和研究新的软件测试的技术和方法,提高大数据云计算环境下软件测试的能力和水平。
参考文献:
[1]蔡立志,阎婷.大数据背景下软件测试的挑战与展望[J].计算机应用与软件,2014,31(2):5-8.
[2]代亮,陈婷,许宏科等.大数据测试技术研究[J],计算机应用研究,2014,31(6):1606-1611.
[3]张振华.大数据背景下软件测试的挑战及其展望探析[J].电子技术与软件工程,2016,(6):61-61.
[4]刘智慧,张泉灵.大数据技术研究综述[J].浙江大学学报(工学版),2014,48(6):957-972.
Abstract:In view of the problems of software testing in the background of big data cloud computing,this paper analyzes the reasons why traditional software testing can not adapt to big data processing. Cloud architecture put forward higher requirements for software testing,as well as software testing of ORACLE and insecticide effects,put forward new measures and methods to deal with the challenge,explore and research new technologies and new methods of software testing,they are the top priority of software engineeringdevelopment.
Key words:big data;cloud computing;software testing;challenges