关闭

性能测试中批量数据制作实例的多种方法讨论

发表于:2008-2-01 18:35

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

 作者:方耀、王兰、张曙丽    来源:51Testing投稿

三、 三种解决方法
1、 JAVA编程批量制造数据
//==============Insert.java=====================
public class Insert
{
 public static void main(String []args)
 {
  int count1 = 0;
  int t1 = 0;
  int t2 = 0;
  
  while(count1 < 100)
  {
   count1 += 1;
   int count2 = 0;
   while(count2 < 4)
   {
    count2 += 1;
    t1 += 1;
    
    switch(count2)
    {
     case 1:
     System.out.println("INSERT INTO `tbl_topic_object` VALUES ('" + t1 + "', '弃权', '" + count1 + "', '1', '2007-08-28 18:33:08', '', '3', '-1', '1', null);");break;
     case 2:
     t2 = 3 * (count1 - 1) + 1;
     System.out.printf("INSERT INTO `tbl_topic_object` VALUES ('" + t1 + "', '代表2000");
     System.out.printf("%03d",count1);
     System.out.printf("', '" + count1 + "', '1', '2007-08-28 18:33:14', '', '0', '" + t2 + "', '2', null);");
     System.out.println();break;
     case 3:
     t2 = 3 * (count1 - 1) + 2;
     System.out.printf("INSERT INTO `tbl_topic_object` VALUES ('" + t1 + "', '代表2000");
     System.out.printf("%03d",count1);
     System.out.printf("', '" + count1 + "', '1', '2007-08-28 18:33:14', '', '0', '" + t2 + "', '3', null);");
     System.out.println();break;
     case 4:
     t2 = 3 * count1;
     System.out.printf("INSERT INTO `tbl_topic_object` VALUES ('" + t1 + "', '代表2000");
     System.out.printf("%03d",count1);
     System.out.printf("', '" + count1 + "', '1', '2007-08-28 18:33:14', '', '0', '" + t2 + "', '4', null);");
     System.out.println();break;
     default:
      System.out.println("Error!");   
    }
   } 
   } 
  System.out.println("Successful!");
  }
}

评:使用关键字替换的方法,避免了大量的字符串拼接,使代码看起来干净清晰。
2、 UNIX SHELL脚本批量制造数据
HEAD="INSERT INTO \`tbl_topic_object\` VALUES ("
F4F5F6="'1', '2007-08-28 18:34:46', '', "
TAIL="null);"
COUNT1=0
COUNT2=1
cat /dev/null > out.txt

while [ $COUNT1 -le 99 ]
do
 while [ $COUNT2 -le 4 ]
 do
  TMP=`expr $COUNT2 + \( $COUNT1 \* 4 \)`
  printf "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bProcess: 400 / $TMP"
  F1=`printf "%-3s" $TMP`
  TMP=`expr $COUNT1 + 1`
  F3=`printf "%-3s" $TMP`
  
  if [ $COUNT2 -eq 1 ]
  then
   F2="'弃权       '"
   F7="'3'"
   F8=`printf "%-3s" -1`
  else
   F7="'0'"
   TMP=`expr $COUNT1 \* 3 + $COUNT2 - 1`
   F8=`printf "%-3s" $TMP`
   TMP=`expr $COUNT1 + 1`
   TMP1=`expr $COUNT2 - 1`
   TMP2=`printf "%03d" $TMP`
   F2="'代表"$TMP1"000"$TMP2"'"
  fi
  F9="'$COUNT2'"
  TMP_STR=$HEAD"'$F1', "$F2", '"$F3"', "$F4F5F6$F7", '"$F8"', "$F9", "$TAIL
  echo "$TMP_STR" >> out.txt
  COUNT2=$((COUNT2+1))
 done
 COUNT1=$((COUNT1+1))
 COUNT2=1
done
echo "Process successfully!"

评:使用两层循环,算法清晰简洁,部分使用算术表达式,语句上也来得更好看,最后结果也是经过格式整理的,比较齐整,不过要注意这些补进去的空格在插入数据表后会不会对后续工作有影响。

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • shark_jr
    2010-2-03 13:58:48

    用存储过程不久完了,很简单。

  • hotray
    2008-9-05 23:35:02

    为什么不用DATA FACTORY???

  • dongchanglin
    2008-6-17 17:40:11

    为什么不用存储过程呢?

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号