飞测说:最近很多朋友问如果没有需求文档,我该怎么测试?我自然想起了探索测试,今天来说说自己在探索测试路上的一点点感悟-------快递测试法,让我们在探索中感悟,在摸索中前进……

快递测试法,是从ET学习中了解到的一种测试方法,顾名思义就是数据类似于那些通过联邦快递系统,在这个星球上被不断移动的包裹一样,在软件中也是不断的流动。数据从被输入后就开始了它的生命周期,先被存储在内部变量和数据结构中,然后再计算中被频繁操作、修改和使用,最后,这个数据作为输出被“递送”给用户或目的地。

在这个测试法中,测试人员必须关注于数据。应该确认那些被存储起来的输入数据并“跟随”它们走遍软件。例如,在购物网站输入一个地址后,它会显示在哪里?哪些特性会用到该地址?如果它被用于账单地址,要确保该特性被测试到了。如果它被用作发货地址,也要确保测试中使用了相应的特性。如果允许更新地址,那就应该修改它的值。该地址是否会被打印出来,是否在内部数据中被删除过,或者需要进一步处理?试着找到每个和数据有接触的软件特性,就像联邦快递处理他们的包裹一样,测试人员也应该参与数据声明周期的每个阶段。

这虽然是一种测试方法,我们的测试不会仅局限与这一种方法,但是我自己感觉在实际中,我们很多时候借助于这种思想,我们的测试会更简单,拿 SCM工具(主要是从需求提交,到开发、测试环境的自动部署、版本管理、发布,客户更新等一些列流程半自动完成的工具,可以理解为持续交付工具)来说说我是怎么做的,我们了解该工具的整体业务如下:
1、输入初始话的数据
2、点击“开始初始化”会先做一些校验,如果不通过,则会弹出提示(我们可以记录下有那些校验,这样方便后面针对每一种校验来验证)
3、校验通过后,会首先到数据库的Task表中插入一条记录(我们可以了解生成记录的规则,然后细化成测试点)
4、记录插入成功后,分发服务会将该记录作为任务分发给Web服务、测试DB服务、开发DB服务 和TFS服务,并且在日志中记录分发的情况(我们可以考虑分发成功,或不成功的情况,是否做日志检查也可以考虑)
5、然后各个服务接到任务后,先在日志中做一个接受成功的记录,然后根据要求开始初始化(我们可以罗列出各个服务初始化的一个清单,作为检查点,比如TFS端先到给定的路径去获取源代码,然后解压后TFS中创建项目和分支,然后给项目赋予权限,添加人员,最后做相关设置,完成后在日志中有记录,并返回一个状态到数据库中)
6、各服务初始化完成后,会返回一个状态到数据库中,并更新数据库记录(我们可以考了是否能成功返回,返回更改那个字段)

7、web界面上可以查看到结果,当然中途初始化中也是可以查看结果的;

按照上面的快递思想,我们能很快获取大部分重要的测试点,也可以分析出一些设计的遗漏或者不合理的地方,并将这些分析的测试点记录下来 ,做成checklist或者写成脑图,都是不错的选择,虽然说ET没有强调测试用例,但是我们能够结合ET的思想,有一份测试cheklist的指引,将是不错的选择,这让我以前一直想根据开发实现的流程图来设计用例,应该是一个道理,我想这种测试应该就是所谓的灰盒测试吧;

好了,本次到此,更多分享下期再会,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,加入我们微信订阅号,联系方式如下:

