首页 测试 体会 查看内容

测试是必需的吗—关于软件测试的几点反思

2014-3-29 11:04| 发布者: tianzc| 查看: 663| 评论: 0

摘要:   屈指算来,从事软件测试的工作已经快9年的时间了,不算短的一段时间,经历了很多不同类型的产品,项目以及人。发现很多事情回头去看的时候有点晚,但是可能会更清楚,加之最近工作上稍微闲了一些,把酝酿了很久 ...
  还有几个有趣的例子:  1. Thinkpad对于屏幕铰链的使用寿命的自动化测试  2. 苹果(这次是IT的苹果)针对iphone信号设计的测试实验室  3. 跑车的风洞测试  很难想象哪一款真正的跑车或者F1赛车,在设计时没有做过风洞的测试。  上面3个是很好的例子,让我们看到测试的水平和要求随着我们对最终产品的品质要求一起更高。  也许还有一个更深层次的问题,为什么是测试,而不是其他方式来保证或者验证那些质量指标?  嗯,也许还有更好的方法,就好比我们只分析材质就可以得出强度而不必实际的去压测,或者软件上我们一直想做到的通过代码就发现问题。这个问题也许部分是技术,部分是哲学,还好,作为工程师我们比较务实,看哪种效果比较好,而现实中,很多时候我们不得不实际的去验证。  回到我们的软件和互联网行业,其实我们对于测试的投入也是一样,随着项目的性质和要求而不同。想想通常对于下面几种系统的测试的投入:  1. 一个毕业设计项目  2. 一个创业阶段的POC  3. 一个每天亿级PV的网站  4. 一个每天百万订单的电商交易核心系统  以上是从项目的性质来看,其实只是一个维度,还有一个变数是即便同样类型的项目,我们对于质量的期望是什么,同样也影响着测试的投入。而这个问题再往上追溯,其实是一个政治问题:对这个标准谁说了算,他/她怎么看?  所以我们常常发现, 一个对质量有话语权和推动力的测试团队,背后往往都有坚定的大老板的支持。他/她对业务负责,希望有更高的标准,然后赋予了测试团队一些权力。这听起来不漂亮,但是很现实和合理,结合一个商业组织的一些本质。  上面的这一条其实也是很多同类的企业差别的地方。往深了说,这个差别不只是源于对品质的追求,能力的差别,而更多是观念和目标,比如都是生产手机或者汽车,决策层希望大家生产什么样定位的产品? 这个问题不是技术的范畴,难说对错,因为都有市场的需求。  对比而言,我们其实也可以粗略的发现,测试做的深入程度很多时候是和这个企业的定位有关,而不是和测试人员的能力有关。或者应该来说,长期来看,取决于这个方面。因为有人员的流动和发展,对比下国内几个大的互联网公司,测试都做得相对比较深入,但是几年前可能还不是,因为有强烈的业务方面的需求和大的投入,以及有很多人才都不同的地方汇入。  讨论到这里,我们可以说对于更高的质量要求,测试很必需很重要。 但是有一个关键的问题没有说清楚,是测试这个工作很重要,而不一定是测试这个工种。或者换个角度,必需的是测试这个事情本身,而不一定是测试作为一个独立的工种存在。  好,那我们接下来看看测试作为独立工种存在的必要性。  为了讨论这个问题,可以看下现实世界里面的测试工作和专职测试人员的挂钩的情况。  看看下面的几个例子:  1. 交管方面的速度测试,酒精测试。 工具成熟,使用简单,警察叔叔们只是顺手做了这个测试工作,非专职测试人员。  2. 品酒师,古董鉴别。 工具简单,非常依赖于人的判断。需要非常专业和资深的人以及经验阅历的积累。  3. 化学成分监测,医学化验等。工具非常的复杂,很依赖工具,但是也需要有一定专业知识的人来操作和完成。  类比来看,测试在不同的地方,是否作为一个独立的工种存在还不一定。其形态也可能更是一种工具的存在,而工具的存在就是背后专门的独立的厂商,工具本身也是一个独立的business,这个已经非常的普遍了。  那我们再回来看看软件测试的情况。  目前来看,软件开发本身的标准化做得还不够,也许很多人期望如此还没有做到,另有一些观点觉得可能很难做到。  总体来说,软件行业相对比较复杂,其实我们目前讨论的很多软件开发的形态是一种量身定做,宏观来看是一个比较初级的方式。很多的企业,自己的开发人员(几十,几百,几千。。。)做出的一些系统只是给自己的产品和系统用,而且累积下来设计非常的复杂。这样使得通用的全自动的测试系统比较难,至少相对于传统行业而言,测试工具的通用性要差很多,即便LoadRunner这种算是比较通用的商业工具,其实也有非常大的定制的数据和方案的工具,而且对使用的人要求比较高(你知道我的性能测试不只是录个脚本跑一下这个层次)。当然,对于一些比较标准化的产品,比如防火墙,路由器等,是有RFC 3511之类的东西,测试也相对标准化了。  好,假设我们接受这个现实,对于一个质量有一定要求的自己开发的软件系统,我们需要测试,那么接下来的问题就是,这个进行测试的人员是什么样的人,最起码有三种可能:  1. 我们的开发人员把测试工作也做了  2. 外包给别人来做软件测试  3. 我们自己的专职的测试人员  而实际上,绝大部分是上面三种的混合体,因为混合的比例不同体现出一些差别。比如我看到的几种模式:  1. 开发做了比较完整的单元测试和基本的功能测试,使得测试人员极少。比如大家常说到的google的模式,他们的开发人员素质非常高,自测也做得比较完善。  2. 专职的测试投入的人力,还取决于一个重要的因素,提交测试的质量。有些地方开发只做了很少的自测,大部分依赖自己的专职的测试人员,这个其实也比较常见。测试除了基本的功能测试,也会去做全系统的集成测试,安全测试,性能测试,兼容性测试等等。  3. 在2的基础上大量的使用外包,把很多基础的版本功能测试通过外包来完成,自己的测试人员可以做更多测试技术方面的实践。  结合以上的几个维度,我们再来看测试是否必需,也许会更加的清晰一点。  后面我们再来看看测试如何满足组织对于质量管理的要求,有哪几个层次,以及测试组织安排方面的一些思考。
12

鲜花

握手

雷人

路过

鸡蛋

扫一扫关注最新动态

毒镜头:老镜头、摄影器材资料库、老镜头样片、摄影
爱评测 aipingce.com  
返回顶部