存档

文章标签 ‘测试’

BVT(Build Verification Test)

2009年11月2日 stone 没有评论

BVT(Build Verification Test)

版本验证测试 (BVT) 也称为"冒烟测试",通常由一组广泛的测试组成,这些测试用于验证特定版本的总体质量。 BVT 通常根据设定的计划自动运行,经常在夜间进行。也可以手动运行,例如自动运行失败后。如果 BVT 中的所有测试均已通过,则认为该版本成功。就是拿到一个软件,首先不急于完全测试,而是在很短的时候内把软件的基本功能走一遍,看有没有什么大的问题,如果存在大的问题,就没有必要再进一步测试了。可以节约时间,提高测试效率。

冒烟测试,也有称作烟雾测试(smoke Test):一种用于验证系统基本功能的实现并达到一定程度的稳定性的测试。这种测试经常用作进入下一个等级的测试的入口准则的一部分。关于冒烟测试,应该是微软首先提出来的一个概念,和微软一直提倡的每日build有很密切的联系。具体说冒烟测试就是在每日build建立后对系统的基本功能进行简单的测试,这种测试强调功能的覆盖率,而不对功能的正确性进行验证。从这一点看和所谓的“接受性(验收)测试(Acceptance Test)”非常相似。不同之处就在于他们执行的频率和被测的版本不同。 至于冒烟测试这个名称的来历,大概是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟在进行其它测试,否则就必须重新来过。类似的如果冒烟测试没有通过,那么这个build也会返回给开发队伍进行修正,测试人员测试的版本必须首先通过冒烟测试的考验。冒烟测试应该是对整个系统流程从输入到输出的完整测试。测试不必是面面俱到的,但是应该能够发现系统中较大的问题。冒烟测试应该是足够充分的,通过了冒烟测试的build就可以认为是经过充分测试、足够稳定的。不进行冒烟测试的build是没有太大价值的。冒烟测试就像一个哨兵,在阻止着产品质量恶化和集成问题的产生,不进行冒烟测试,每日构造可能会变成浪费时间的练习。冒烟测试必须随着系统的扩充而扩充。最初,冒烟测试可能是非常简单的,比如验证系统是否会打印“Hello World”,随着系统功能的扩充,冒烟测试需要越来越充分。最初的冒烟测试也许只需要几秒钟来执行,逐渐地,测试可能会花费30分钟,1小时,甚至更长。

BVT测试内容:

单元测试,使用白盒测试,设计用例是针对详细设计文档产生的。

集成测试,设计用例是针对概要设计说明书产生的。

系统测试,设计用例是针对软件需求规格说明书产生的。

验收测试,测试用例正常情况下应该由客户给出,由客户进行验证,以便下结论是否可交付。

BVT测试的特点:主要是针对主体功能及各入口点,时间短,测试用例也只有正面的,负责人一般式项目经理或者技术经理。

何时应该进行BVT测试:从上面的BVT测试介绍中可以看出来,bvt测试当然是测试的次数越多越好,但是针对现实情况,测试部要求在送测之前,程序在vss上打了基线,然后项目经理或者技术经理从vss上拿下最新的版本,然后做bvt测试,如果测试通过,则才可以填写送测单,并将bvt测试情况写在其中,如果vbt测试没通过,则需要修改bug,然后重新打基线,从新做bvt测试。bvt通过的要求并不是说所有的bug全部都改掉,而是没有重大的bug,允许有小bug的存在。

bvt测试,以及测试用例的编写,都是需要时间成本的,故在最初制作项目计划时,就应该识别该任务,并充分考虑其工作量。

bvt测试用例,应该随着系统的不断扩展而不断扩展,它不应该是一成不变的。

bvt测试应该包含的内容:

1、业务流的测试,保证正常业务链路的通畅。

2、工作流的测试,主要是测试流程流转是否正常,至于流程步骤的表单内容是否正确则不关注。

3、关键功能的测试,至少要保证系统运转所需的启动数据,以及一些开关控制正常。

4、重要基本功能的测试,比如对核心业务有影响的一些增删改等。

bvt测试的过程:

1、各单元测试通过

2、打版本

3、拿最新版本

4、根据部署文档部署,尽量与用户环境一致

5、执行bvt测试用例