在探索中感悟,在摸索中前进--ET之快递法的更多相关文章

  1. 排坑·IPhone&IOS中不兼容正则中的断言匹配

    阅文时长 | 1.14分钟 字数统计 | 1834.4字符 主要内容 | 1.问题切入 2.什么是断言匹配 3.断言匹配的替换方案 4.声明与参考资料 『排坑·IPhone&IOS中不兼容正则 ...

  2. Firebug中调试中的js脚本中中文内容显示为乱码

    Firebug中调试中的js脚本中中文内容显示为乱码 设置 页面 UFT-8 编码没用, 解决方法:点击 "Firebug"工具栏 中的"选项"---" ...

  3. JavaScript中让Html页面中循环播放文字

    JavaScript中让Html页面中循环播放文字 <html> <head> <meta http-equiv="Content-Type" con ...

  4. PHP中如何在数组中随机抽取n个数据的值 - array_rand()?

    PHP中如何在数组中随机抽取n个数据的值? 最佳答案 array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指明 ...

  5. 在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案

    在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案 之前,用过maven管理项目的童鞋都知道本地会有一个${User_Home}.m2/repository仓库 是用来存放ja ...

  6. .net dataGridView当鼠标经过时当前行背景色变色;然后【给GridView增加单击行事件,并获取单击行的数据填充到页面中的控件中】

    1.首先在前台dataGridview属性中增加onRowDataBound属性事件 2.然后在后台Observing_RowDataBound事件中增加代码 protected void Obser ...

  7. (原创)VM中的CentOS6.4中安装CloudStack6.3②

    接着VM中的CentOS6.4中安装CloudStack6.3①中文章接着,往下面安装 4.更新 yum 仓库 默认情况下,CentOS的软件源中没有收录最新版本CloudStack,为了能顺利安装, ...

  8. SQL中 将同一个表中的A列更新到B列,B列更新到A列

    有网友在SKYPE问及,如标题,SQL中 将同一个表中的A列更新到B列,B列更新到A列. 其实这个不是问题,直接写更新语句即可,可以参考下面动画演示: SQL source code: CREATE ...

  9. 解析sql语句中left_join、inner_join中的on与where的区别

    以下是对在sql语句中left_join.inner_join中的on与where的区别进行了详细的分析介绍,需要的朋友可以参考下 table a(id, type):id     type ---- ...

随机推荐

  1. jsoncpp用法通俗易懂之解析

    刚工作不久,最近遇到一个要解析一个web服务器发过来的json格式的文件,文件如下: { "global": { "renew": "true&quo ...

  2. 剑指offer系列43---判断平衡二叉树

    [题目]判断一颗二叉树是不是平衡二叉树. * 平衡二叉树定义:任意子节点深度相差不超过1.[思路]由上题,利用递归得到二叉树每个结点的深度同时比较. package com.exe9.offer; i ...

  3. erlang和go之间桥接库相关

    https://github.com/goerlang

  4. C++编程新思维中的技巧

    1.编译器断言 技巧大致跟后面的一样,都是利用偏特化,但是在C++ 0X里面已经有static_assert,所以感觉这东西也没什么用处了,更多的只是开阔眼界 2.偏特化 就是专门对一个类型去进行特殊 ...

  5. 利用mtd工具实现嵌入式设备在线升级

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   主要思路是:通过web post方式将升级文件交给CGI程序处理,然后通过mtd工具实现设备在线升级. 1.页面部分 & ...

  6. u-boot启动流程分析(1)_平台相关部分

    转自:http://www.wowotech.net/u-boot/boot_flow_1.html 1. 前言 本文将结合u-boot的“board—>machine—>arch—> ...

  7. Perl system(cmd) 和 `cmd` 的区别探讨

    在perl中系统调用有两种方式,一种是system(cmd),另一种是`system`以前一直没注意,这两种方式的区别,还以为是一样的,今天写脚本的时候,忽然想要获取命令的返回值,然后,用了my $r ...

  8. 【Mongodb】3.0 配置身份验证db.createUser()说明

    原文地址:http://bbs.51cto.com/thread-1146654-1.html 定义: 创建一个数据库新用户用db.createUser()方法,如果用户存在则返回一个用户重复错误. ...

  9. PLSQL_性能优化工具系列17_Best Practices: Proactive Data Collection for Performance Issues

    占位符 https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=2082062510193540&id=1366133. ...

  10. CE_现金预测详解(案例)

    2014-07-14 Created By BaoXinjian