时隔2年,我又回来了~

测试杂谈(转自周峰访谈)

上一篇 / 下一篇  2011-05-16 16:42:59 / 个人分类:经验

测试工作涵盖的内容很广,从测试阶段来分,一般分单元测试、集成测试、系统测试等;从测试类型来分,有功能测试性能测试、安全性测试、可靠性测试、兼容性测试等通用的一些划分;另外还可以根据是否执行被测对象来区分为动态测试、静态测试等。不同的测试阶段、进行不同类型的测试,所需要具备的技能都不一样。测试工作入门容易,但如果要做到精深,一定要具备下面几方面的专业知识和能力:

  1、计算机相关专业课程,例如数据结构、算法、计算机原理、操作系统原理、数据库原理、编译原理、所测系统的开发语言等等。当然不同业务方向的测试可能需要的这部分专业基础不一样,例如做嵌入式系统测试的,可能对计算机原理、操作系统原理等方面专业知识要求高一些,而如果不涉及到嵌入式数据库的话,可能数据库原理就没那么重要了;

  2、测试领域的专业知识,例如测试分析工程方法、测试设计工程方法、常用测试工具的使用、测试代码的编写和调试、性能的监测和调优、模拟器的设计、测试相关的工程流程等;

  3、业务知识。一个好的测试工程师,应该是所测业务领域的专家。这个就没有止境了。

  作为初级测试工程师,在测试工作入门之初,往往只是做些功能性的黑盒测试,这时候最需要掌握的是业务知识、和必须具备的系统环境的搭建、操作、维护能力。到了中级测试工程师阶段,开始要进行一些测试设计工作,这时候需要掌握各类测试设计方法、能够将测试对象抽象成各类模型,并运用测试方法设计用例去覆盖;另外可能会从只做黑盒性质的功能测试,开始陆续承担例如性能测试、自动化测试、单元测试、接口测试这样的一些工作,这个阶段可能需要有一定的编码能力、系统内部架构分析能力,这时候计算机专业课程基础就可能非常重要了。到了高级测试工程师阶段,就更上了一层,在业务上应该成为业务专家、参与前期需求讨论、确定可测试性需求,在系统设计上前期就参与进去参与评审(静态测试),将BUG消灭在萌芽阶段,在后期测试上主要承担测试分析工作,根据系统需求分析测试需求,保证测试的充分覆盖。

帮助进行软件测试的工具
 
可以把测试工具分成三大类:

  1、执行类工具;

  2、分析设计类工具;

  3、管理类工具。

  其中执行类工具又可以分为静态工具和动态工具;静态工具主要利用代码规则对代码质量进行检查,例如Pc-Lint、Logiscope等;动态工具可继续细分为单元测试工具、接口测试工具、系统测试工具,其中大家常见的主要是系统测试工具如QTPLoadRunner等。

  分析设计类工具比较少,目前成体系的还只有TestPlatform. (TP)。另外可能还有个别只是实现了某个分析设计方法的小工具例如正交分析工具等。

  管理类工具也比较多,功能比较全的有QC、RQM等,另外还有只针对某方面进行管理的工具例如Bugzilla等。

TP介绍,TP软件与同类测试工具的区别和优势

一个完整的测试流程包括测试分析、测试设计、测试实现、测试执行等环节。前面三个环节主要解决“测什么”的问题,重点关注测试的完整性、充分性、覆盖率,以提高测试的质量为目标。而测试执行环节是解决“如何测”的问题,重点关注测试环境的模拟、测试的效率,以提高场景的真实性、测试的效率为目标。

  目前业界主要的工具都集中在测试执行环节,前面三个环节除了TP外,几乎没看到过系统性的工具。

  整个测试工作的质量很大程度上是由测试分析、测试设计这两个环节的活动决定的。如果这两个环节工作没做好,或者投入不够,将会遗漏测试需求、或遗漏测试需求的测试点,引起漏测,导致测试不充分,影响软件质量。

  TP提供了整套从软件需求经过测试分析得到测试项、测试项经过测试设计得到测试用例的理论框架和工程方法,能帮助测试工程师辅助自动生成测试项、测试用例,提高测试的完整性、充分性、覆盖率,保证测试的质量。

  另外,测试工作需要根据产品已发现缺陷情况,分析其质量薄弱点,全面掌握产品各功能模块质量情况,及时调整测试重点,保证测试投入产出比,这对多轮测试、回归测试时确定测试的重点尤其重要。测试工作需要考虑什么时候可以退出,这需要建立测试的退出准则,并根据测试发现缺陷的情况进行质量分析,预测产品的遗留缺陷情况,判断何时可以结束测试。

  在这一点上,TP还提供缺陷管理和缺陷分析功能,主要有:

  i 能实现缺陷流程的完全自定义,允许用户根据自己企业情况自由定义自己缺陷属性、流程环节、流转关系等;

  ii 提供ODC分析工具、Rayleigh分析工具、四象限分析工具进行缺陷分析,全面掌握产品质量状况;

  iii 提供Gompertz分析工具、DRE/DRM分析工具、Rayleigh分析工具、四象限分析工具评估测试充分性,预测遗留缺陷数,判断测试何时可以退出。

  目前国产测试平台软件除了TP(TestPlatform)外还没有同类主流产品,国外同类产品以惠普公司的QC(Quality Center)和IBM公司的 RQM(Rational Quality Manager)为主流。现将TP和QC、RQM主要的技术指标和特性列表比较如下。

    测试分析的目的为从开发需求提取测试项,TP提供了继承性分析、质量模型分析、功能交互分析、用户场景分析、测试特性建模、测试项分解分配等分析功能;测试设计的目的为从测试项设计测试用例,TP提供了逐级细分法、域测试法、状态迁移分析法、流程分析法、判定表法、因果图法、正交试验法、错误猜测法等分析功能,TP能帮助测试工程师使用这些工程方法,自动生成测试项、测试用例,提高测试覆盖率。同时自动建立和维护需求-测试项-测试用例的跟踪关系,利用跟踪关系分析需求变更对后面测试资产的影响分析,以保持同步变更;利用跟踪关系分析需求所处状态、被测试充分性、需求的质量等等,方便保持这些资产的一致性。
 
