软件测试之性能测试

来源:互联网 发布:js复合防水涂料怎么用 编辑:程序博客网 时间:2024/04/29 19:35

最近一直在忙于找工作,很久都没有更新博客了。记得前几天去面试迅雷,面试官问我性能测试的相关问题,自己答得不是很满意,遂今天抽空来整理一下性能测试的知识。

首先说说什么是性能测试。性能测试主要是描述软件在特定的负载和配置环境下程序的响应时间和吞吐率。

既然有性能测试,那么一个软件的性能测试指标有什么?常用的性能指标通常有软件的事务处理效率、IO效率、数据库性能、内存利用率、CPU利用率等一些时间与资源的使用效率。

下来分别说说这几个概念。
软件的事务处理效率:当某一项软件在处理某一项事务时,从开始完成花费的所有时间。这个时间不仅仅包括软件本处理这个操作花费的时间,也包括在手动操作时,也就是说人机交互时花费的时间。

**软件的IO性能:**IO性能一般指的是物理硬盘的IO性能、网络性能和其他硬件的IO性能。

数据库性能:主要指的是在数据库中进行查找、删除、添加、更新记录所花费的时间和资源。

资源利用率:资源利用率就是软件产品实际使用资源数量与所申请的资源总量之间的比例。内存空间利用率,指的是实际使用的内存空间和软件所申请的内存空间的比例。CPU的利用率,即应用程序使用CPU时间与应用程序总的运行时间的比例。

有时候面试官会让你分析以上几种情况如何解决或者怎么测试这项内容。对事务处理时间这项来说,程序应用的弹出窗口如果过多,会降低人机交互效率等。而软件的IO性能主要是说大量读写造成的效率问题,以物理硬盘的IO性能为例,进行大量的读写硬盘操作的软件产品中物理硬盘的IO性能就很容易出现效率低下的问题。作为一个产品本身呢,可以考虑通过降低读写硬盘的次数,提高每次读写数据量来降低硬盘IO性能对软件性能的影响。对数据库性能来说,想必学过数据库知识的人都知道,是对记录的操作(比如增删查改更新)会影响时间和效率,那么针对这种情况,我们肯定会考虑到减少对数据库操作的次数,减少表和表之间的依赖性。

在性能测试中,往往负载测试也是比较关注的点,负载测试是通过对被测软件产品进行各种方式的加载负荷以获得被测产品在各种情况下的性能参数等信息

一般来说,类似负载测试这样的非功能性测试,需要在产品的基本功能稳定后才能开展,所以这种测试一般都会被安排产品的功能测试进行了一段时间之后或者当产品的各项功能基本稳定的时候,这个时候非功能性测试的运行不会受到功能不健全或功能性错误的影响。但值得注意的是,非功能性测试开始之前,就应该开始负载测试,因为其他性能测试大都需要通过负载测试来产生其参考值。

当然,对负载测试来说对系统的测试环境要求很高,对各项软件/硬件、网络等的配置都要接近甚至和真实产品的运行环境相同。软件方面主要包括服务器的操作系统、杀毒软件、数据库软件、web服务环境等。而硬件方面的配置要求包括主板型号、CPU型号、内存大小及型号、硬盘大小及接口类型、网卡的接口类型及支持的带宽等。除了这些还可能需要模拟用户的请求和网络状态等。

针对负载测试另一方面就是关于加载的问题。通常有一次性加载、递增加载、峰谷加载、随机加载,对这几个方面可能需要考虑的问题会相对应多一点,首先需要明白这几个加载方式是怎样的。

  • 一次性加载:即一次性为被测产品加载定量的负载,并且维持一个较长的时间段。该加载策略通常用于验证被测产品在某一固定负载下是否能长时间的正常的工作。
  • 递增加载:即逐步为被测产品增加负载,直到被测产品不能正常工作为止。该加载策略通常用于获取被测产品正常工作的负载极限。
  • 峰谷试加载:即为被测产品加载一个较高的负载,并且维持一段时间,然后再为被测产品加载一个比较低的负载,并且维持一段时间,如此重复。这种加载方式通常用于发现被测产品在不断的申请资源、释放资源的轮回中是否会产生资源或内存的泄露。
  • 随机加载:积随机为被测产品加载定量的负载,并且维持一个较长的时间段。这种加载通常用于模拟真实情况下被测产品的运行状况,并可能发现一些不在测试用例设计范围内的产品缺陷或性能缺陷。
原创粉丝点击