在软件性能测试过程中,测试数据的准备是一个非常系统化、工作量非常庞大一项工作。如何准备支持不同业务操作、不同测试类型的大量测试数据来满足负载压力测试的需求是性能测试过程中经常面对的一个重要话题。
  中国软件评测中心在历来的性能测试过程中重视性能测试数据的准备工作,从而保证了性能测试工作的顺利进行,也保证的性能测试结果的准确性和有效性。中国评测在近期开展的某金字工程非功能测试项目使作者了解到数据准备工作得系统性、复杂性,由此作者将性能测试数据准备工作简单归纳,希望对从事性能测试工作的测试人员有一定的借鉴和参考。本文重点介绍一下性能测试要准备哪些数据及准备数据的常用方法。
  一、需要准备的数据种类
  在执行负载压力测试前,一般需要准备三类数据:初始化数据、铺底数据(历史数据)和参数化数据。
  1.    初始化数据准备
  业务系统安装部署完成后,并不能马上进行相关业务的负载压力测试,需要对系统进行初始化操作,系统初始化主要对增加系统中的基本角色信息、机构信息、权限信息、业务流程设置等数据,这些数据是业务系统能够开展相关业务的基础。初始化数据是为了识别数据状态并且验证用于测试的测试案例的数据,需要在业务系统搭建完成后按照系统实际运行要求实施导入,供测试中使用。
  2.    铺底数据(历史数据)
  当业务系统刚刚上线的时候,由于数据库中数据量相对较少,系统整体响应时间很快,用户使用体验较好。但随着业务的持续开展,业务系统数据库中的数据量会成倍的增加,业务系统的相关操作响应时间会因为数据库中业务数据的快速增长等而变的越来越长,用户使用体验会变得很难忍受,因此,在性能测试时,需要加入相当规模的铺底数据,来模拟未来几年业务增长条件下的系统相关操作的性能表现。例如:要测试并发查询业务,那么要求对应的数据库和表中有相当的数据量以及数据的种类应能覆盖全部业务。
  3.    参数化数据
  在负载压力测试过程中,为了模拟不同的虚拟用户操作的真实负载情况,同时由于业务系统中大部分业务操作的交易数据不能重复使用,因此,需要为不少用户输入信息准备大量参数化数据,以保证正常实施负载压力测试。参数化测试涉及的范围很多,例如,模拟不同用户登录系统,需要准备大量用户名及相应密码参数数据;模拟纳税人纳税申报,需要准备大量的纳税人识别号、纳税人内码或纳税人系统内部识别号等参数数据,这类数据准备要求符合实际运行要求并且保证数据表之间的关联关系。
  二、数据准备的常用方法
  1、对于业务系统的初始化数据一般采用手工创建和数据导入的方式来完成,其中新建系统或者新旧系统差异较大的这类系统需要手工创建,而具有遗留系统的升级系统很大一部分可以通过数据导入的方式完成数据初始化工作。
  2、铺底数据的准备通常数据翻倍的方式来完成。
  数据翻倍需要采用找出数据库之间的表结构关系,弄清楚数据库里面主表和附表之间的关系是一对多或多对多,对于一对多关系的要推算一张主表的一条记录大概对应附表的几条数据,并据此把数据翻倍。具体实施数据翻倍时可以利用CPU的运算能力高效率地生成的数据,并导入数据库,从而产生出所需的铺底数据。或者通过编写和执行存储过程来完成。
  准备铺底数据要注意以下几个原则:1.数据库中的数据量要比内存大上若干倍;2.数据在准备的时候,要保持原表的约束关系;3.每张表的数据量要符合真实情况。
  3、参数化数据准备一般采用从数据库提取现有数据或者人工添加数据的方式来完成。
  1)使用数据库现有真实数据。如测试100个用户同时进行纳税申报的情况,如果已有100个真实的用户账号信息,没个用户也有可操作的若干组纳税户,那么在准备数据时,可以直接调用这些现有的数据来完成。
  2)人工添加准备数据。以登录测试为例,如果现在没有100个现成的真实用户账号信息,那么需要自己手动去创建,当然创建的方式有很多种了,可以使用LoadRunner进行创建,也可以写一段小程序去创建,当然还可以选择手动创建。但是当数据量很大时,选择手动创建是一件很困难的事,如测试BOSS(Business & Operation Support System)系统,几千个虚拟用户并发,如果手动去准备这些数据很麻烦。因此对于并发度较高的业务,我们可以采用数据库后台对可用数据进行数据翻倍的方式来完成,也可以通过LoadRunner执行并发测试来完成,例如可以通过执行用户注册并发测试来完成新用户创建。