APP下载

大数据背景下软件测试的挑战与展望

2018-12-21

软件 2018年6期
关键词:测试工具软件测试结构化

张 琪

(上海市软件评测中心有限公司(软件测试部),上海 200233)

0 引言

大数据处理是指不能通过传统计算技术处理的海量数据集合的数据创建、存储、检索和分析等操作,具有大批量、多样性、复杂性、实时性、交互性等特性。在大数据背景下,随着互联网、政府、企业、个人用户需求量的增加,基于大数据技术的应用系统越来越多,对软件测试工作提出了很大的挑战。只有转变传统的测试思维,合理利用多种技术和框架、各种自动化工具的融合,并不断开拓创新测试方法和技术,优化改进测试策略和流程,才能够获得更好的发展。

1 大数据给软件测试带来的若干问题

1.1 大数据处理框架带来的问题

Google于 2004年提出的大数据处理框架Map-Reduce已得到了广泛的应用,用户在设计分布式应用程序时只需要实现 map()和 reduce()两个函数,不需关注数据分片、任务调度、机器间通信、机器容错等方面是如何实现的,虽然简化了数据密集型应用的数据处理过程,但是用户功能不如框架本身功能丰富,也给测试工作带来了难度。并且该框架采用分布式特性,无法知道任务被动态分配到集群中的哪个节点执行;无法预知map或reduce任务在哪个节点执行;无法在错误发生前设置断点等,而传统软件测试是基于软件规格说明书等文档进行测试,有预先确定的流程图、数据关系、数据的输入/输出,大数据处理框架的分布式特性给传统软件测试带来了难度[1]。

1.2 大数据特性带来的问题

传统数据一般采用结构化数据,存储在关系型数据库表中或结构化文件中,软件测试时可以用来验证软件输入和输出的正确性。大数据处理的数据包含结构化、半结构化、非结构化三种。半结构化数据没有预定义格式,需要根据数据模式推导出其基本机构。非结构数据没有任何格式,存储在文件或Web页面中,需要抽取、转化成结构化数据,由于数据的异常或数据格式转换错误导致的问题,使软件测试对数据输入和输出正确性的验证变得非常困难。

大数据是对所有数据集进行分析处理,而不是随机样本,找到其中最有价值的数据。这就对测试设计时的评价模型提出了更高的要求,能否构造与原始数据集等价的数据集?是否所有数据覆盖了所有可能性?都是需要考虑的问题[2]。

1.3 大数据性能测试的问题

传统的B/S或C/S性能测试一般通过客户端测试负载器模拟向服务器发送请求来实现对服务器的压力测试。在大数据背景下,数据处理平台一般架构在可动态扩展的PaaS平台,传统的局域网环境下开展压力测试模式,已无法满足需求,难以实现负载器数量的扩展,也无法采取有效的控制措施[3]。在大数据时代背景下,云计算系统分布范围较广,测试客户端需要设置分布式特征,在大量用户数据的驱动下,控制设备的监控压力也在不断增加,受到负载器数据及状态的影响,很大程度上会对软件性能测试造成影响。并且由于大数据应用所涉及的技术、环境的复杂性,对于问题的诊断调优也存在难度。

2 解决大数据软件测试问题的一些措施

2.1 加强Map-Reduce阶段验证

Map-Reduce对来自不同数据源的数据进行处理过程中可能会出现编码问题,如在单一节点上运行正确,在多个节点上运行不正确的问题,包括不正确的聚合、节点配置、输出格式等。可采用以下方式进行验证:a.验证梳理数据处理过程是否完成并输出文件;b.在单个节点上验证大数据的业务逻辑后,在多节点上进行相同验证;c.验证Map-Reduce处理过程的Key/Value对是否正确生产;d.在reduce过程结束后验证数据的聚集合并是否正确;e.通过源文件验证输出数据来保证数据处理正确完成;f.验证输出数据文件格式是否符合大数据业务要求[4]。

2.2 完善测试用例的设计

