《测试艺术》第3版--读书笔记(2)

严格来说,不能算是读书笔记,只能说是阅读的快速翻译,加一些个人理解。

我推崇通过通读经典的原著,可以帮我们找到最具有历史痕迹的概念,厘清思路!而不是看那些被人消化反复咀嚼再吐出来的书籍!

这个文章里。个人理解的表达用下划线表达​,翻译有疑问的地方用斜体字表达

​------------------------------------------------------------------------------

第三章   程序评审、走查和复查

人工测试的方法在典型的程序中一般可以发现30%-70%的逻辑设计和代码的错误。但是这种方法不能检测出高层设计错误,例如出现在需求分析阶段的错误。我们注意到成功的比率是30%-70%,也就是说在找到的错误中不超过70%。回顾第二章中所描述的,我们无法知道程序中全部的错误。因此,这说明这种方法可以有效的在测试过程发现超过已知缺陷的70%。

当然,一个更严苛的统计是人工的过程只能发现“简单的”错误(那些可以在基于计算机的测试中所发现的)和那些困难的、晦涩的或隐藏的错误只可能通过计算机的执行过程所发现。然而,一些测试者使用这些技术发现,人工过程趋向于比基于计算的过程在某些类型的错误的发现上更有效,那些相反对于另一种类型的错误来说是真实的。(例如:未初始化变量,对应于被0除)。

human testing  methods  相当于静态测试,computer​-based testing 相当于动态测试

评审/走查和基于计算机的测试是互为补充的,其中一个未出现,则难以保证有效的错误检测。

最后,虽然这些过程对测试新程序是​非常有价值的,与程序修正是同等重要或者会更重要。我们的经验是,修改现存的程序相比写新的程序,可能导致更多错误的过程(每多一个声明就可能有一批的错误)。因此,程序修正后,需要再经历被测试的过程,也就是回归测试技术。

代码审查​

​代码审查是一套团队阅读代码的错误检测技术的规程。关于代码审查焦点的大多数争论是在程序上,填写表格等等。这里,做一个通用过程的简短的阐述,我们将着重介绍事实上的错误检测技术。

评审团队

​一般一个评审团队由4个人组成。一个是主持人的角色,在这里相当于质量控制工程师。这个主持人希望是一名有能力的程序员,但是他或者她不是代码编写者,并且不熟悉程序的细节。主持人的职责包括:

1、​分发评审会议的材料、安排进度;

2、主持会议;

3、记录所有被发现的缺陷;

​4、确保所有的缺陷,在会后被更正。

​第二个成员是程序员本人。其他的会议成员一般是程序设计者(如果与程序员不同的话),还有一个测试专家。测试专家应该精通软件测试,并熟悉大多数一般的程序缺陷,也就是我们在后面要讨论到的。

评审议程

开评审会议的之前几天,主持人分发程序清单、设计规格说明文档给其他参与者。参与者期望让他们自己对会议的材料更熟悉。在会议期间,会有两个活动:

1、对于程序论述、声明、程序逻辑结构等,在讨论期间,其他参与者应提出那些用于追踪是否有缺陷的问题。这有点像程序员而不是其他团队的成员,在叙述中将发现许多错误的定义。换句话说,简单的对着观众大声读出程序的行为,就是显然有效的错误检测技术

2、程序分析遵循检查表(Checklists),这张表是从历史上通用的程序错误中总结出来的。(这份检查表将会在下一次的评审会议中讨论)

主持人负责确认讨论进程沿着产品的线索,参与者将他们的关注点放在发现缺陷上,而不是订正它们。(程序员在评审会议结束后修正缺陷)

在评审过程中通常集中在发现缺陷而不是修改缺陷。有时候,一些2-3个人的团队当发现小问题时,包括负责代码的程序员,可能打算设计改变来处理这样特殊的案例,对于小问题的讨论,可能会变成全组将注意力特别地放在设计的领域。在讨论期间最好的方法是区别开设计和处理这个小问题,因为有些人可能会关注后者。关于设计方面,团队还有两个问题,每几个句子就可能评论频频。几分钟的时间,设计整个领域会被完全探索到,任何一个问题都会显而易见。

评审会议的时间和地点应该选择避免被打扰。最佳的时间长短是90-120分钟,会议是智力耗费的实践,长时间的会议反而效率降低。大多数评审会议的速度一般是每小时150个代码行。基于此原因,大型程序将会跨越多个评审会议,每个会议处理一个或多个模块或子程序。

人员议程

为让评审会议更有效,测试团队必须采取恰当的态度。例如,如果一个程序员的认为评审会议是对他或她的个人攻击,而采取对抗的态度,那么会议将是不会效果的。正确的做法是,程序员必须把撇开自我本位的态度,而采取积极和建设性的态度,保持注意力在客观的评审而发现程序的错误,这样才能提高工作质量。正因为如此,大多数人建议对评审结果保密,而只与参与者共享。尤其是,如果管理者需要利用评审结果(例如,为明确或暗示程序员的低效率或低能力),那么就与检查过程的目的背道而驰了。

评审过程的好处

除了评审的主要作用是发现缺陷外,评审还有其他的好处。第一,程序员通常接收关于编程风格的,算法选择和编程技术的有价值的反馈。第二,其他参与者通过查看程序,接触到程序员的错误和编程风格,同样受益。通常,这种类型的软件测试帮助提高团队的凝聚力。减少对抗关系的潜在演变的可能,而更利于合作关系,以项目为核心可以引导更多有效而可靠的开发模式。

最后,评审过程是一种早期发现错误倾向部分的方法,可以帮助确定在基于计算机测试阶段的测试方向。(这就是我们说的第二章说的第9个测试准则)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 文章来自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鹏阅读 9,189评论 2 126
  • 1.问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提...
    qianyewhy阅读 9,236评论 4 123
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 21,949评论 7 278
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 6,720评论 5 100
  • 一个支持删除最大元素和插入元素操作的数据结构,叫优先队列。 我们可以用无序数组(插入O(1), 删除最大O(n))...
    囧囧有神2号阅读 484评论 0 0