• 老李分享:loadrunner操作mysql数据库


    老李分享:loadrunner操作mysql数据库

     

         在poptest测试开发工程师就业培训的课程中,针对一套商业系统进行性能测试,目标是mysql后台数据库的负载能力,在这里我把测试代码进行了简化,主要是循环单插入数据100次,只是针对单表进行插入,在课堂上我们构造了复杂的应用测试场景,后台表涉及到多表,通过频繁插入操作查看负载情况。db2的数据库操作大家可以看前面的文章。

         测试开发工程师没有那么难,关键是训练,poptest是唯一一家在做测试开发工程师培训的机构,在不断的摸索更加有效的培训方式。

    #define MAX 100
    Action()
    {
     
      int i,rc,fp;
      int db_connection; // 数据库连接
      int query_result; // 查询结果集 MYSQL_RES
      char** result_row; // 查询的数据
      char *server = "127.0.0.1";
      char *user = "laoli";
      char *password = "0123456";
      char *database = "testing";
      int port = 3306;
      int unix_socket = NULL;
      int flags = 0;
      long t;
      time(&t);

      rc = lr_load_dll("c:\Program Files\APMServ5.2.6\MySQL5\lib\libmysql.dll");
     
      if (rc!= 0) {
        lr_error_message("Could not load libmysql.dll");
        lr_abort();
      }
     
      // 创建MySQL对象
      db_connection = mysql_init(NULL);
      if (db_connection == NULL) {
        lr_error_message("Insufficient memory");
        lr_abort();
      }
     
      // 连接到MySQL数据库
      rc = mysql_real_connect(db_connection, server, user, password, database, port, unix_socket, flags);
      if (rc == NULL) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
      }
        // 打开文件资源(初始化)
      fp=fopen("d:\Test\VirtualAccount\CreateVirtualData.txt","at");
      if(fp == NULL){
         lr_log_message("Error !");
       //fprintf(stderr,"fopen failed!%s ",strerror(errno));
      fclose(fp);
      lr_abort();
      }

    //  其中 crtime必须为当日日期 pay_id每条记录不能重复。number为商品ID,money为本次入账金额。
       for(i=0;i<=MAX;i++)
       {
      
       // lr_output_message("Count: %d ",i);  
         lr_save_string (lr_eval_string("insert into tudou_money (`user`,`name`,  `time`, `num`) "
     "VALUES ('010','{name}', '2015-08-17 08:11:10', '1')"),"InsertQuery");
      rc = mysql_query(db_connection, lr_eval_string("{InsertQuery}"));
         
        lr_output_message("--------Current SQL is :%s",lr_eval_string("{InsertQuery}"));
       //写文件操作
        fprintf(fp,"CurrnetTime is:%s Counts:%d ---Current SQL is :%s ",ctime(&t),i,lr_eval_string("{paramInsertQuery}"));

         //对执行语句的结果判断,当出错时输出错误到指定文件中并关闭资源终止脚本执行。

        if (rc != NULL) {
        fprintf(fp,"CurrnetTime is:%s Counts:%d ---Error SQL is :%s ",ctime(&t),i,lr_eval_string("{paramInsertQuery}"));
        mysql_close(db_connection);
        fclose(fp);

       lr_abort();
      }
     

       }
      if (rc != 0) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
      }
      /*
      // 从数据库读取当前插入的数据并显示
      lr_save_string (lr_eval_string("select * from test_users where user_id='1'"),"SelectQuery");
      rc = mysql_query(db_connection, lr_eval_string("{SelectQuery}"));
      lr_output_message("--------Current SQL is :%s",lr_eval_string("{SelectQuery}"));
      if (rc != 0) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_close(db_connection);
        lr_abort();
      }
     
      query_result = mysql_use_result(db_connection);
      if (query_result == NULL) {
        lr_error_message("%s", mysql_error(db_connection));
        mysql_free_result(query_result);
        mysql_close(db_connection);
        lr_abort();
      }
      */
        // 释放MySQL与文件资源
      mysql_close(db_connection);
      fclose(fp);
      return 0;
    }

      整个代码核心思路就是打开连接,操作数据库(操作n次,形态多样),关闭连接,

       poptest测试开发工程师,性能测试咨询群:450192312

  • 相关阅读:
    对数据库中表的指定行的操作
    查找表中指定行的数据
    Smart.coder每日站立会议08
    SmartCoder每日站立会议07
    SmartCoder每日站立会议06
    SmartCoder每日站立会议05
    SmartCoder每日站立会议04
    SmartCoder每日站立会议03
    SmartCoder每日站立会议02
    SmartCoder每日站立会议 01
  • 原文地址:https://www.cnblogs.com/poptest/p/4936033.html
Copyright © 2020-2023  润新知