刚毕业时做过半年的CGI开发工作,各种缘由,转而做测试工作至今。做测试时间长了,发现一个优秀的测试人员必须具备一定编程的能力,于是,进入自身的技术修炼阶段,从学习LR性能测试开始。
最近,用C语言纯手工编写了个测试发布功能的脚本,由于是初次接触LR这个工具,对其工作原理了解甚少,只能在实践中摸索,先给大家分享下我写的脚本。
以上脚本是经过多次调试可以使用的脚本,在这过程中,我遇到一个比较头疼的系统报错,从字面意思上理解,很像系统文件损坏。起初,我为char类型的指针变量动态分配了内存空间(因为书上说如果定义指针型的变量最好指定内存空间,防止负载运行时崩溃),设置迭代次数为1,但回放代码时就报错了,代码如下:Action() { //申请指针类型的变量 char *str_userid; char *str_token; char *str_status; char *str_code; char *str_header; /* ......此时省略登录接口请求代码 */ /* -------------ordinary_publish_ticket request-------------- */ //普通发布请求,header拼接,添加ua数据 lr_save_string("{\"user_id\":","str_userid"); lr_save_string(",\"token\":","str_token"); lr_save_string(",\"mac\":\"\",\"screen\":\"\",\"client_version\":\"2.3.0\",\"device_name\":\"\"," "\"device_version\":\"\",\"device_token\":\"\",\"city_id\":\"\",\"channel_id\":\"\",\"platform_id\":\"\"}","str_header"); web_add_auto_header("User-Agent", lr_eval_string("{str_userid}{user_id}{str_token}{token}{str_header}")); web_reg_save_param("status","LB=\"status\":","RB=,\"",LAST); web_reg_save_param("code","LB=\"code\":","RB=,\"",LAST); lr_start_transaction("PUBLISH_OR"); web_custom_request("填写将要request的接口名称", "URL=填写request的url地址", "Method=POST", "RecContentType=text/html", "Snapshot=t2.inf", "Mode=HTML", "Body=填写request需要传递的参数值,根据实际需要进行参数化设置", LAST); lr_end_transaction("PUBLISH_OR",LR_AUTO); /* 关于log输出的代码此处省略了 */ return 0; }
{ char *str_userid=(char*)malloc(256*sizeof(char)); char *str_token=(char*)malloc(256*sizeof(char)); char *str_status=(char*)malloc(256*sizeof(char)); char *str_code=(char*)malloc(256*sizeof(char)); char *str_header=(char*)malloc(256*sizeof(char)); /* 省略接口测试代码 */ free(str_userid); free(str_token); free(str_status); free(str_code); free(str_header); return 0; }
回放脚本的log日志如下:
折腾一天,各种百度,各种尝试,最后查到原因是LR运行的mmdrv.exe占用了大量内存空间,导致内存不足,崩溃了。
为什么耗费这么大内存,虽然申请了内存空间,但明明脚本结束之前我都释放了呢?是不是LR运行机制的特殊性导致的呢?原因我还没有查清楚,求各位有经验的技术大神解答。共同学习进步~
【讨论帖】初步接触LR性能测试工具,关于C语言脚本编程的malloc函数使用
最新推荐文章于 2024-01-31 19:48:04 发布