6、bvt测试结束后,如果成功,则填写送测单,并在送测单种写明bvt测试结果;如果不成功,则修改bug,重新进行bvt测试。

分类: Article 标签: ,

返测与回归

2009年7月21日 stone 没有评论

发现很多人将返回测试和回归测试的概念给弄混了,现在说说自己对这两个概念的理解。

返测:测试过程中,缺陷修改后由测试人员重新进行验证,以保证修改的正确性。(对特定的缺陷进行重新测试)

回归:指测试进行到某一阶段时,回过头来对重新执行以前的测试。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现、修复的错误是否引发新的问题。(全部重新测一遍)

在软件生命周期的任何一个阶段,只要软件发生了变化,就可能给该软件带来问题。软件的改变可能是源于发现了错误并做了修改,也可能是因为在集成或维护阶段加入了新的模块。因此,每当软件发生变化时,就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,还要补充新的test case来测试新的或修改了的功能。为了验证修改的正确性及期影响,就需要进行回归测试。

分类: Note 标签:

HP Mercury 系列测试工具使用注意事项

2009年6月17日 stone 没有评论

·系统中使用中文用户名(如XP系统),会造成以下异常:

1、LoadRunner中录制的WS脚本回放通不过。

2、QTP打开后,使用不了(如录制按钮失效等等)。

·将安装文件放置于中文目录中,安装过程会提示文件找不到或缺失某个文件之类的错。(也不要放在桌面上,桌面路径为C:\Documents and Settings\Administrator\桌面)

分类: Note 标签: , ,

我要告诉测试新手的

2009年6月5日 stone 没有评论

作者:Randall W.Rice, CSQA, CST, CSTM

翻译:skinapi

前言
因为已经带领和训练测试团队多年,所以按惯例我总有些东西确定需要传达给测试新手。不管你是一个测试新手还是一个经验丰富的测试专家,都有不少有益的东西需要牢记在心。

1、你是一个检查者,你不需要为质量负责
很多测试人员误入歧途,不明白他们是评测产品的而不是控制产品的。这两者之间有着天壤之别。例如,一个测试团队花费好几周时间测试并发现很多缺陷,只是为了看着管理层决定发布一个有已知严重缺陷的产品。测试团队经常会感到士气受挫,置疑他们测试的目的。

我询问团队中的成员他们是否被支付薪水了,通常得到的回答都是“是”。我又询问他们是否尽力去做工作了,再一次,通常得到的回答都是“是”。我于是告诉他们,“你们做了你们的工作。你们尽力测试,发现了缺陷并进行了上报。那么现在可以回家休息了。实际上,作为一名测试人员唯一失败的地方是不上报一个已知的缺陷。”

这不会提高士气,但却有助于事情向正确的方向发展,特别是能让人不用每天晚上都在家接着办公。

很多测试人员,包括我,当我们刚开始测试工作时,似乎会觉得自己对我们所测试的系统应用的质量负责。尽管这个工作的出发点是让人钦佩的,可实际上我们测试人员对于产品的质量基本没有控制能力。也是由于这个原因,测试人员不为质量负责。现在问题是管理层并不总是能看到这种区别。所以经常看见管理层提出类似于“我们付钱给这些人不是为了获得高质量的软件吗?”的问题。

2、缺陷都是有价值的
每一个缺陷都是深入了解和提高的机会。我们可能只有一次机会观察到一个缺陷,所以我总是告诉测试人员始终保持高度注意力,不要为测试的乏味所折磨。

缺陷信息可能是可获取的项目数据中最有效的资源之一。但是这都取决于我们能多好的捕捉和传达我们所发现的缺陷的相关信息。

每个缺陷都会花费整个组织的金钱。如果我们不能从中更进一步了解产品,我们会浪费大量时间和金钱。当我们把一个错误转换成一次深入了解的机会时杠杆作用就出现了。让我们面对它――有些教训只能通过经历来学习的。

由于一个缺陷而责备谁不会有任何好的作用。责备只会让士气低落、沟通中断。这就像不断鞭打一匹死马希望它能活过来一样。

3、你报告第一个问题之前一切都是美好的
这就是一个测试人员所面对的现实。你可以计划测试,获取所需要的资源,看起来所有人都站在你这边。可当你报告第一个问题之后,事情就开始变得紧张了。

