测试设计方法:容量测试用例设计方法

发表于:2017-10-25 14:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:吕俊廷 肖桂芳    来源:51Testing软件测试网采编

  文章简介
  容量测试是用来研究程序已经加载非常大量的数据后,处理很少量或很大量数据任务时的运行情况。
  一、方法简介
  1. 定义
  容量测试是用来研究程序已经加载非常大量的数据后,处理很少量或很大量数据任务时的运行情况。这一测试主要关注一次处理合理需求的大量数据时功能的运行情况。
  2. 设计方法
  系统中有许多功能都需要进行容量测试,比如:在局容量中进行了限定的指标都需要进行容量测试,另外系统经常扩容或者改版,每次扩容和改版都需要进行相应的容量测试。容量测试是用来测试系统已经加载了大量数据的情况下,系统各个功能的运行情况。容量测试有两个关键点:(1)如何加载大容量的数据;(2)加载数据后,需要进行哪些测试。以下用一个配置表的容量测试进行说明。
  二、加载大容量数据的方法
  添加数据一般需要开发测试脚本,根据数据呈现出的不同规律性,脚本的开发方式也有所差异,下面介绍使用WinRunner开发容量测试脚本的三种方式:
  1. 开发结构化脚本进行容量测试
  结构化脚本类似于结构化程序设计,利用脚本中的指令控制脚本的执行。这些指令一般是选择结构或者迭代结构。选择控制结构使脚本具有判断功能,最普通的形式是if语句。迭代控制结构可以根据需要重复一条或者几条语句,直到满足重复的次数为止。我们正是利用了WinRunner脚本的能够循环添加数据的功能达到容量测试的目的。结构化脚本适用于所添加的数据具有某种规律性,把数据的这种规律性以脚本的形式设计出来就可以完成数据的添加。
  脚本设计步骤如下:
  (1)寻找添加数据的规律,容量测试的数据在添加的时候一般都具有规律性,有的以某个关键字递增,有的以某个指标递增,首先把这种规律总结出来;
  (2)将数据增加的规律以脚本的形式录制下来;
  (3)添加迭代结构和选择控制结构,一般以循环结构满足数据重复添加的需要;
  (4)调试并运行脚本,添加数据;
  下面以添加No.7路由为例进行说明。
  (1)寻找规律。局容量中设定了No.7路由的最大值为255,通过试验,我们发现No.7路由数据以路由号为关键字递增,每次添加路由数据成功后,添加的路由号都被删除,新添加时只需记录先前的位置即可。
  (2)录制单次执行的脚本。如下所示:
  # Add signaling route
  win_mouse_click ("Add signaling route", 165, 46);
  win_type ("Add signaling route","Route");
  win_mouse_click ("Add signaling route", 193, 154);
  (3)添加迭代语句。局容量中No.7路由的最大值为255,我们要将步骤(2)中录制的语句循环执行255次就可以添加255条数据,为此需要在(2)中的脚本上加入控制结构,如下:
  For(i=0;i<255;i++)
  {
  # Add signaling route
  win_mouse_click ("Add signaling route", 165, 46);
  win_type ("Add signaling route","Route");
  win_mouse_click ("Add signaling route", 193, 154);
  }
  (4)循环执行,添加数据。
  2. 数据驱动的容量测试
  如果添加的数据没有规律,那么就需要使用数据驱动脚本。数据驱动是指通过读取本地Excel表的方式进行测试。当执行数据驱动脚本时,WinRunner会读取数据表中的每一笔数据,并放入被参数化的地方,然后执行一次,直到把所有的数据都添加完为止。
  脚本的设计步骤如下:
  (1)将需要添加的数据放入一个Excel表中,表的第一行表示这组数据的名称。表中的数据可以是杂乱无章、毫无规律的数据,WinRunner将读取该表的数据添加到被测系统中;
  (2)录制一个添加数据的普通脚本,我们将在这个脚本的基础上构建数据驱动测试;
  (3)加上开启及关闭数据表的指令;
  (4)加上循环语句,完成读取数据表的每一笔数据的功能;
  (5)将脚本中录制的固定值参数化为数据表的字段值;
  (6)调试并执行脚本,添加数据;
  下面以号码分析为例进行说明。
  (1)建立Excel数据表。将需要进行号码分析的数据添加到该表中,注意第一行表示数据的名称,不是真正的数据。
  (2)录制普通脚本。录制号码分析的普通脚本,其中133851就是添加的号码,后面我们将对这个号码参数化,使其能够读取Eecel数据表中的数据。
  # Add the Analysed Digit Type5 [Local Network] Entry5
  win_mouse_click ("Add the Analysed Digit Type5 [Local Network] Entry5", 174, 25);
  win_type ("Add the Analysed Digit Type5 [Local Network] Entry5","133851");
  (3)添加开启和关闭数据表的指令,数据表只有在打开的条件下才能够读取数据。
  table = "D:\\ table\\config_table.xls"; 表的路径
  rc = ddt_open(table, DDT_MODE_READ);
  if (rc!= E_OK && rc != E_FILE_OPEN)
  pause("Cannot open table.");
  # Add the Analysed Digit Type5 [Local Network] Entry5
  win_mouse_click ("Add the Analysed Digit Type5 [Local Network] Entry5", 174, 25);
  win_type ("Add the Analysed Digit Type5 [Local Network] Entry5","133851");
  ddt_close(table);
  注:该步骤也可以使用WinRunner 自带的数据驱动向导进行添加。
  (4)添加循环语句。通过循环语句逐句读取数据表中的数据,完成数据的自动添加。
  table = "D:\\ table\\config_table.xls";
  rc = ddt_open(table, DDT_MODE_READ);
  if (rc!= E_OK && rc != E_FILE_OPEN)
  pause("Cannot open table.");
  ddt_get_row_count(table,table_RowCount);
  for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
  {
  ddt_set_row(table,table_Row);
  # Add the Analysed Digit Type5 [Local Network] Entry5
  win_mouse_click ("Add the Analysed Digit Type5 [Local Network] Entry5", 174, 25);
  win_type ("Add the Analysed Digit Type5 [Local Network] Entry5","133851");
  }
  ddt_close(table);
  (5)参数化。将固定值133851替换为表的Digit参数,这样每一次循环就可以读取数据表的一个值,而不是原先的固定值了。
  table = "D:\\ table\\config_table.xls";
  rc = ddt_open(table, DDT_MODE_READ);
  if (rc!= E_OK && rc != E_FILE_OPEN)
  pause("Cannot open table.");
  ddt_get_row_count(table,table_RowCount);
  for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
  {
  ddt_set_row(table,table_Row);
  # Add the Analysed Digit Type5 [Local Network] Entry5
  win_mouse_click ("Add the Analysed Digit Type5 [Local Network] Entry5", 174, 25);
  win_type ("Add the Analysed Digit Type5 [Local Network] Entry5", ddt_val(table,"Digit"));
  }
  ddt_close(table);
  (6)调试并执行步骤5中的脚本,即可完成数据的自动添加。
  3. 结构化脚本和数据驱动相结合
  如果添加的数据跟测试环境(如局向号、版本号等)有很大的关系,但是测试环境一旦确定下来,其数据又有很大的规律性,在这种情况下添加数据就需要将上述的两种方法结合起来开发脚本。使用数据驱动应对测试环境的变化,使用结构化脚本应对测试数据的变化,具体的使用方法2.1和2.2中已经说明,在此不再赘述。
  三、 加载数据后的测试项
  容量测试需要测试的内容:一是大容量的数据是否可以加载成功;二是加载大容量数据后系统是否可以正常运行。第二点需要根据系统的特点不断的进行整理总结,如下是一个配置表加满后的测试设计项目:
  1. 能够添加最大的容量数据,在达到最大容量时功能能够正常运行;
  2. 达到最大容量后,该功能的显示、修改和删除正常;
  3. 超出容量最大值时会有限制,且提示已经达到了最大容量;
  4. 能够进行备份、恢复和数据同步,同步后系统能够稳定的工作;查看前台表,数据跟后台一致,尤其是最后的几条记录;
  5. 关联功能的测试,添加大容量的数据后,与该功能关联的功能能够正常使用;
  6. 进行主备倒换和重启,单板能够启动并运行正常;
  7. 日志管理中没有异常的日志信息;
  8. 告警管理中,如果有相关的告警其告警信息正确;
  9. 加满数据后不影响后台的使用,后台的CPU和内存冲高后可以恢复;
  10. 前台的CPU和内存冲高后可以恢复;
  11. 达到最大容量后,删除部分排序在前的数据,再次增加:
  (1)配置数据达到最大容量;
  (2)删除部分中间的数据或者排序在前面的数据;
  (3)再次增加数据,测试是否能够增加成功。
  四、总结
  容量测试不仅仅是添加数据就可以了,要进行全面、深入的容量测试,必须在加载数据的基础上从多个不同的角度测试系统。本文给出了加载数据的方法和加载数据后的测试样例,实际应用中需要根据不同系统的特点进行不同的设计。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号