腾讯优测是专业的移动云测试平台,提供自动化测试-全面兼容性测试,云真机-远程真机租用,漏洞分析等多维度的测试服务!
在大数据浪潮下,海量数据处理能力的提升是推动大数据不断前行的基础。俗话说,工欲善其事,必先利其器,由于处理能力亟需提升,因此海量数据处理的分布式系统应运而生,例如hdfs、hadoop、spark、storm、MQ等等。
分布式系统运行的核心是集群化部署,分散化管理,任务均摊,平衡化运行。节点异常、机器异常、运营操作、策略变更都会打破原有的平衡状态进入一种不平衡状态,平台通过状态管理和协议交互逐步演进到另一种平衡状态,同时要保证这种演进过程中系统计算正确性。打破原有的平衡状态的场景非常多,复杂的平衡演进过程中又有很多的场景可能出现,这种交织的变化对分布式系统测试,特别是稳定性测试带来非常大的挑战。
本文将从分布式系统出发,重点介绍分布式系统稳定性测试中的一种应用方法——场景注入测试。
分布式系统测试:
测试执行过程可以归纳为构建输入(包括数据和系统场景)、驱动输入、收集结果进行校验(包括系统状态、计算结果),如下图。
除海量数据的涌入对系统的稳定性造成很多冲击外,复杂的场景变化也时刻敲打着系统的稳定性。下面我将重点分享场景注入测试在分布式系统稳定性测试中的应用。
通过数据驱动分发到两套环境(一套稳定版本环境,一套被测系统环境),对被测系统测试版本环境注入各种场景,通过对比两套环境下的计算结果,挖掘测试版本的系统bug。
对于节点多、角色多、交互复杂的分布式系统来说,节点异常、机器异常、网络异常、运营操作、扩缩容等等场景不可避免,集群规模越大,场景的交叉出现概率倍数增加,时刻对平台的稳定性进行冲击。既然这些场景不可避免,通过人为地触发这些场景,能提前暴露系统的问题,是一种非常有效的预防措施。
分布式系统的特性是高可用、高容灾能力。那么,节点异常、机器异常、网络异常、运营操作、扩缩容等等场景的出现,都不能影响系统的稳定性运行和任务的正常处理。因此,把系统可能发生的场景进行分类并构建出来,注入到被测系统,并与其他测试手段结合使用,即可以提前暴露系统的问题。
基于以上思路,在数据平台部的很多系统上进行了应用,都取得了很好的效果。