2015-2-26【erlang】 构造伪随机数,来测试需要随机数据的erlang代码
2015-02-26 15:40
162 查看
今天还在闷头写erlang 服务器程序的测试代码。在上线阶段加入,逆向分析逻辑代码,真是蛋疼,erlang,没有想象中的好掌握。嗯,不懂之处,要多问问老大,有时候,他们一句点醒,可以省下自己很多宝贵的生命,继而提高效率。
今天写erlang测试代码的时候,碰到了一个问题,就是某个源代码中的逻辑部分需要用到 random:uniform()/random:uniform(N),而随机数的加入,会影响到结果的生成,此时结果不是预知的,不知道如何写测试代码,后来问了老大,原来,他们早已经解决这个问题,好记性不如烂笔头:
利用条件编译 和 进程字典 来设置自己的 “随机数”,继而可控制程序的结果方便写测试代码:
pj_random:uniform/1函数
在 测试代码中某个部分写入如下代码,可构造伪随机值
今天写erlang测试代码的时候,碰到了一个问题,就是某个源代码中的逻辑部分需要用到 random:uniform()/random:uniform(N),而随机数的加入,会影响到结果的生成,此时结果不是预知的,不知道如何写测试代码,后来问了老大,原来,他们早已经解决这个问题,好记性不如烂笔头:
利用条件编译 和 进程字典 来设置自己的 “随机数”,继而可控制程序的结果方便写测试代码:
pj_random:uniform/1函数
-ifndef(TEST). %%非测试,则通过 条件编译 来使用用 官方自带 的随机函数,否则,用 进程字典 来构造 伪随机值 uniform() -> random:uniform(). uniform(N) -> random:uniform(N). -else. uniform() -> case erlang:get(pj_random_mock) of [H | T] -> erlang:put(pj_random_mock, T), H; _ -> random:uniform() end. uniform(N) when is_integer(N) andalso N > 0 -> case trunc(uniform() * N) of N -> N; Result -> Result + 1 end. -endif.
在 测试代码中某个部分写入如下代码,可构造伪随机值
erlang:put(pj_random_mock, [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]),
相关文章推荐
- 用随机数据测试自己的代码找出错误
- 从MySQL数据库表中取出随机数据的代码
- 大数据量分页存储过程效率测试附代码
- 大数据量分页存储过程效率测试附代码
- c版快速排序 + 随机产生一组测试数据
- 大数据量分页存储过程效率测试附代码
- 经过测试的 可以使用的远程注入代码!!!!!我的VC里面缺少一个stdafx.h需要拷贝一个到程序
- 网站测试自动化系统—在测试代码中硬编码测试数据
- 大数据量分页存储过程效率测试附代码
- 大数据量分页存储过程效率测试附代码
- 大数据量分页存储过程效率测试附代码
- (转)大数据量分页存储过程效率测试附代码
- 大数据量分页存储过程效率测试附代码
- 测试数据的批量添加代码
- 大数据量分页存储过程效率测试附代码 (转载)
- 大数据量分页存储过程效率测试附代码
- 用存储过程构造大批量测试数据
- 大数据量分页存储过程效率测试附代码
- 使用AWK构造性能测试数据
- 0306数据备份整理-【测试页面】C#代码