出现这种态度上的突然变化的原因是现在你在批评某些人的工作了。自尊心使得自我收到伤害,关系变得紧张。有些情况下自尊心是值得期盼的,只要知道当你开始发现问题的时候态度有可能变化就可以了。

我经常建议测试人员做的一件事是读一读一些你过去写的缺陷报告,假设自己是接收缺陷报告的人。你会发现自己需要更老练一些。写一个没有任何挖苦语句的缺陷报告可能没什么乐趣,但它的确有助于和开发人员之间保持一个好的关系。

4、只能测试你能观察的
你可能总想测试一些真正有创造性的用例,但如果你没有办法观察到结果,那有什么意义?尽管有些应用让你能观察到很多,但仍然有你没办法接近的,例如结构、隐藏的对象、后台进程等。

5、别忘记你是怎样到一个地方的
我不是在谈论知道为什么你走进一个房间,而是在测试时执行的步骤。对于测试新手常见的是发现了一个重大的缺陷,但却无法复现它以便定位解决。这样你只会觉得不舒服,不知道自己到底是真发现了一个缺陷,还是说仅仅是错误的使用了应用。

你能用来跟踪你的测试步骤的方法有测试脚本、测试记录、敲键记录器如Spector和屏幕视频捕捉工具如Hypercam。

6、标准和流程是你的朋友
尽管标准和流程让一些人觉得受限,但它们为你的工作提供了有价值的指导。不要拒绝标准因为它们是详细的、具体的。因此用它们指导自己更快、更一致的完成自己的工作。

7、没有足够的时间用于测试
几乎每一个测试人员都抱怨没有足够的时间用于测试,但实际情况是测试任何东西到完整的程度都是不可能有充足时间的。当你充分考虑软件的特性如可用性、安全性、兼容性、互操作性等时这一点尤其正确。

不要再抱怨缺少时间,学会根据风险来进行优先级排序,把注意力都放在对管理层很重要的应用目标上。有时候我们测试的内容超出了我们需要测试的,因为我们的目标偏离了产品的价值。

8、你不可能发现所有的缺陷
如果你测试的东西后来有缺陷被发现,不要变得气馁。你可能已经做了非常全面的工作,获得了高水平的缺陷移除,但100%都是不可能的目标。

9、保持幽默感和对前景充满信心
经常微笑、保持健康可能是你最好的生存方式。如果你正处在困难条件下,请相信,这一切都将过去。

10、争取做到最好而不是完美
测试新手经常会陷入追求完美的过程中,认为100%的正确才是标准。我曾经也是受害者之一,但要为自己辩护的是,我以前深受80年代后期类似于“99.9%还不够好”的TQM帖子和文章的影响。

追求完美的问题在于它会让测试进程变慢,将担心引入你所做的一切,使得你对别人更挑剔,而且通常会让你的朋友和家人感到失望。

当然,没人愿意犯错误,但他们稍不注意就出现了。想不犯错误就是否认现实。争取做到最好是一种好的习惯,表明你对工作的态度和投入程度。如果你想努力做到最好,你就会往前再多走一点。

根据我的观察,大多数人看到错误或者经历失误时都是很宽容的。人们最关心的是你对待问题的反应。

11、开发人员不是敌人
需要整个项目团队的努力才能递交高质量的产品。有时候似乎开发人员不太关心质量,这个时候事情背后可能存在隐情。这时候你需要更好的和开发人员合作而不是反对他们。要始终牢记良好的交流是一个项目成功的关键因素。当你和开发人员站到对立面时,交流就停止了,你测试所需的很多信息也无法获取了。

12、建立和维护一个私人的交际网
你的私人和工作关系是一个很重要的资产。无论时当你有工作时还是当你没工作时他们都是一个很好的支持系统。找一个好的指导者,而当你学到足够的东西时成为别人的指导者。

13、持续锻炼自己的技能
你的技能把你和别人区分开。始终通过参加专业会议、获取认证、阅读专业资料等来不断学习。我给自己制定的目标是每周至少读一本和个人发展以及职业发展相关的书(测试、领导艺术、商业、IT等)。

一个个人发展方面的专家说过如果你每天在任何特定的主题上花费30分钟进行阅读,五年之内你肯定能成为这个主题方面的专家。这一点对我是起作用的――你也可以试试。

