数据库性能测试方法讨论

发表于:2008-5-04 16:18

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

 作者:陈嘉祥 王治 方耀等    来源:51Testing投稿

分享:

2) JAVA应用
        测试任务:测试待选的数据库的性能;
        数据查询性能指标:20个用户并发,每秒执行增删改语句数不少于1000条;
        数据库性能测试需求:数据库选型;
import java.sql.*;
import java.util.Date;
import java.util.Properties;
public class testsybase {
    String sDbDriver = "com.*.*.*.*";
    String sConnStr = "jdbc:*:*:ip_adress:port/sid";
    private Connection conn = null;
    private Statement stmt = null;
    ResultSet rs = null;
    public testsybase()
    {
      try {
          Class.forName(sDbDriver);
        } catch (java.lang.ClassNotFoundException e) {
            System.err.println("testdb():" + e.getMessage());
        }
    }
    public void executeUpdate()
     {
         stmt = null;
         rs = null;
         try {
             conn = DriverManager.getConnection(sConnStr, "*", "*");
             stmt = conn.createStatement();
             System.out.println(new Date());
             int j=0;
             for(int i=0;i<10000;i++){
                 j=10001+i;
                 //追加
                 sql="insert into tablename(*, *, *...) "+"values('test"+i+"',*,*...)";

                 //更新
                 //sql="update tablename set field_no='testupdate',*,*... where filed_no="+j;

                 //删除
                 //sql="delete from tablename where tablename="+j;
                
                 //查询
                 //sql="select * from tablename where tablename="+j;
                
                 stmt.executeUpdate(sql);
                 //rs=stmt.executeQuery(sql);
                 //rs.next();
             }

             System.out.println(new Date());
             //rs.close();
             stmt.close();
             conn.close();
             System.out.println("Update is secuessful!");
         } catch (SQLException ex) {
             System.err.println("executeUpdate:" + ex.getMessage());
         }
    }

     public void executeSql(String sql)
    {
        stmt = null;
        rs = null;
        try {
            conn = DriverManager.getConnection(sConnStr, "*", "*");
            stmt = conn.createStatement();
            rs=stmt.executeQuery(sql);
            rs.next();
            System.out.println("Count is "+rs.getString(1));
            stmt.close();
            conn.close();
            //System.out.println("OK");
        } catch (SQLException ex) {
            System.err.println("executeSql:" + ex.getMessage());
        }
    }

    public static void main(String[] args) {

        testsybase mytest = new testsybase();
        mytest.executeUpdate();
    }
}
        上面的java代码调试通过后,可以通过注释不同的代码段,分别测试增加、修改、删除、查询的等情况的性能,并得出时长,反算出性能。
        这里说明一点,java代码即可以单独的打成jar包,放在服务器上运行,也可以直接在本地IDE运行。如果觉得LoadRunner专业,也可以放到LoadRunner里运行,选择Java Vuser协议,这里需要注意的是,LoadRunner运行时,需要设置好Runtime Settings中的Classpath,代码运行需要的jar包都要加到这里。提醒一点的是,笔者使用的是LoadRunner 8.0,在跑上面的代码时,使用的是Java 1.4的虚拟机,高版本如1.5就不能成功运行。
        从这个例子可以看出,此种应用灵活性强,任何数据库都可以做测试,只要有提供的驱动即可,如果需要,还可以扩展其他的方法。但测试人员需至少掌握一种高级编程语言,对数据库操作也必须很熟悉,要求较高,所以又引出了下面的Benchmark的应用方法。


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

精选软件测试好文,快来阅读吧~

精彩评论

  • gaoqing201008
    2011-12-02 12:08:57

    非常好,对我帮助挺大的。

  • lovetesting52
    2008-5-07 13:08:35

    水平不错,可惜脚本我看不懂.辛苦楼主了,争取以后多看点编码方面的知识。

  • zhangtao
    2008-5-07 09:31:10

    vmvare_192.168.1.47
    username
    password
    SELECT * FROM T_TASK_ALARM_TYPE WHERE TYPE_CODE=7

    脚本中就这几个变量吗??

  • walkman2508
    2008-5-05 15:56:24

    真是好东东~感谢分享

  • chenyunjun169
    2008-5-05 00:29:00

    好,我也正在学习这个!

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号