一、 中间件稳定性测试的目的
软件产品进行稳定性测试的目的是,为了保证在产品发布后,能够在各种应用环境稳定运行,满足用户7×24小时的运行要求。
对于中间件产品,由于面临的应用场景各式各样,这就要求中间件在不同的应用场景中,都能够稳定运行。
在实际的运行环境中会面临各种复杂的情况和异常,这种异常可能是硬件问题、系统问题、非法数据问题、业务流程问题等,由于中间件的特殊性,要求中间件的稳定性不仅是在正常业务运行中,能够支撑7×24小时运行,还要求在系统出现异常时,能够屏蔽这些异常,或者是局部的异常不影响整个系统的运行。这就要求中间件能够尽可能屏蔽各种异常情况,保证业务系统的稳定运行。所以中间件的稳定性不仅体现在中间件自身的稳定性,还体现在保证业务系统的稳定运行上。
中间件稳定性测试的目的就是检验产品在正常情况下,以及各种异常情况下是否能够持续运行,并保证业务处理结果的正确性。
二、 测试级别
中间件的稳定性测试,可划分为三个级别的测试。
级别一:正常运行
使用全新的环境,包括服务器和网络,在没有外界干扰的情况下,长时间运行模拟用户实际使用场景的测试程序,检验产品是否能够连续运行预定的时间,并且系统资源的占用保持稳定,没有增长的趋势。
级别一检验的是中间件最基本的稳定性,是保证中间件能够在实际环境中正常运行的最基本要求。通过这个级别的测试,表示产品已经达到了能够交付用户使用的基本质量要求。
通过这个级别测试的产品,一般来讲,在实际的项目中,需要较多的售后技术支持的配合,保证在应用程序的逻辑中,和中间件有关的部分的使用的正确性。
级别二:容错性运行
在通过正常测试后,表明产品在正常情况下,能够稳定运行。但是通过测试目的中的分析可以看出,实际业务系统可能会存在各种非法的业务处理,非法的业务数据,中间件要能够屏蔽这类问题,至少是这类问题不会对中间件本身的运行产生影响,在《中间件测试》一文中,探讨过这个问题,由于中间件位置的特殊性,一旦中间件的运行出现问题,往往会导致整个系统无法运行,所以中间件要有很好的容错性。因此,级别二的测试是在级别一的测试场景中,增加模拟的非法或错误的业务数据和业务逻辑,进行长时间的测试,检验中间件的容错性和系统资源的占用的稳定性。
通过级别二的稳定性测试,中间件自身的健壮性得到检验,在实际的应用系统中,不会因为业务系统的部分异常导致中间件的奔溃。
级别三:破坏性运行
前面两个级别的测试基本没有考虑外部环境的异常对产品的影响,以及产品本身可能会遭到破坏等因素。
破坏性从外部环境和产品自身两个方面来考虑。
外部环境
主要考虑软件运行所需要的各种外部软硬件环境受到破坏,或资源不足等因素,包括系统重启动、硬盘空间不足、系统内存不足、网络中断或抖动等情况。在外部系统出现严重的问题时,中间件应该能够提供自我保护机制,避免自身的奔溃。例如,当内存不足时,中间件能够提示错误信息并停止工作,或者是预先报警等,等内存资源恢复时,中间件能够继续工作,在这个过程中如果中间件奔溃,可能造成数据丢失,交易失败。
产品本身
可以频繁启动停止产品,手工杀掉产品的部分守护进程和共享资源等,检验产品是否能够恢复或者是准确提示。
级别三的测试实际上是使用各种手段“折腾”产品,检验产品在极端情况、突发事件时,是否能够保护自身,进而保护整个系统,避免数据丢失、交易异常等问题出现。
对于级别三的测试,很多情况下,产品可能无法正常恢复或保证系统数据不丢失,但是通过级别三的测试,我们能够掌握产品在各种极端情况下的表现,在产品说明书中进行提示,或者在监控系统中预先报警,通过其他方法来避免这种情况的发生。
三、测试关注点
级别一:
系统资源的变化,包括内存、CPU、IO、端口、硬盘等,产品本身对系统资源的消耗是否成上升趋势
级别二:
系统资源的变化包括内存、CPU、IO、端口、硬盘等,产品是否能够检测到异常的数据,异常业务逻辑,非法使用,是否会影响系统的运行,是否会准确记录日志等信息。
级别三:
产品是否能够正常恢复,是否具有自我保护机制,运行结果是否正确。