话说测试计划就那么
![](/icons/16289yi.gif)
些字儿
![](/icons/16289dou.gif)
白纸黑字明明白白放那儿
![](/icons/16289dou.gif)
应该不会有什么玄机
![](/icons/16289dou2.gif)
如果你是
![](/icons/16289yi.gif)
个开发人员
![](/icons/16289dou.gif)
这倒也不奇怪;如果你是
![](/icons/16289yi.gif)
个测试计划制定者或审阅者
![](/icons/16289dou.gif)
你还是觉得测试计划如此而已
![](/icons/16289de.gif)
话
![](/icons/16289dou.gif)
那你可以好好看看我
![](/icons/16289de.gif)
见解
![](/icons/16289dou2.gif)
![](/icons/16289yi.gif)
不小心写得有点小多
![](/icons/16289dou.gif)
而且全是小字儿
![](/icons/16289dou.gif)
希望不要看花眼
![](/icons/16289dou2.gif)
Part I 测试计划阅读
![](/icons/16289de.gif)
5重境界
在我看来
![](/icons/16289dou.gif)
测试计划
![](/icons/16289de.gif)
作者和读者有以下 5重境界
![](/icons/16289dou2.gif)
第
![](/icons/16289yi.gif)
重:什么都有用
对于
![](/icons/16289yi.gif)
个测试新手来讲
![](/icons/16289dou.gif)
好不容易找到
![](/icons/16289yi.gif)
份测试计划模板
![](/icons/16289dou.gif)
准备大干
![](/icons/16289yi.gif)
场好好看看测试计划里面有哪些道道
![](/icons/16289dou.gif)
看着看着发现很多东西都不知道
![](/icons/16289dou.gif)
所以也分不清主次
![](/icons/16289dou.gif)
自然也就觉得什么都很重要了
![](/icons/16289dou2.gif)
第 2重:什么都没用
当
![](/icons/16289yi.gif)
个测试新手渐渐熟悉了测试
![](/icons/16289de.gif)
![](/icons/16289yi.gif)
些基础知识的后
![](/icons/16289dou.gif)
回过头去看那些测试计划
![](/icons/16289dou.gif)
发现里面什么“实质性”
![](/icons/16289de.gif)
内容都没有
![](/icons/16289dou.gif)
没有他所关心
![](/icons/16289de.gif)
测试中
![](/icons/16289de.gif)
具体
![](/icons/16289de.gif)
思路方法
![](/icons/16289dou.gif)
还没有
![](/icons/16289yi.gif)
份测试用例来
![](/icons/16289de.gif)
有用
![](/icons/16289dou2.gif)
第 3重:仅部分有用
渐渐
![](/icons/16289de.gif)
![](/icons/16289dou.gif)
这个新手也不可避免地开始关注测试流程这
![](/icons/16289yi.gif)
块
![](/icons/16289de.gif)
东西
![](/icons/16289dou.gif)
再回过头看那个测试计划模板
![](/icons/16289dou2.gif)
这回感觉又不
![](/icons/16289yi.gif)
样了
![](/icons/16289dou.gif)
有些以前觉得没有多大用处
![](/icons/16289de.gif)
东西还是多多少少可以帮助我们更好
![](/icons/16289de.gif)
测试
![](/icons/16289dou.gif)
比如测试计划模板中考虑到
![](/icons/16289de.gif)
要执行哪些类型
![](/icons/16289de.gif)
测试这部分内容应该就很有用
![](/icons/16289dou.gif)
但是其他部分貌似还是很“虚”
![](/icons/16289dou.gif)
![](/icons/16289yi.gif)
点实际用处都没有
![](/icons/16289dou2.gif)
第 4重:什么都有用
这是我自认为达到
![](/icons/16289de.gif)
水平级别~现在
![](/icons/16289de.gif)
我发现
![](/icons/16289dou.gif)
![](/icons/16289yi.gif)
份好
![](/icons/16289de.gif)
测试计划模板中
![](/icons/16289de.gif)
所有内容都是有用
![](/icons/16289de.gif)
![](/icons/16289dou.gif)
包括风险分析这些我的前认为是用来凑字数
![](/icons/16289de.gif)
部分其实都是有着它
![](/icons/16289de.gif)
作用
![](/icons/16289de.gif)
![](/icons/16289dou.gif)
而且
![](/icons/16289yi.gif)
份好
![](/icons/16289de.gif)
测试计划模板所包含
![](/icons/16289de.gif)
内容远远不止你从字面上读出来
![](/icons/16289de.gif)
那么简单
![](/icons/16289dou.gif)
而这些也是我今天想要和大家
![](/icons/16289yi.gif)
起分享
![](/icons/16289de.gif)
东西
![](/icons/16289dou2.gif)
第 5重:什么都没用
我还没有达到这种级别
![](/icons/16289dou.gif)
所以这只是我揣测
![](/icons/16289de.gif)
![](/icons/16289yi.gif)
种境界
![](/icons/16289dou2.gif)
当某
![](/icons/16289yi.gif)
类测试做
![](/icons/16289de.gif)
非常久非常熟了
![](/icons/16289dou.gif)
对于这类测试
![](/icons/16289de.gif)
整个流程以及需要注意到
![](/icons/16289de.gif)
各个方面都已经烂熟于心
![](/icons/16289dou.gif)
自然就不会把测试计划中
![](/icons/16289de.gif)
条条框框放在眼里了
![](/icons/16289dou.gif)
或许这就是所谓
![](/icons/16289de.gif)
“随心所欲不逾矩”吧~(不过
![](/icons/16289dou.gif)
我也想过
![](/icons/16289dou.gif)
好记性不如烂笔头
![](/icons/16289dou.gif)
或许这种达人级别
![](/icons/16289de.gif)
境界压根就没必要应用于实战吧
![](/icons/16289dou2.gif)
)
Part II 测试计划文档中容易被人忽略
![](/icons/16289de.gif)
部分
● Project Goal & None Goal
说实话这是我的前认为测试计划里面最没用
![](/icons/16289de.gif)
部分
![](/icons/16289dou.gif)
因此被我抛弃了很久时间
![](/icons/16289dou.gif)
而据我所知这也是测试计划中最容易被人忽略
![](/icons/16289de.gif)
部分
![](/icons/16289dou2.gif)
不过
![](/icons/16289dou.gif)
现在我却喜欢并且建议将这部分重视起来
![](/icons/16289dou2.gif)
作为
![](/icons/16289yi.gif)
个项目来讲
![](/icons/16289dou.gif)
尤其是产品类项目
![](/icons/16289dou.gif)
整个Team需要明确自己应该做什么样
![](/icons/16289de.gif)
产品
![](/icons/16289dou.gif)
不应该把产品做成什么样子
![](/icons/16289dou.gif)
这个部分写在测试计划
![](/icons/16289de.gif)
第
![](/icons/16289yi.gif)
部分
![](/icons/16289dou.gif)
时不时瞅
![](/icons/16289yi.gif)
瞅
![](/icons/16289dou.gif)
提醒我们要向着正确
![](/icons/16289de.gif)
方向走
![](/icons/16289dou2.gif)
否则
![](/icons/16289dou.gif)
在
![](/icons/16289cuowu.gif)
![](/icons/16289de.gif)
道路上跑
![](/icons/16289de.gif)
越快
![](/icons/16289dou.gif)
错
![](/icons/16289de.gif)
越远
![](/icons/16289dou2.gif)
● 版本历史信息和状态信息
这
![](/icons/16289yi.gif)
部分容易被人忽略是
![](/icons/16289yinwei.gif)
几乎所有
![](/icons/16289de.gif)
文档中都有这
![](/icons/16289yi.gif)
部分
![](/icons/16289dou.gif)
或许
![](/icons/16289yinwei.gif)
这个缘故
![](/icons/16289dou.gif)
这
![](/icons/16289yi.gif)
块反而成了文档中最不受人关注
![](/icons/16289de.gif)
部分
![](/icons/16289dou.gif)
大多数人
![](/icons/16289yi.gif)
看文档直接跳到目录
![](/icons/16289dou.gif)
甚至直接跳到内容
![](/icons/16289de.gif)
汪洋中大海捞针
![](/icons/16289dou2.gif)
版本变迁中最有用
![](/icons/16289de.gif)
部分是备注部分
![](/icons/16289dou.gif)
![](/icons/16289yi.gif)
般这
![](/icons/16289yi.gif)
部分介绍了文档最新更改
![](/icons/16289de.gif)
部分以帮助读者快速了解文档
![](/icons/16289de.gif)
![](/icons/16289yi.gif)
些基本情况
![](/icons/16289dou2.gif)
其次
![](/icons/16289dou.gif)
其中
![](/icons/16289de.gif)
状态信息也会很有用
![](/icons/16289dou.gif)
![](/icons/16289yinwei.gif)
对于读者来讲
![](/icons/16289dou.gif)
花费半小时看
![](/icons/16289yi.gif)
份Draft是没有多大意义
![](/icons/16289de.gif)
![](/icons/16289dou2.gif)
其他
![](/icons/16289yinwei.gif)
类似原因(因经常出现在各种文档中反而遭受忽略)而容易被人忽略
![](/icons/16289de.gif)
部分还包括“术语和缩略语”“引用”“文档介绍”“目录”
![](/icons/16289dou.gif)
几乎所有
![](/icons/16289de.gif)
常见文档元素~
![](/icons/16289yi.gif)
份好
![](/icons/16289de.gif)
文档中这些部分都会恰到好处
![](/icons/16289dou.gif)
读者阅读
![](/icons/16289yi.gif)
份好
![](/icons/16289de.gif)
文档可能不会感受到欣喜
![](/icons/16289dou.gif)
但是如果阅读
![](/icons/16289yi.gif)
份没有或者写
![](/icons/16289de.gif)
很糟
![](/icons/16289de.gif)
文档则绝对会感受到痛苦甚至直接不看文档
![](/icons/16289dou.gif)
这也从另
![](/icons/16289yi.gif)
个方面导致了文档总是容易被人冷落
![](/icons/16289dou.gif)
尤其是测试文档
![](/icons/16289dou2.gif)
● 测试接收标准和测试结束标准
这
![](/icons/16289yi.gif)
部分主要是容易流于形式而被人忽略
![](/icons/16289dou.gif)
对于很多项目来讲
![](/icons/16289dou.gif)
根本没有所谓
![](/icons/16289de.gif)
标准而言
![](/icons/16289dou.gif)
领导说开干
![](/icons/16289dou.gif)
什么时候干好
![](/icons/16289dou.gif)
ok
![](/icons/16289dou.gif)
这就是开始标准和结束标准
![](/icons/16289dou.gif)
而对于质量这些东西则早被抛到了最后
![](/icons/16289dou2.gif)
是
![](/icons/16289de.gif)
![](/icons/16289dou.gif)
或许有人会说
![](/icons/16289dou.gif)
即使我们指定了
![](/icons/16289yi.gif)
份好
![](/icons/16289de.gif)
测试标准
![](/icons/16289dou.gif)
即使我们
![](/icons/16289de.gif)
领导也不会毫无理由
![](/icons/16289de.gif)
横加干涉
![](/icons/16289dou.gif)
但是市场等原因也会造成产品在没有达到产品发布标准
![](/icons/16289de.gif)
时候发布出去
![](/icons/16289dou2.gif)
对于这个观点
![](/icons/16289dou.gif)
网上通用
![](/icons/16289de.gif)
反对理由是:没有质量保证
![](/icons/16289de.gif)
产品最终会被淘汰
![](/icons/16289dou.gif)
而且会累及公司
![](/icons/16289de.gif)
名誉
![](/icons/16289dou2.gif)
而我需要另外加
![](/icons/16289yi.gif)
条理由:即使
![](/icons/16289yi.gif)
个人系上安全带开车也会
![](/icons/16289yinwei.gif)
车祸挂掉
![](/icons/16289dou.gif)
但系上安全带出事
![](/icons/16289de.gif)
概率要比不系要低很多吧
![](/icons/16289dou2.gif)
● 风险分析
我的前在写测试计划
![](/icons/16289de.gif)
时候
![](/icons/16289dou.gif)
这
![](/icons/16289yi.gif)
块
![](/icons/16289yi.gif)
直是流于形式
![](/icons/16289de.gif)
客套话
![](/icons/16289dou.gif)
写完了就完了
![](/icons/16289dou.gif)
从此再也不去管它
![](/icons/16289dou.gif)
没有把风险分析
![](/icons/16289de.gif)
作用利用起来
![](/icons/16289dou2.gif)
有关风险分析
![](/icons/16289dou.gif)
文章后面还会专门提到
![](/icons/16289dou2.gif)
Part III 测试计划文档中隐含
![](/icons/16289de.gif)
信息
● 优先级
或许文档
![](/icons/16289de.gif)
作者并没有直接标出那些计划事项是具有高优先级
![](/icons/16289dou.gif)
哪些是低优先级
![](/icons/16289de.gif)
工作项
![](/icons/16289dou.gif)
如果在这种情况下读者仍然能很清晰地知道自己先做什么后做什么——至少应该知道今天和明天应该做什么吧——
![](/icons/16289de.gif)
话
![](/icons/16289dou.gif)
那么测试计划
![](/icons/16289de.gif)
作者很可能把优先级隐含到了测试进度(Test Scheduler)安排这
![](/icons/16289yi.gif)
部分了
![](/icons/16289dou.gif)
![](/icons/16289yi.gif)
般来讲先要完成
![](/icons/16289de.gif)
事情优先级是最高
![](/icons/16289de.gif)
![](/icons/16289dou.gif)
而直接将优先级融入测试进度安排也是
![](/icons/16289yi.gif)
种不错
![](/icons/16289de.gif)
选择
![](/icons/16289dou2.gif)
不过这种做法也有
![](/icons/16289yi.gif)
些弊端
![](/icons/16289dou.gif)
如果将工作项“写死”到进度安排中
![](/icons/16289dou.gif)
当遇到某个工作项暂时延迟
![](/icons/16289de.gif)
时候会造成Test Scheduler
![](/icons/16289de.gif)
变化而影响其他工作项
![](/icons/16289de.gif)
执行时间
![](/icons/16289dou2.gif)
● Uncovered
在测试计划中
![](/icons/16289dou.gif)
有
![](/icons/16289yi.gif)
个部分叫做Test Scope
![](/icons/16289dou.gif)
而这
![](/icons/16289yi.gif)
部分
![](/icons/16289yi.gif)
般又会被划分成Covered和Uncovered两个部分
![](/icons/16289dou2.gif)
这两部分有什么玄机呢?大家应该知道测试
![](/icons/16289de.gif)
无穷尽特征
![](/icons/16289dou.gif)
想到了这
![](/icons/16289yi.gif)
点可能会有人马上反应过来:那Uncovered部分岂不是有很多内容?那为什么事实上Uncovered部分并没有洋洋洒洒几千字将我们没有做到
![](/icons/16289de.gif)
尽可能列出来呢?其实
![](/icons/16289dou.gif)
![](/icons/16289yi.gif)
份测试计划只能表现出在特定项目中
![](/icons/16289de.gif)
测试(比如如果不需要security test
![](/icons/16289dou.gif)
那么测试计划中可能就不曾提到security test
![](/icons/16289dou.gif)
甚至在not Covered部分也未曾提到
![](/icons/16289dou2.gif)
测试类型思路方法太多了
![](/icons/16289dou.gif)
如果都在not Covered部分提到
![](/icons/16289dou.gif)
那完全可以另外出
![](/icons/16289yi.gif)
本书了)
![](/icons/16289dou.gif)
所以Uncovered部分提到
![](/icons/16289de.gif)
只是常见
![](/icons/16289de.gif)
测试类型或者思路方法
![](/icons/16289dou.gif)
以及部分功能或者UI等内容
![](/icons/16289dou.gif)
这部分是告诉读者
![](/icons/16289dou.gif)
这
![](/icons/16289yi.gif)
部分我们在测试里面不会——至少是不会专门设计相关
![](/icons/16289de.gif)
测试用例——测试
![](/icons/16289de.gif)
啊
![](/icons/16289dou2.gif)
这时候
![](/icons/16289dou.gif)
我们
![](/icons/16289yi.gif)
般会在Uncovered内容
![](/icons/16289de.gif)
后半部分看到有关为什么不覆盖到这
![](/icons/16289yi.gif)
部分
![](/icons/16289de.gif)
“官方解释”