测试是为了保证数据的正确性、业务逻辑的正确性。首先,需要进行需求的调研,必须要清楚整个业务处理流程,每个数据的流转,每个步骤的输入和输出,才能判断最后的输出结果是否正确。然后,结合不同业务场景设计测试用例,不仅限于数据的边界要求、属性要求等,更多需要考虑数据的样本及大小,样本集的分布特征。需要考虑:数据量;数据唯一性;数据完整性;数据一致性;数据边界;数据精度和格式化;数据区间和分布;数据空值替换及格式化特征等,可结合自动化测试工具或手工编写测试脚本等方式,导入测试数据,提高测试数据覆盖率和测试效率[5]。

2.3 合理利用测试工具

目前业界暂无通用、标准的大数据性能测试工具,要自行开发或整合多种相关测试工具才可能实现性能测试及问题诊断。首先搭建测试环境,需要考虑:是否有足够的存储设备来存储和处理大数据;有足够的CPU、内存资源保障高性能处理;有集群处理分布式节点和数据等[6]。接着准备测试数据、设计测试场景、编写测试脚本,需要考虑:各业务的占比;各节点测试数据量的准备;并发线程/用户量的需求;超时时间/参数/消息队列长度设置;选用测试工具或测试脚本开发等。最后执行性能测试,可通过 Hadoop性能监控器来监测平均响应时间、吞吐量、资源占用率等运行状态性能指标和瓶颈问题[7]。

3 大数据背景下软件测试的展望

在大数据背景下,云计算、虚拟化技术得到了较好的应用。结合相关资料,大数据背景下软件测试展望主要如下:

(1)完善与改进测试技术,在大数据背景下,测试技术只有朝着多元化方向发展,才能够实现突破。将已知测试技术、测试方法相互结合,并进行综合利用。针对数据储存模糊认知,导致影响测试精准性的情况,其解决措施为:在应用数据库前,必须要反复测试数据库,降低数据错误率带来的影响,全面提升数据的准确性、一致性、完整性,为后期的测试奠定基础。除了功能测试,还要兼顾性能效率、容错性、可用性、扩展性、稳定性、兼容性、数据一致性等方面的测试[9]。

(2)加入智能化技术,提升数据处理质量,在实际应用时,其设计工作不仅需要对输入的数据进行界定,分析数据的属性,还需要依据数据的样本、数据采集情况、数据分布规模等选择正确的评价方式。在数据输入时,需要确保数据属性的规范性,综合分析、考虑数据输入的大小、输出样式,在大数据背景下,应用智能化技术能够消除输入、输出数据之间的差异性,逐步规范操作,全面提升软件测试质量[10]。

(3)基于大数据背景下,在各类数据处理中云计算、虚拟化的应用十分有必要,为了更好的满足大数据时代的性能测试需求,就必须要构建客户端与服务器端需求相匹配的自动化运行环境,发挥负载器的作用,研究并发环境,强化监控,逐步探索全新的测试手段。

4 结论

综上所述,当前的时代属于大数据时代,软件测试面临着很多的挑战,为了更好应对大数据环境下对软件测试带来的问题,提出了一些解决措施,并对未来的软件测试发展提出展望,需要从以下几方面改善:(1)测试技术需朝着多元化方向发展,多元化的测试技术能够有效避免“杀虫剂效应”,在已知测试技术基础上,探索出全新的测试技术。(2)大数据的智能化处理,需更多去考虑输入数据样本的大小、特性、输出评判方法等。(3)构建自动化云测试环境,更好的满足大户数据背景下性能测试需求,强化客户端的处理能力,提升与服务端需求之间的匹配度,进而探索、创新更多的测试方法。(4)采用大数据的思维方式,通过全面的测试来提高大数据应用软件的质量、容错性、可扩展性、稳定性、安全性。

猜你喜欢

测试工具软件测试结构化
促进知识结构化的主题式复习初探
基于OBE的软件测试课程教学改革探索
结构化面试方法在研究生复试中的应用
Http并发连接测试工具
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
手车式真空断路器回路电阻测试电流线接头研究
软件测试工程化模型及应用研究
基于图模型的通用半结构化数据检索
福禄克推出先进的连接式测试工具系统