几个月前借来的《测试之美》,今天终于读完了;将平时阅读过程中的笔记整理一下吧。
很多人对这本书的评价不怎么样,但是我觉得还是能给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的崩溃。