测试主要就是要找到软件的缺陷,而TP中也包含缺陷管理和度量,这个模块有什么特殊的功能么?

  TP提供完善的缺陷跟踪流程,定义完备的缺陷属性以进行缺陷度量,同时支持缺陷跟踪流程的用户自定义和缺陷属性自定义。在此基础上,提供ODC分析、Gompertz分析、Rayleigh分析、四象限分析、DRE/DRM等工程分析功能,对缺陷进行单维度、多维度分析、进行缺陷趋势分析、对缺陷进行预测等,为软件质量、测试质量的评估、测试是否退出的判断、遗留缺陷的预测提供支撑。

TP可以用在哪些测试工作中?

  周峰:TP是TestPlatform的缩写,我们将它定位为测试平台,即支撑所有测试工作的平台。对测试工程师而言,TP能够对其日常测试工作中的测试分析、测试设计、测试实现、测试执行等具体测试工作提供工程方法支持,同时实现了各环节测试资产(需求、测试项、测试用例、缺陷等)的管理和跟踪;另外还支持静态测试管理和个人工作日志管理。对于测试经理而言,TP提供三级测试计划体系,以测试计划为驱动,来支撑测试分析、测试设计、测试实现、测试执行、软件质量改进等软件测试所有环节的活动;支持测试全流程的度量,整个度量体系分规模、工作量、计划、质量等四大类共90多小类度量项,并在这些度量项基础上提供近100个分析指标,帮助管理者全方位评价软件质量、测试资产质量、测试效率、测试充分性等;提供提供ODC分析、Gompertz分析、Rayleigh分析、四象限分析、DRE/DRM等工程分析功能,帮助管理者建立软件研发过程的质量基线、测试能力基线,并帮助管理者将项目实际缺陷、能力数据和基线数据进行对比分析,发现软件过程中的改进点,判断测试是否可以退出、软件是否可以发布,并对软件中残留缺陷数进行预测。

  51Testing:给软件测试人员提一些意见和建议

  1、建议测试工程师在测试之余,有条件的话,多看开发文档(需求、设计等)、代码。做黑盒测试的不要满足于只了解系统外在的功能,而应该通过看文档和代码了解内在的实现和机制;而做白盒测试的工程师不能只满足于了解所负责模块的设计和代码,应该去阅读整个系统的文档和代码。从我个人的体会来看,当完整的从整体到内部细节完全弄通了一个系统后,整个人会上一个台阶,有一种一通百通的感觉。再接触新的系统就基本上很容易了;

  2、重视缺陷分析,发现缺陷后不要只满足于提交缺陷单、最后回归一下。这样永远都不会有提高。建议每轮测试完成后,在回归时,把所有的缺陷单中开发定位的原因、缺陷位置、代码找出来好好读一遍。这个基础工作积累到一定程度,会发生质变。可能一看到某种缺陷现象,就能推测出是什么原因造成的;或者还在前期需求、设计、编码阶段,就能直接发现需求、设计、代码中的问题,因为你已经积累了很多会引起缺陷的根源,一看就知道开发这样做不行。这样就会上升到能进行静态测试,通过看文档、看代码,发现问题。


TAG:

旺仔小罐头的个人空间 引用 删除 289782385   /   2011-05-17 09:04:02
我个人觉得虽然这篇文章不失为TP做宣传的噱头,但是从周峰的一些话语中可以学到很多的知识。
 

评分:0

我来说两句

Open Toolbar