代码走读测试案例分享

     现网使用zookeeper进行任务ID的保存,以便失败时进行恢复;zookeeper本身的客户端不支持级联删除节点,必须先逐个删除目录下的节点,再删除目录(简单理解是这样)。为了维护zookeeper的节点,现在开发了一个工具,可以通过调用zookeeper的接口,递归删除目录及下面的节点。

    按通常的测试方法,可以进行测试场景分析,测试用例设计。然后搭建zk环境,测试执行。但是对于这样代码量不多的小工具,能否更快速的发现其缺陷呢。

    由于工具的使用场景比较简单,可以在大脑中过一下使用场景和工具的使用情况。在大脑中构思一下工具的设计和编码思路。直接走读代码,是否更高效呢?

    通过实际的代码走读,发现了4个问题,其中1个严重问题,1个一般问题,2个提示问题。同时对后续的手工测试的针对性和关注点也有所指导。

 

步骤1 :确定程序的基本结构( DeleteDir.java ):

Main函数调用deleteRecursive逐个删除节点;deleteRecursive通过listSubTreeBFS得到要删除的节点的列表(目录看作是父节点)

public static void main(String[] args) {
… …
DeleteDir.deleteRecursive(zookeeper, pathRoot,number);
… …
}
 
public static void deleteRecursive(ZooKeeper zookeeper, String pathRoot,int number){
… …
zookeeper.delete(tree.get(i), -1);
… …
}
public static List listSubTreeBFS(ZooKeeper zookeeper, String pathRoot,int number){
… …
}

步骤2各个击破



步骤3再次整体检视,全面思考

1.       很明显,工具无法进行并发使用。(无并行运行需求,但仍需要明确)

2.       Delete函数没有打印删除节点的细节。

3.       真正的删除是调用的zookeeper的接口,配合及大量操作的效率要考虑。

     代码走读是测试的辅助方法,尤其是对系统的实现不是很清楚的时候,走读代码会很好的帮助测试人员理解系统实现。对随后的测试的思路扩展有很好的指导作用。随着开源系统的大量引入,代码走读能力逐步成为测试人员的比较技能。 

    最后,代码走读肯定无法代替真正的执行;仍然需要实际执行测试,发现走读无法发现的问题:

1输入多个ZK地址,有一个zk地址不可达,则无法连接zk,操作失败

2执行时提示log4j需要配置

3归档的deleteDirs.sh缺少可执行权限,无法运行

问题列表:

标题

严重级别

发现手段

对于有多分支的目录,输入的删除节点数可能赶上目录,导致失败

严重

代码走读
输入参数没有校验:ip端口、zk目录、删除数量的等

一般

代码走读
输入错误时,usage信息打印不清晰,不正规

提示

代码走读
Delete信息提示位置不正确,应该放在真正删除动作的位置

提示

代码走读
输入多个ZK地址,有一个zk地址不可达,则无法连接zk,操作失败

一般

手工测试
执行时提示log4j需要配置

提示

手工测试
归档的deleteDirs.sh缺少可执行权限,无法运行

提示

手工测试

你可能感兴趣的:(分布式计算测试理论,测试,zookeeper)