白盒自动化平台日记5:开发第二个子模块-用例生成-下游底层算法
1.上期说到,我们的语句覆盖view,仅仅是把要执行的ut源码给到下游函数,再把下游函数返回的最终结果返回给页面展示。这个函数代码如下设计暂时:
其中,get_ut()是简单解析一下,返回个字典,因为我z1~z5的桩函数存放时候偷懒,key和value都放在了一起,所以在这个get_ut函数内给顺便分开。函数结构如图所示:
2.接下来判断语言类型,判断是python,则执行ut_2_yjfg_python()函数,把刚刚返回的字典ut_detail给放进去。这个函数返回的就是最终结果了,直接返回给前端即可。
3.接下来就是重头戏,如何设计解析函数ut_2_yjfg_python(),
我们先来考虑几个问题:
1.这个代码当中必然有需要我们考虑的,和不需要注意的。
回答:我们需要考虑的是 会影响到代码执行方向的语句,那些执行完不会影响的暂时不考虑
2.哪写语句是可以影响代码执行方向的呢?
回答:
- 循环类型:while,for
- 分支类型:if,elif,else,switc
- 中断类型:break,return,exit,raise,continue
- 桩函数:包含用户配置好的桩函数名字代码行,右侧必接(
3.知道了上述的各种特殊代码行,接下来做什么呢?
回答:接下来就要给他们都提取出来,然后提取出它们是哪种,还有它们后面跟的表达式是什么,这就是需要一个字典来存储:{“method”:"",“code”:""}
4.程序是自上而下运行,这些特殊行也应该有顺序,所以给它们加上行数:
{“method”:"",“code”:"",“number”:""}
5.这些各种特殊行是有包含关系的,谁包含谁,可以用child来表示,child是一个列表,里面装的是子特殊代码行的行数:{“method”:"",“code”:"",“number”:"",child:[]}
好了今天先到这里,明天继续!
最后,点击这里返回到目录:
python白盒单元自动化算法,自动生成语句覆盖/路径覆盖等逻辑覆盖用例-持续更新中