代码走读测试案例分享
2014-03-19 18:59
316 查看
现网使用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<String> listSubTreeBFS(ZooKeeper zookeeper, String pathRoot,int number){
… …
}
步骤2:各个击破
步骤3:再次整体检视,全面思考
1. 很明显,工具无法进行并发使用。(无并行运行需求,但仍需要明确)
2. Delete函数没有打印删除节点的细节。
3. 真正的删除是调用的zookeeper的接口,配合及大量操作的效率要考虑。
代码走读是测试的辅助方法,尤其是对系统的实现不是很清楚的时候,走读代码会很好的帮助测试人员理解系统实现。对随后的测试的思路扩展有很好的指导作用。随着开源系统的大量引入,代码走读能力逐步成为测试人员的比较技能。
最后,代码走读肯定无法代替真正的执行;仍然需要实际执行测试,发现走读无法发现的问题:
1、输入多个ZK地址,有一个zk地址不可达,则无法连接zk,操作失败
2、执行时提示log4j需要配置
3、归档的deleteDirs.sh缺少可执行权限,无法运行
问题列表:
按通常的测试方法,可以进行测试场景分析,测试用例设计。然后搭建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<String> 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地址不可达,则无法连 4000 接zk,操作失败 | 一般 | 手工测试 |
执行时提示log4j需要配置 | 提示 | 手工测试 |
归档的deleteDirs.sh缺少可执行权限,无法运行 | 提示 | 手工测试 |
相关文章推荐
- hibernate案例 测试代码
- 分享一段优雅的代码,测试编译通过。摘自《设计模式沉思录》,稍作修改,否则编译不过
- c#测试本机sql运算速度的代码示例分享
- Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
- [技术分享] 融云开发案例核心代码分享
- 分享8个最佳的代码片段在线测试网站
- [测试技术分享]easyFuzzer使用案例分享
- facebook分享购物的代码测试
- 测试中的代码分享~位运算用担心重复赋值吗
- 代码适配移动站点对百度友好案例分享
- Robot Framework+Appium案例分享三: WiFi测试
- 【分享】我们用了不到200行代码实现的文件日志系统,极佳的IO性能和高并发支持,附压力测试数据
- apache 和 一个 tomcat 集成 测试成功 案例 代码
- jquery 操作DOM案例代码分享
- 软件测试中的代码测试案例
- Nginx应用案例分享:压力测试
- 今天有时间戳转换的需求,网上找了半天才找到相关代码,经测试有效,特作此笔记和大家分享
- Android——通过案例代码测试Activity的整个生命周期
- Nginx应用案例分享:压力测试