另一种让自己始终内行并建立网络的好的方式是活跃在一些QA或者测试论坛上。

14、当前进变得困难,懒惰就需要创造力了
当我第一次成为一个测试团队负责人时,我用这句话做了一个字条挂在我的桌上。它不断提醒我把创造力作为我解决问题的一个杠杆。

学着从一个新的有创造性的方式来看待问题。你可能有一个好的测试计划,但你如何应付各种变化呢?弹性是一个优秀的问题解决负责人的关键特性。

15、简单并不总是很容易
我们测试中做的很多工作看起来都很简单。但是,挑战在于保持努力的连贯性。

有些解决问题的方式刚开始看起来很简单,但不要由于它简单和明显就丢弃任何一种想法。同样,不要低估实现一个简单想法所需要付出的努力。

一些看过我和William E.Perry合著的书“Surviving the Top Ten Challenges of Software Testing”评论说这些挑战都很简单且很容易解决。这就让我奇怪为什么人们还在年复一年的提出“人的问题”。我认为在大脑中产生想法比实际实现出来要简单的多。

结论
智慧比知识更重要。你可能已经学习了大量测试技术,但如果你没有足够的智慧判断什么时候采用它们,没有从整体上理解它们,你应用它们的能力将受到很大限制。对任何都有涉猎的你存在的一个问题是“你不知道什么你不知道”。智慧帮助你明白你需要知道哪些东西才能成功。

分类: Article 标签:

测试人员应具备的几种思维方式

2009年4月16日 stone 没有评论

测试人员应具备的几种思维方式

  1、逆向思维方式

  ● 逆向思维在测试中用的很多,比如将根据结果逆推条件,从而得出输入条件的等价类划分

  ● 其实逆向思维在调试当中用到的也比较多,当发现缺陷时,进一步定位问题的所在,往往就是逆流而上,进行分析

  ● 逆向思维是相对的,就是按照与常规思路相反的方向进行思考,测试人员往往能够运用它发现开发人员思维的漏洞

  2、组合思维方式

  ● 很多东西单一的思考都没有问题,当将相关的事物组合在一起却能发现很多问题;如多进程并发,让程序的复杂度上了一个台阶,也让程序的缺陷率随之而增长

  ● 按照是否排序组合可以分为:排列(有序)和组合(无序);针对不同的应用,可以酌情考虑使用“排列”或者“组合”

  ● 为了充分利用组合思维而不致于让自己的思维混乱,要注意“分维”,将相关的因素划分到不同的维度上,然后再考虑其相关性

  3、全局思维方式

  ● 事物往往存在多面性,当我们掌握了越多的层面,我们对它的认识就越清楚,越有利于我们掌握其本质,全局思维方式就是让我们从多角度分析待测的系统;试着以不同角色去看系统,分析其是否能够满足需求

  ● 其实平常我们在软件开发过程中,进行的各种评审,就是借助全局思维的方式,让更多的人参与思考,脑力激荡,尽可能的实现全方位审查某个解决方案的正确性以及其他特性

  4、两极思维方式

  ● 边界值分析是两极思维方式的典范

  ● 为了看系统的稳定性,我们采用了压力测试

  ● 两极思维方式,是在极端的情况下,看是否存在缺陷?

  ● 注意是两极,不是一极

  ● 测试人员做久了,往往容易走极端——职业病,不利于与人沟通

  5、简单思维方式

  ● 剥离一些非关键特征,追逐事物的本质,让事物简单的只剩下“根本”

  ● 针对事物本质(解决问题的本质)的测试,让我们不至于偏离方向

  6、比较思维方式

  ● 认识事物时,人们往往都是通过和头脑中的某些概念进行比较,找出相同、相异之处,或者归类,从而将其加入大脑中的知识体系,可能的话,再建立好的搜索方式,以便以后使用

  ● 应用模式是“比较思维”很常见的例子,现在模式很火,有设计模式、体系结构模式、测试模式、等等,一些专家针对一些相关问题的共性找出来的解决方法,取完名字后,可以让大家方便的复用

  ● 让经验在这里发挥作用,测试中经验很重要,比较思维是使用经验的方式

  7、动起来,更精彩

  ● 关注程序的运行时状态

  ● 传统的基于结构的程序可以更多的在代码中反映将来程序的运行方式;而面向对象将代码和运行时显著分离

  ● 让我们在关注代码静态结构(如类结构)的同时,也要谨慎关注其动态(对象交互网)表现

  其实这些思维方式,大家都在有意识或者无意识的使用着,它们各自都有自己的妙处,将我们的思维发散,有意识的将他们用在问题的思考上,有时可以给我们一种“柳暗花明又一村”的感觉。

  最后想说,只是知道这些原则意义不是很大,如果真能让它们成为思考的血液,才能发挥它的真正价值。那真的需要很多的历练,其实成为一名出色的测试人员,远没有那么简单,需要简单,需要(不断的学习+不断的经历+不断的思考)。

