关于复杂条件语句的代码的一些所思所想
问题
一堆的条件语句,让一个想法达到完整正确,但是修改了一个变量总是会影响到别的地方。
这些“别的地方”可能只哪些地方么?
改变了别的分支条件中的变量值
有什么好的办法呢?
有幸学过单元测试,知道了单元测试中的一些专业术语:
1.语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。
2.判定覆盖(也叫分支覆盖):设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次。
3.条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次。
4.判定——条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次,并且每个可能的判断结果也至少执行一次。
5.条件组合测试:设计足够的测试用例,运行所测程序,使程序中每个判断的所有条件取值组合至少执行一次。
6.路径测试:设计足够的测试用例,运行所测程序,要覆盖程序中所有可能的路径。
一个条件语句由:判断语句(),标识符if,代码块{},即if(){}组成
如果只测试条件判断语句,
1、判定覆盖,指的是所有的if(){}都得执行到
2、语句覆盖:每个{}中的每行都得执行到位
3、条件覆盖:每一个()中的每个条件都得执行到位
4、判定——条件覆盖:在各个()中的每种条件下的if(){}都得执行到位,也就是一一对应关系
5、条件组合测试:对于每个()中的每个判断语句组合都得执行到位
6、路径测试:所有的if(){}都可以执行到位----从开始到结束在()条件下经过的if(){}都得执行到位
然而自己写的代码,一般都是直接写if语句的。
根据以上的知识和代码经验,我有了如下方法:
1、将每个路径写下来
2、每个不同路径下需要哪些变量也写下来。
这样子,我们可以很清晰的看见每个路径中变量之间的依赖关系。
一个想法
如果我有个工具,可以将条件语句中的所有路径生成出来,每个路径中的每个节点需要的变量也体现出来,
1、每个路径分为不同的颜色或者不同的标识
2、每个路径下的节点中的变量也有保存在别地方引用的记录,可以显示颜色数组,或者数字–也就时1、中的颜色。
这样子好处:
1、我们每次运行指定的数据时候,都可以看到变量引用关系,可以更加方便修改变量,而不会影响到别的分支。
2、方便在单元测试中条件判断组合表中和路径是否一一对应,是否还有别的组合没有发现,判定条件中如果否则之后是否会出现,出现之后是否会影响代码
3、可能使得重构代码更加容易,因为可视化了,可以看出不必要的变量或者有更加好的逻辑也就是可以优化逻辑。