`
linkyou66
  • 浏览: 228341 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

loadrunner生成唯一值

 
阅读更多
<div class="tit">LoadRunner生成唯一数</div>
<div class="date">2009年02月17日 星期二 22:57</div>
<table style="" border="0"><tbody><tr>
<td>
<div id="blog_text" class="cnt">
<div style="background-color: #f9f7ed;">
<div class="source">
<span style="color: #902000;">void</span> <span style="color: #06287e;">Main</span>()<br>{<br><span style="color: #902000;">int</span> i;<br><span style="color: #902000;">char</span> uStr[<span style="color: #40a070;">64</span>];<br> srand( (<span style="color: #902000;">unsigned</span>)time( <span style="color: #007020;">NULL</span> ) );// 最好放在vuser_init里<br><br><span style="font-weight: bold; color: #007020;">for</span> (i<span style="color: #666666;">=</span><span style="color: #40a070;">0</span>;i<span style="color: #666666;">&lt;</span><span style="color: #40a070;">10</span>;i<span style="color: #666666;">++</span>) {<br> GetUniqueString(i,uStr);<br> lr_output_message(uStr);<br> }<br>}<br><br><span style="color: #902000;">void</span> <span style="color: #06287e;">GetUniqueString</span>(<span style="color: #902000;">int</span> inValue,<span style="color: #902000;">char</span> <span style="color: #666666;">*</span>outStr)<br>{<br><span style="color: #902000;">int</span> id, scid;<br><span style="color: #902000;">char</span> <span style="color: #666666;">*</span>vuser_group; <br><br> lr_whoami(<span style="color: #666666;">&amp;</span>id, <span style="color: #666666;">&amp;</span>vuser_group, <span style="color: #666666;">&amp;</span>scid);<br> web_save_timestamp_param(<span style="color: #4070a0;">"tStamp"</span>, LAST);<br> sprintf(outStr,<span style="color: #4070a0;">"%s%05d%010d%04d"</span>,lr_eval_string(<span style="color: #4070a0;">"{tStamp}"</span>),id,rand(),inValue);<br> free(vuser_group);<br>}</div>
</div>
<br> 建议把随机种子(srand( (<span style="color: #902000;">unsigned</span>)time( <span style="color: #007020;">NULL</span> ) );)放在脚本初始化函数里,只需要初始化一次。若放在子函数里,每次调用都初始化一下的话,产生的随机数可能是一样的。是不安全的代码!<br> 这个唯一数,有四关:毫秒级的时间+虚拟用户ID+随机数+传入的参数;基本上在同一个Controller里不会出现重复了!再稍微处理一下就可以得到想法的东西了,譬如:<a href="http://hi.baidu.com/higkoo/blog/item/91c7e535db04571691ef39e2.html" target="_blank">LoadRunner实现:计算字符串Md5</a> 加密成md5串,再改装一下就成GUID了!<img src="http://img.baidu.com/hi/jx/j_0047.gif" alt=""><br><br> 这里有一个安全问题值得说明,随机种子最好只初始化一次,随机数的算法是和时间有一定关系的。若把随机种子放在子函数里,你会发现生成出来的随机数都是一样的。<br> 不要惊讶,为什么说是个安全问题,说严重一点,随机数是一种算法,有可能被别人劫获并计算出下一个随机值,故不安全!</div>
</td>
</tr></tbody></table>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics