热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

测试之美2

测试员只喜欢有趣的缺陷所有的测试人员都会告诉你,缺陷是存在的,然后缺陷就真的存在了。一般来说,让事情变得好玩并非缺陷的数目。比如一个测试人员可以在大的网站应用程序中发现上千个表面错

测试员只喜欢有趣的缺陷

  所有的测试人员都会告诉你,缺陷是存在的,然后缺陷就真的存在了。一般来说,让事情变得 好玩并非缺陷的数目。比如一个测试人员可以在大的网站应用程序中发现上千个表面错误,就是语句与错别字,给用户看的文本有语法错误,图标上的颜色不对,或 都屏幕上有东西位置放得不对。

  测试人员非常讨厌这样的错误,特别是发现有很多的时候。因为记录这类错误比发现它们所花费的时间更长。而且他们一般属于低优先级,很容易得到解决。对!测试人员就是变态的喜欢让开发员束手无策的问题,这样似乎更能体验他们的能力与价值。

不要去预测问题优先级

  在IT领 域经验丰富的前辈会告诉你,某个应用程序的最终用户可能会对你觉得微不足道的问题深切关注。这跟人的“烦恼因素”有很大关系,一个错别字或字体用得不恰当 可能不会影响用户的使用,项目组的所有人都认为这是个小问题。但是对于每天要看两千遍的用户来说,“烦恼因素”是非常高的。

  例一个双击鼠标就可以完成的操作,我设计成了三击,只是多点了一个鼠标而已。这也许有趣,但对于每天操作几百遍的用户来说,他会破口大骂地拿起鼠标甩到地上。这太令人讨厌了。这影响的他们的工作效率,也行效率与绩效、奖金挂钩。

  测试人员报告他们发现的一切问题,其中经验丰富的人员会根据其理解来报告严重程度,但一 般来说不要试图预测业务优先级。他们理解中的业务优先级通常就像开发团理解的一样,是不太完整的,并不是基于用户的个人体验做出的。经常有用户愿意“将 就”使用有严重错误的代码,却在最后一刻强迫要求修改或添加看起来并不重要的东西。

测试人员的工作是寻找、发现、报告,而不是用神一样的能力去评判,测试人员应该随心所欲的提供他们的专业意见,事实上,项目组的所有人都应该随心所欲地提供专业意见。

报告你发现的所有问题

  有一个令人遗憾的现实,那就是测试人员不将他们发现的所有错误报告出来。原因可能有很 多,但最常见的是他们觉得报告某一种或某一类错误没有意义,因为反正都不会被解决的。这是从实践中“学”来的,你通常会发现有这类态度的测试人员不抱幻 想、厌倦、愤世嫉俗、对工作不感兴趣。他们报告缺陷的兴趣和热情已经被工作环境慢慢消磨掉了。另一个原因也许是他们相信从政治上和实际上来说,报告他们发 现的一切东西是不“聪明”的,他们应该只报告那些公司在乎的东西。那么,如果公司看不到整个大局,怎么知道在不在乎呢?每个人都明白很多错误是不能(或者 从财务的角度来说不应该)在产品发布前解决的。成功项目管理的“艺术和工艺”的一个要素是对推迟和解决哪些缺陷做出正确的决策。比如,项目组决定解决1 4 个缺陷,推迟另外3 2 个。但是测试人员选择不报告3 2 4 个缺陷,因为开发团队“从不解决”字段错误,这意味着项目经理和上层的管理者正在根据错误、不全面的信息作决策。在这个例子里,用户界面就不能在万众瞩目的黄金时段隆重登场。

  另外,就算是在一个并不解决某类错误的公司,报告每个错误也可能会最终改变公司的政策(或称之为“一直实行的陈规”)。如果一个测试人员报告了4 0 个错误,一个都没解决,应用程序就发布了,然后用户以紧急的优先级报告同样的错误并要求尽快地解决它们,那么开发团队和项目经理以后就会开始注意这类缺陷

测试员一直在想法破坏你的程序

  好的测试人员同时是富有创造力和想象力的。测试通常是一个破坏的过程,正因为如此,在正式产品环境下运行测试需要非常谨慎的决策。好的测试人员不必试图证明软件运行正常,他们是来证明软件不能正常运行的。这一态度差异是测试人员能发现如此多缺陷的主要原因,他们就是想发现缺陷。他们分析手上所有的信息,坐下来思考怎么才能破坏应用程序。项目组里没有其他人有这样的使命。开发人员一般甚至没有足够的时间持续写代码,更不要说试图挤出足够的时间来想怎么破坏代码了。最终用户通常只是执行日常工作的操作,如果有东西“坏掉了”,他们可能陷入恐慌和沮丧之中。另一方面,只有测试人员勇敢地参与进来,使出吃奶的劲儿去发现软件中的缺陷,他们却为发现另开发人员痛苦的缺陷而兴奋不已。

  这正好应验了妈妈一直告诉我们的话,要是你只盯人身上坏的一面,那你就只能发现坏的东西。测试人员全面地盯着系统中出错的一面找问题,顺便也就检验了运行正常的部分。但他们关注的焦点总是向着错的东西,而不是对的东西

测试角色的本质

  很久之前,就有关于测试人员的角色的争论,我们再来总结性的说说测试角色的本质。

  一些人认为测试人员的角色是保证质量,如果有人能决定到底“质量”指什么? 这个似乎很难说清。

  另一些人认为他们的角色是通过训练开发人员的寻找缺陷帮助他们编写出更好的代码----在开始编写的时候就不存在错误的编码;

  还有一些测试专家集中精研究为何以及如何找到缺陷:在不同的环境下寻找缺陷所涉及的策略、技术和术语。

  所有这些说法都很有趣,在某种意义上都是对业界有溢的。但是,从本质上来说,测试的意义 就是发现缺陷。测试人员通过项目组和管理层展示缺陷、问题或瑕疵“保证质量”,进而帮助他们做出更好的决策;他们通过向开发人员展示其代码中的错误,使其 知错就改引以为戒,进而帮助他们改进工作;他们学习新的策略和技术以便发现更多的(或者更重要的)缺陷,他们把工作归类到新的策略里,如游历式,进而帮助 其他人发现缺陷。如果在测试过程中没有发现(或者只发现了很少的)错误,那么这也是重要的信息。

----------------------------------------------------------

注:本文内容取自《测试之美》第1章 “这对你有好处么”,这是一本很好的书,读完第1章收获颇多,但正如不少人说话,作者写得太散了,没有条理。好吧!我把这一部分的精彩抽取出来与各位分享。

测试之美-2


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
author-avatar
航头党员之家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有