原文:【聚杰网测试技术】

分类: Article 标签: ,

浅谈软件测试中集成测试的方法

2009年4月16日 stone 没有评论

浅谈软件测试中集成测试的方法

  时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误,等等。综合测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误。 

  某设计人员习惯于把所有模块按设计要求一次全部组装起来,然后进行整体测试,这称为非增量式集成。这种方法容易出现混乱。因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。与之相反的是增量式集成方法,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试亦可做到完全彻底。

  下面讨论两种增量式集成方法。

  一、自顶向下集成  

  自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。深度优先策略首先是把主控制路径上的模块集成在一起,至于选择哪一条路径作为主控制路径,这多少带有随意性,一般根据问题的特性确定。以下图为例,若选择了最左一条路径,首先将模块M1,M2,M5和M8集成在一起,再将M6集成起来,然后考虑中间和右边的路径。广度优先策略则不然,它沿控制层次结构水平地向下移动。仍以下图为例,它首先把M2、M3和M4与主控模块集成在一起,再将M5和M6 和其他模块集资集成起来。  

  自顶向下综合测试的具体步骤为:  

  1 以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;

  2 依据所选的集成策略(深度优先或广度优先),每次只替代一个桩模块;

  3 每集成一个模块立即测试一遍;

  4 只有每组测试完成后,才着手替换下一个桩模块;

  5 为避免引入新错误,须不断地进行回归测试(即全部或部分地重复已做过的测试)。

  从第二步开始,循环执行上述步骤,直至整个程序结构构造完毕。下图中,实线表示已部分完成的结构,若采用深度优先策略,下一步将用模块M7替换桩模块S7,当然M7本身可能又带有桩模块,随后将被对应的实际模块一一替代。 

  自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验,因此较早地发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分。解决这个问题有几种办法,第一种是把某些测试推迟到用真实模块替代桩模块之后进行,第二种是开发能模拟真实模块的桩模块;第三种是自底向上集成模块。第一种方法又回退为非增量式的集成方法,使错误难于定位和纠正,并且失去了在组装模块时进行一些特定测试的可能性;第二种方法无疑要大大增加开销;第三种方法比较切实可行,下面专门讨论。

  二、自底向上集成  

  自底向上测试是从原子模块(即软件结构最低层的模块)开始组装测试,因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块。  

  自底向上综合测试的步骤分为:  

  1 把低层模块组织成实现某个子功能的模块群(cluster);

  2 开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;

3 对每个模块群进行测试;

  4 删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群。

  从第一步开始循环执行上述各步骤,直至整个程序构造完毕。

  下图说明了上述过程。首先原子模块被分为三个模块群,每个模块群引入一个驱动模块进行测试。因模块群1、模块群2中的模块均隶属于模块Ma,因此在驱动模块D1、D2去掉后,模块群1与模块群2直接与Ma接口,这时可对MaD3被去掉后,M3与模块群3直接接口,可对Mb进行集成测试,最后Ma、Mb和 Mc全部集成在一起进行测试。

  自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序最后一个模块加入时才具有整体形象。它与自顶向综合测试方法优缺点正好相反。因此,在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测试策略,有时混和使用两种策略更为有效,上层模块用自顶向下的方法,下层模块用自底向上的方法。

  此外,在综合测试中尤其要注意关键模块,所谓关键模块一般都具有下述一或多个特征:①对应几条需求;②具有高层控制功能;③复杂、易出错;④有特殊的性能要求。关键模块应尽早测试,并反复进行回归测试。

原文:【聚杰网测试技术】

分类: Article 标签: ,