代码走读测试案例分享
现网使用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缺少可执行权限,无法运行
问题列表:
标题 |
严重级别 |
发现手段 |
对于有多分支的目录,输入的删除节点数可能赶上目录,导致失败 |
严重 |
代码走读 |
输入参数没有校验:ip端口、zk目录、删除数量的等 |
一般 |
代码走读 |
输入错误时,usage信息打印不清晰,不正规 |
提示 |
代码走读 |
Delete信息提示位置不正确,应该放在真正删除动作的位置 |
提示 |
代码走读 |
输入多个ZK地址,有一个zk地址不可达,则无法连接zk,操作失败 |
一般 |
手工测试 |
执行时提示log4j需要配置 |
提示 |
手工测试 |
归档的deleteDirs.sh缺少可执行权限,无法运行 |
提示 |
手工测试 |
代码走读测试案例分享相关推荐
- Python自动化-APPium原理解析与实际测试案例分享
目录结构 一.Appium概述 Appium架构原理 运行原理 1)Appium服务器 2)Bootstrap.jar 3)Appium客户端 二.Appium组件 三.Appium环境搭建 Node ...
- 基于TCP协议fuzz testing模糊测试案例分享
1.模糊测试概念: 模糊测试 (fuzz testing, fuzzing)是一种软件测试技术.其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion ...
- 澳门美团跨多应用测试代码一键生成案例分享
每家软件互联网公司的产品线基本无一例外包含:安卓 APP/iOS APP + 后台控制,比如美团就有至少4个应用: 1. 买家下单APP 2. 卖家接单APP 3. 单子后台调度Web应用 4. 骑手 ...
- 零代码积木编程案例分享
和大家分享一个通过积木编程技术实现的复杂业务系统的案例,主要比较传统有代码和零代码积木编程在项目各个阶段的人力投入和成本比较. 客户是一家工业丝线工厂,期望实现生产.仓库.设备的管理,同时连线近百台设 ...
- [测试技术分享]easyFuzzer使用案例分享
easyFuzzer使用案例分享 1.简介: easyFuzzer是wooyun的一位白帽子(光刃)提供的一款用于fuzz文件的工具.平时主要是和网络协议安全打交道,和本地软件安全打交道比较少,所以没 ...
- ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略
ML之FE:数据处理-特征工程之数据集划分成训练集.验证集.测试集三部分简介.代码实现.案例应用之详细攻略 目录 数据集划分成训练.验证.测试三种数据的简介 1.训练集.验证集的作用 2.验证数据集 ...
- [分享]在线的代码片段测试工具 jsbin
有些时候,我们往往有这样的需求: 临时测试一个代码片段,不想打开编辑器来新建一个文件,测试完毕又删除 想给别人分享一个代码,html文件,css文件,js文件,打个包? 向别人展个某个效果,发个文件过 ...
- oracle数据库升级到19c,数据库技术探索之Oracle 19C升级测试及案例分享
01 升级背景--"去O"正当时,衔接需保障 在当今国家监管要求,Oracle在华战略,成本等因素得驱动下,去"O"已势在必行.但Oracle数据库的优势依旧存 ...
- Linux动态加载共享库,Linux共享库的动态加载(附测试案例)
共享库的动态加载是指可以在程序运行的过程中去加载所需的共享库.常用于某些系统或者应用程序的自动升级. 在C语言的源程序动态加载共享库,需要调用一组特殊的函数,它们被声明于一个专门的头文件dlfcn.h ...
最新文章
- 图像的均值和方差python_python-绘制均值和标准差
- 2021 亚马逊云科技中国峰会,对话《容器混合云会是未来的答案吗》
- 跨链(8)跨链双雄Cosmos“系统框架”
- mnist手写数字识别_手写数字识别
- 在linux中解压.tgz
- oracle asm磁盘头 备份,ASM磁盘头的第三个备份-Physically Addressed Metadata Redundancy
- mysql 时间戳与java_在Java中处理MySQL日期时间和时间戳
- AngularJS——第8章 服务
- 谈论高并发(三)锁的一些基本概念
- Android Camera setRecordingHint函数 在部分手机上的问题。
- 解决:PHP Deprecated: Comments starting with '#' are deprecated in ……
- IDEA项目包的导入以及压缩包的快速导出
- 台式机安装centos7
- AI-常见机器学习算法介绍
- JS 改变HTML样式
- 又闹分裂?Node.js 被分叉出一个项目 — Ayo.js
- pytorch从hdfs载入模型、从二进制字符串载入模型
- 好用的免费 PDF 密码删除工具有哪些?
- matlab估计arma garch 条件均值和方差模型
- VUE/使用echarts格式化浮窗自定义按钮及事件