《测试之美》读书笔记–Beautiful Testing

几个月前借来的《测试之美》,今天终于读完了;将平时阅读过程中的笔记整理一下吧。

很多人对这本书的评价不怎么样,但是我觉得还是能给80分吧(会不会我太仁慈了,^_^),它主要是汇集了一些测试业界的牛人、管理者等写的一些感悟、项目经历、工具等等。确实本书的条理不够清晰,有些方面欲言又止,没有讲透彻,但是作为开拓自己视野和了解开源社区、国外测试业界的一些方法、流程、工具等的一本书,开始算不错的。我觉得还是有不少收获的,要善于发现嘛,哈哈,一如发现测试之美一般。话说里面还有Mozilla的一些测试实践(由于我是Firefox的忠实爱好者,我对Mozilla基金会还是有很多感情的),也有不少开源社区的测试实践(Mozilla也是开源社区),我都感兴趣,我现在也是开源技术中心工作呢,天天跟开源社区打交道  ^_^

如译者在序中写的那样,测试其实是有很多美的,思维流程之美、探索发现之美、结构和谐之美、卓越功能之美、团队合作之美。

总的来说,我还是认为,软件测试可以做得很美,如果我们不缺乏发现美的眼睛的话。

 

让测试利益相关者都满意。

有效(满足目标、期望),高效(实现价值最大化),优雅(优雅地实现有效和高效)。

缺陷发现百分比(defect detection percentage, DDP)  = 发现的缺陷/目前具有的缺陷

发现缺陷的侧重点:DDP(严重缺陷) > DDP(所有缺陷)

缺陷的成本:发现成本、内部故障成本、外部故障成本

内在美:回归测试自动化百分比、回归风险覆盖率、回归测试加速比(它是敏捷的基础)。回归测试加速比 = (手工回归时间 – 自动回归时间)/ 手工回归时间

测试之美的四个步骤:1. 了解你的利益相关者。 2. 了解他们对测试的目标和期望。 3. 为利益相关者的目标期望建立指标和目标(外在美)。 4. 为了测试的目标期望建立指标和目标(内在美)。

 

协作是性能测试之美的基石。

通常,性能测试是软件开发项目中最无奈、最复杂、最缺人手、时间最紧迫、最易被误解、最好斗以及最吃力不讨好,但它并不必要如此。

它应该是,期望的、有意的、有用的、有技术含量的、社会的、值得尊敬的、谦逊的、有效率的、(适度)有挑战性的、价值驱动的、价值导向的。

客户抱怨太慢,其实也可能是“界面设计不易于好做”而导致了很慢。

 

构建开源QA社区,需要:交流、志愿者、协调、不搞特殊、欢迎新人、鼓励参与、活动、宣传、目标设置和奖励。

 

模糊测试是通过对输入数据进行随机修改和破坏来测试程序的方法。

程序的模糊化可以使手动或自动的,但伴以自动化和测试日志,这一技术就会最有效。

在Office测试中的一个模糊测试工具:zzuf

 

TCE: Test-Case Effectiveness  测试用例有效性

TCE = (Nt/Ntot)*100%    Nt是指QA发现的缺陷总数;Ntot是Nt+测试逃逸之和。

TCT可以有加权。

 

Python开源社区的测试,Buildbot系统,动态分析工具(如:Valgrind、Fusil),静态分析工具(如:Coverity, Klocwork)。

 

以变化为中心的测试: 1. 了解可执行程序里功能/方法调用者和被调用者的依赖关系。 2. 了解源代码文件与测试用例之间的对应关系及其代码覆盖率。

Valgrind工具,及其插件callgrind

三种函数(影响范围不同)

1. 源函数(除OS lib, Share lib之外,不调用项目中其他函数,被项目内调用)    传播广

2.同步函数(不被项目中函数调用,可调用项目中函数)      不传播

3.管道函数(即可调用其他函数,也可被调用)     传播给调用它的函数

 

探索性测试探求的是软件在实际环境中如何工作,如何处理复杂和简单状况。探索性测试依赖于测试人员创造测试用例和发现缺陷的能力。测试人员对产品和测试方法的了解越深入,测试质量越有保证。

随机测试通常指即兴的缺陷发现过程。从定义上理解,任何人都可以做随机测试。

 

如果不是把所有的时间和金钱都花在缺陷跟踪上,而是放在防止或修复缺陷上,软件开发就会变得有趣得多。

测试工具:Fit, FitNesse

 

TDD的三角:需求、实例、测试

实例说明需求,测试确认需求。

测试是对实例的执行。

 

wikitests工具可用于浏览器测试。

unicode的一些基础知识:http://www.joelonsoftware.com/articles/Unicode.html

 

要是开发流程中开发人员都有良好的注释习惯,那么,ToDo、FixMe等注释,可方便测试去查一些问题的。

测试人员的脚本开发能力是必须的,比如:Python、Ruby等

思维导图mindmap可以帮助整理测试思路。

 

变异测试是在程序中植入大量认为的漏洞,并逐个对它们进行测试,看哪些变异没有被检测出来。然后系统化地改善整个测试集。

怎样衡量一个变异的影响?  1. 对代码覆盖率的影响; 2. 对先决条件和后置条件的影响。

变异测试总的Java框架:Javalanche, μJava

 

参照测试(reference Testing)其实是一种对比测试,能够使用两段不同的页面代码片段来生成一个相同的可视化渲染。

 

对于C语言程序测试,Clang静态分析器(可输出html报告),Splint检测安全相关的问题。

内存检查:Valgrind、电子围墙、DUMA、Mudflap(指针检查,它是GCC的一部分)。

Check是一种C语言单元测试框架。

 

模糊测试,制造混乱,它的规则就是没有规则。工具:Fusil

Autoconf自动配置工具,Buildbot系统是自动编译、测试的系统。

 

Windmill是一个开源Web自动化测试工具,是基于Python写的。

Web测试自动化工具:Watir, Selenium, WebDriver, Twill, Windmill

 

一个Spider: http://bclary.com/projects/spider/

Mozilla的Sisphus工具,专用于测试Firefox的崩溃。

 

master

Stay hungry, stay foolish.

发表评论

电子邮件地址不会被公开。 必填项已用*标注