软件(含云系统)本身的复杂性决定了在软件的整个生命周期中风险的大量存在,而严重风险可能会导致整个项目的失败。因此,对软件系统进行全方位评测越来越引起人们的重视。
性能评测
大多软件都有其特殊的性能或效率目标要求,说明在一定的工作负荷和格局分配条件下,多数软件都具有响应时间及处理速度等特性。
性能测试概述
性能测试主要是通过获取与行为相关的指标数据,如响应时间、系统容量、吞吐量和限制等指标来评估测试对象的性能。
性能测试的主要目标体现在以下几个方面:
1)系统并发性。在系统可以接受的性能水平以及濒临崩溃的临界情况下,系统可以支持的并发用户数目。
2)系统瓶颈。整个系统中瓶颈所在位置。
3)系统可扩展性。系统具备多大规模就可实现设计目标,并展示出好的系统性能。
系统性能评测的关注点集中在评测指标和评测方法上,根据预先确定的评测指标,针对不同的评测对象,设计相应的评测方法进行性能测试。在传统的性能测试中,常用的性能评测指标包括以下几方面:
1)响应时间、从用户发出请求到收到服务器的响应所经历的延迟。
2)最大并发用户数。系统运行过程中所能承受的同时向服务端发送请求的最大用户数。
3)吞吐量。在某一个特定的时间单位内系统所处理的用户请求数量。一般来说,吞吐量会随着用户请求数目的增多而增大。但是当用户请求达到系统能够并发处理的最大用户请求数目时,用户的请求数目就是最大吞吐量。因此,通过吞吐量可以找到系统的瓶颈问题。
4)资源使用率。系统中各种资源的使用情况,一般用资源的实际使用占总资源可用量的百分比来表示。
5)聚合带宽。系统能够提供的最大数据传输率,即对外部应用系统可见的数据传输率,用来反映系统对外提供服务的整体性能,是一个综合测评指标。
确定了性能指标之后,还需要设计选择相应的性能评测方法。传统的性能评测方法有以下几种:
1)负载测试。主要测试软件系统是否达到需求文档设计的目标。比如软件在一定时期内,最大支持多少并发用户数、程序请求出错率等。
2)压力测试,这也称为强度测试,主要测试软件在超负荷情况下的运行情况。譬如在一定时期内,CPU利用率、内存使用率、硬盘I/O吞吐率和网络吞吐量等。压力测试和负载测试的最大差别在于测试目的不同。
3)并发测试。这主要是指负载测试和压力测试的过程,即通过逐渐增加同时访问系统的用户数量,直至达到系统的性能瓶颈,再通过综合分析来确定系统并发性能的过程。
4)容量测试。确定系统最大承受量,如系统最大用户数、最大存储量和最多处理的数据流量等。
性能测试工具是软件开发工具的重要组成部分,通常指用来支持压力测试、负载测试,能够用来录制和生成脚本、设置和部署场景、产生并发用户以及向系统施加持续压力的工具。性能测试工具能够模拟大量用户同时访问软件时的情况,同时也能模拟单个用户访问软件时的个性化参数。
性能测试的工具有很多,主流的产品有:①LoadRunner,一种工业标准级负载测试工具,可以预测系统行为和性能,通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,能够对整个企业架构进行测试;②lometer,Windows系统下对存储子系统的读写性能进行测试的软件,可以显示硬盘系统的最大/O能力、硬盘系统的最大吞吐量、CPU使用率和错误信息等:③JMeter,Apache开发的基于Java的压力测试工具,最初被设计用于Web应用测试,后来被扩展到其他测试领域,可以用于对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度并分析其整体性能。
云计算的性能测试
目前对于云的性能测试主要是针对特定云平台、云存储服务性能和云应用等进行的。例如针对微软的Azure云平台,提出了一个开源的基准测试套件AzaureBench,以协助高性能计算应用开发。Yahoo公司开发了一个用来对云服务进行基础测试的评测框架 YCSB(Yahoo Cloud Serving Benchmark),目标是促进新一代云数据服务系统的性能比较。Yang等人考虑到故障恢复对云服务性能的影响,并据此提出了一种以服务响应时间为主要依据的性能评价模型。
云计算性能测试的主要目标是验证在各种负载情况下云服务的性能。进行性能测试的最佳方式是使得多个测试用户运行完整的云服务测试,包括请求提交和应答验证。性能测试不仅通过指定的并发请求数目来监视服务器的响应速率,还要测试各类负载是否导致云服务功能性故障。因此,要求云服务性能测试工具能够定制性能测试场景来执行云计算性能测试。云计算性能测试可设置的场景主要包括缓冲区测试、线性增加和稳定负载等。通过使用不同的测试场景来使用不同的测试用例,同时还应支持跨越远端的云服务器分布虚拟用户,从而模拟极限测试与压力测试。
与传统软件的性能测试相比,除进行常规的负载测试和压力测试等外,云性能测试还需要进行:①稳定性测试,如果对系统平台有连续运行的要求,可对系统进行疲劳性测试,确认系统是否能够满足相应的连续运行时间要求;②大数据量测试,在系统平台具有一定业务数据量的背景下进行测试,目的是发现在小数据量情况下测试不易发现的潜在问题与缺陷。