qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

QTP 11.00 ——简单脚本如何录制

 以QTP 11.00自带的订飞机票的小示例程序为例,手工开发以下脚本代码:

If Dialog("Login").Dialog("Flight Reservations").Exist(2)Then
  Dialog("Login").Dialog("FlightReservations").WinButton("确定").Click
End If
Dialog("Login").WinEdit("Agent Name:").Set "test"
Dialog("Login").WinEdit("Agent Name:").Type micTab
Dialog("Login").WinEdit("Password:").SetSecure"5103f48e3ccaaa3c50b39191d30cc0e56ac005b2"
Dialog("Login").WinEdit("Password:").Type micReturn
If Window("Flight Reservation").Exist(5) Then
  Wait(3)
End If
Window("Flight Reservation").ActiveX("MaskEdBox").Type"013113"
Window("Flight Reservation").WinComboBox("Fly From:").Select"Denver"
Window("Flight Reservation").WinComboBox("Fly To:").Select"Paris"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("FlightsTable").WinList("From").Select"15791  DEN   03:12PM  PAR   05:12PM  AF    $165.60"
Window("Flight Reservation").Dialog("FlightsTable").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "bussiness"
Window("Flight Reservation").WinButton("Insert Order").Click
msgbox "Finished! Program will exit!"
Window("Flight Reservation").Close

  首先是要判断主界面是否正常,如果Help按钮被点击过了,则先恢复它。

  用户名和密码输入完成之后,因为不同的机器性能表现不同,为了脚本达到同步,检查软件主界面是否加载成功,未成功时等待3秒再判断,直到成功再进入下一步。

  完成之后输出提示信息,在用户确认之后再关闭程序。

  好了,最主要的调整就到这里了,下一步也就是最关键的步骤,就是参数化了。下期发布。

posted @ 2013-07-25 10:31 顺其自然EVO 阅读(271) | 评论 (0)编辑 收藏

软件项目的质量管理

 引言

  说到软件项目的质量管理,首先要弄清楚什么是质量管理。国际标准组织ISO9000对质量的定义就是:质量是产品或服务用于满足人们潜在或明示的需求的所有特征和性能的总和。

  软件项目的质量管理就是确定软件项目的质量方针、目标和职责,并通过质量规划、质量保证、质量控制和改进等工作确保软件项目的质量得以实现的全部管理活动的总称。

  怎样才能做好软件项目的质量管理呢?我们要在理解现代软件项目的质量管理的理念的基础上,使软件项目的质量管理具有可操作性和可衡量性。

  现代软件项目的质量管理的理念包括:

  ①顾客满意:就是我们的交付件(本文指软件)要满足客户的期望;

  ②预防胜于检查:质量管理的重点在事前的预防,而不是事后的检查;

  ③管理层责任;

  ④持续改进:软件项目的质量管理是一个持续改进的过程。

  即使我们理解了现代质量管理的理念,达到质量管理所要求的高度,我们在实际操作中,还需要理论联系实际。这就要求软件项目的质量管理具有更强的可操作性和可衡量性,为此将软件的质量定义为达到要求(Conformance to Requirements)和适合使用(Fitnessof Use)两个层面。也就是说,软件项目的项目工作要提交出原来所要求的、具有实际用途的软件产品。简单地说,软件项目的质量管理就是产出的软件,满足客户明确需求、隐含需求的能力的所有特性。在现实生活中,监控所有对质量有影响的关键点,采用有效的测量手段来管理软件的质量,从而实现软件项目的“高”质量。

  1 质量管理的流程总述

  一般软件项目可分为启动、规划、执行、监控和收尾五个部分。其中质量管理涉及到规划、执行、监控三个部分。软件的质量管理包括质量规划、实施质量保证、实施质量控制三个部分。

  质量规划在软件项目的规划过程组中;实施质量保证在软件项目的执行过程组中;实施质量控制在软件项目的监控过程组中。他们之间的关系并不是相互独立的,而是相互作用,相互影像的。

  在软件项目的质量管理中,质量规划就是判断哪些质量标准与本项目相关,并决定应如何达到这些质量标准。它是软件的项目管理计划的一部分,一般在项目的规划时处理。

  软件项目的质量保证是指质量系统内实施了计划的、系统的活动;同时为项目满足所有项目利益相关方的要求提供信心,相对于内部的质量控制,质量保证可以说是对外的,它包含:

  ①涉及整体项目、提高信心;

  ②涉及经验教训总结/质量审计;

  ③重新评价质量标准是否合适;

  ④实施阶段。

  软件项目的质量控制是在项目生命周期的几个关键点上进行的,它决定了项目进行的方式并进行了必要的纠正。质量控制是质量保证的输出,它考虑了项目的效果和效率。

  它通常包含:

  ①涉及项目的具体工作成果(软件,开发过程中的文档等);

  ②涉及到具体工作成果是否可以被接受;

  ③检查具体工作成果是否符合相关质量标准;

  ④监控阶段。下面将介绍软件项目中质量管理的各个流程。

  2 软件项目的质量管理流程

  1·1 质量规划

  从前文可知,软件项目的“高”质量来自于“好”的计划。只有一个好的质量规划,才有可能产出高质量的产品。质量规划既然如此重要,那如何做才能制定一个“好”的软件项目的质量规划呢?

  制定软件项目的质量规划,依据的是公司的质量方针。公司的质量方针是“由最高层管理部门正式阐明的、组织关于质量的总的打算与努力方向”。由此可见,质量管理是最高层责任。

  项目质量规划的目的都是为了产出“高”质量的产品。那么怎样衡量软件项目质量的高低呢?我们主要的手段是将软件项目的质量和其质量基准进行对照。基准对照是将软件项目的实际做法或计划做法与其他项目的做法进行对照,从中萌生出如何改进思路,或者提供一项量度的标准。

  1·2实施质量保证

  质量保证指通过实施计划中的系统质量活动,确保项目实施满足要求所需的所有过程。

  质量保证的内容有:

  ①清晰的软件质量要求说明(包含在软件的需求分析和范围说明书中);

  ②科学可行的质量标准;

  ③建立和健全软件项目质量体系;

  ④配备合格和必要的资源;

  ⑤持续开展有计划的质量改进活动;

  ⑥项目变化全面控制。

1·3实施质量控制

  实施质量控制指监视软件项目的具体结果,确定其是否符合相关的质量标准,并判断如何杜绝造成不合格结果的根源。

  软件项目的质量控制包括两项内容:

  ①监控具体的交付软件,以确定他们是否与相关质量标准一致;

  ②确定消除造成不满意结果的影响因素。

  其中“结果”也包含两项:

  ①产品结果(交付的软件);

  ②项目管理结果(成本与进度计划执行绩效)。实施软件项目的质量控制,就必须实施质量监控。

  如何对质量进行有效的监控呢?有如下几条原则:

  ①监控工作对事不对人;②监督与服务相结合;③采用结构化的监控方法;④制定合理基线;⑤动态持续监控;⑥监控信息交流;⑦采取必要的变更和纠偏行动。

  在质量监控的原则上,我们对软件项目的质量实施控制。

  质量控制主要有以下步骤:

  ①收集质量数据;②整理数据;③统计分析;④判断质量状况;⑤分析原因;⑥拟定措施。

  再严格的质量保证,质量控制都会有变更的情况出现。

  质量变更方法有如下几种:

  ①利用质量保证,检查质量标准的有效性,如必要,重复进行质量计划;

  ②利用质量控制,检查项目成果质量,如必要重复进行质量计划;

  ③利用边际分析:对单位质量改进能够产生的效益增加和需要支付的成本增加的分析。

  最佳的质量应该是效益增加和成本增加相等时的质量。对于软件项目的质量变更,事前判断质量的成本,然后才决定是否变更。软件项目的质量成本包含多个方面,它不仅包括预防成本,评估成本,还包括内部缺陷成本和外部缺陷成本。

  对于软件项目的质量成本,在实际处理中我们可 以通过提高符合成本来降低不符合成本,实现质量总成本的降低。

  2 实际处理过程

  理论很容易学会,但是理论联系实际一直都是一个问题。下面我们将从六个方面说明软件项目的质量管理。其中第一、二、三为质量规划部分,第四为实施质量控制部分,第五条为实施质量保证部分。第六条贯穿质量管理的全过程。

  (1)确定交付物的质量特性。

  ①软件产品的“质量”很大程度上是由其设计确定的;

  ②并非所有软件过程中的设计细节都可以进行质量控制;

  ③软件的功能系指软件完成自身工作的“好坏”程度。

  (2)选择各个软件项目的质量特性的测量指标。

  要控制软件项目的质量,所确定的特性必须是可以测量的。如证券软件的委托笔数在一定客户量下每秒能达到的性能等指标。

  (3)设定各个软件项目的质量特性的指标。

  对所确定的软件项目的质量特性指标要建立一个质量标准作为评价标准。这就涉及两个方面:①标准的可行性:并不是所有质量管理的标准都适用于软件项目,标准是否可行可从三个方面进行考量:与顾客期望比较;与同行比较;与历史比较等;②成本制约应是:无论对顾客还是我们,都必须要考虑软件项目的成本和进度等问题。

  (4)根据这些标准对软件项目的质量进行控制。

  设定标准后质量控制部门的任务就是对软件进行检验测试,看它们是否符合标准。现代质量管理的理念是质量是管理层责任。那么管理层该采取哪些措施来避免重大责任的发生呢?

  以下以项目经理为例来进行阐述管理层应采取的措施。在软件项目中,项目经理有三个职责(工作方向)可以提高软件的质量:

  1)在运作系统的什么位置上检验?项目经理在软件开发过程中设定关键控制点(包括但不限于里程碑):即进行检验以保证软件符合规范的位置:开发前、开发中、开发后。

  项目经理设立检查点的基本原则是:

  ①在一个业务逻辑特别复杂的流程开始之前;

  ②在与其他软件系统进行对接前;

  ③在一个模块功能完成前;

  ④在潜在的损害、破坏可能发生前;

  ⑤在责任发生转移前。

  2)检验的方法。在软件项目中,一般采用测试软件来模拟一定的环境对软件进行测试,例如压力测试等,通过测试来达到检验软件的目的。

  2·1产品审计计划

  (1)在实际项目中,质量管理人员依据剪裁后的项目过程表(含工作产品)、项目计划,制定项目的《质量保证计划》,在计划中列出质量管理人员需要审计的产品、审计活动的时间,以及需要参照的标准。

  (2)在实际项目中,审计的工作产品一般包括:业务需求说明书、需求分析说明书、项目计划、概要设计说明书、单元测试报告、测试用例、测试计划和配置管理计划等。

  2·2过程审计计划

  (1)在实际项目中,质量管理人员根据剪裁后的项目过程表(含过程元素)、项目计划,制定项目的《质量保证计划》,在计划中列出需要审计的过程活动、审计活动的时间、需要参照的标准。审计活动的时间根据具体项目的活动时间确定。

  (2)在实际项目中,审计的过程包括管理过程、开发过程、支持过程。过程活动一般包括:立项管理活动、需求管理活动、项目策划活动、项目监控活动、收尾管理活动、软件工程产品活动、同行评审活动、里程碑评审活动、配置管理活动、培训活动、度量与分析。

  (3)组织级相关活动包括:组织培训活动、项目工作量度量(即周计划制定与项目时间填写)、组织级配置管理活动、过程改进(如PMO会议)。审计时机:定期(一般每两周或每月一次)。

  3 结语

  对软件项目进行质量管理,首先需要知道企业的质量方针;在企业的质量方针下制定详细的质量规划。在制定完质量规划后,要让软件项目的质量管理具有可操作性和可衡量性。同时我们需要牢记,任何类型的质量管理过程,都是一个持续改进的过程,需要不断变更。

  现代软件项目的质量管理的思路是:加大前期预防成本的投入,减少后期缺陷成本的支出,从而实现“质量免费”。

posted @ 2013-07-25 10:29 顺其自然EVO 阅读(618) | 评论 (0)编辑 收藏

让Quality Center走下神坛--测试管理工具大PK

 让Quality Center走下神坛--测试管理工具QC/ALM 和 RQM、Jira、TP、SCTM大PK

  在写完了《让QTP走下神坛》之后,现在来谈谈测试管理工具,献给所有正在或打算做测试管理工作的同行。

  当然,话题离不了Quality Center——但又不只是谈QC,我会结合对比各种主流的企业级测试管理工具,包括标题提到的:HP QC/ALM、IBM RQM、51Testing TP、Micro Focus SCTM、Atlassian Jira。但是不会提及Bugzilla、Bugfree、Mantis这些,因为它们只能属于缺陷管理工具,和以上几款工具不在一个级别上。

  当然,得先从QC说起。


  既然提及Quality Center,就得先谈Mercury,而既然提及Mercury,就得先谈HP。毕竟是大环境的衰败造就了QC的没落,难道不是吗?

  (一)因此,先说HP。

  HP原来有三大业务:PSG、IPG、EB,分别是个人电脑,打印和影像设备,企业级业务(软件服务)。PC业务利润微薄,压力大,HP早已江河日下;打印机扫描仪随着iPad等设备出现,早已经疲态尽显;HP倒一直想模仿IBM转型服务,号称要打造“Service Anywhere(一切皆服务)”,但从QTP、LoadRunner和Quality Center多年以来除了更换了华丽的界面,新增了零星半点的小特性,越来越耗资源,越来越不稳定,甚至继续保留着一堆N年以前的Bug,……,管中窥豹,可知其所谓的服务越来越流于表面了。


  据说今年HP对外宣称自己做组织架构调整,变为PPS(打印)、EG(企业集团)、ES(企业服务)和HP Software(软件),我对HP内部不太熟,不过在我看来换汤不换药。它们在历史上架构不知道调整了多少次,用业内人的说法是“总是在用一个错误纠正另一个错误”。

  (二)再说Mercury和Quality Center。


  HP在2006年7月以45亿美元收购了Mercury公司。而在此之前,Mercury是专注与软件测试工具研发的专业厂商,曾几何时在测试工具这块与Rational、Segue号称“测试三巨头”。它们推出的每一款产品都堪称划时代:测试管理工具TestDirector、性能测试工具LoadRunner、功能测试自动化工具WinRunner/QuickTest,分别迅速占领了全球70%左右的市场,时至今日,仍然威震江湖。


  QC为什么能有很强大的用户基础,其实不是因为QC的强大,归根结底,是TD当年打下大片江山,占尽了用户基础。我是从TD(TestDirector 7.2)开始用的,十年前当我第一次看到TestDirector真的是“亮瞎了眼”!世界上居然有这么Cool的测试管理工具!亮点在哪里?

  TD的安装相当简单,几乎是傻瓜式操作,“下一步”、“下一步”、……、“完成”。连数据库都删繁就简的采用Access,安装的便捷,怎一个爽字了得!

  而且基本不太消耗内存资源,使用起来一点都不卡。

  2、强大的易用性。

  TD的设计思路简单清晰,整个过程就是:写测试需求–》写测试用例–》执行测试用例–》提交缺陷、跟踪缺陷。总共只有四件事,而且完全符合Testers的日常工作流程。在当时同类竞争对手几乎只有缺陷管理工具Mantis、Bugfree、Bugzilla、ClearQuest,论强大论易用性都明显被拉开了一大截——绝对领先优势!

  3、放号策略。

  大家应该都还记得著名的TD License吧?有人称之为“Sale Policy”。什么意思呢?就是当初Mercury推出TD 7.6的时候,网上立刻有人出来发布TD 7.2的License;当Mercury推出8.0的时候,网上立刻有人出来发布TD 7.6的License;当HP Mercury推出Quality Center 8.2的时候,网上立刻有人出来发布TD 8.0的License……

  呵呵,就这么巧合,至于为什么会这样,明眼人一看就知。现在明白什么叫“Sale Policy”了吗?我先让你用旧版的,等你用上了以后,数据都在上面了,然后我推新版的,诱惑你用,……,一步步让你深陷其中,当你有一天发现你已经离不开我的时候,我对你实行收费……WOW!pfpf,果然厉害!所以,一代又一代的Test Manager前赴后继,大力推行TD。51Testing软件测试网%t Vm%}'p!i+_

  但是你们看,现在HP ALM还有吗?我毫不怀疑,没有继续延续之前的战略方针,ALM确实正在不断失守城池。《2012年测试从业人员调查报告》可以清晰看到,下面会有详细描述。

 (三)嫁对男人是女人一生的事业。

  悲剧就在这里,自从HP收购了Mercury,内部发生了大动乱,HP素以抠门闻名,收购了Mercury研发团队后,很多人的薪资被砍掉了三分之二!于是整个团队分崩离析……

  这也是为什么大家总感觉当初使用Mercury工具的时候那样心潮澎湃,现在每每看到HP的升级版却诸多失望多于期望。因为最核心的高层、架构师和专家早已离开了HP Mercury团队。

  所以,你们都看到了,……,就像QTP的新版本UFT一样,加了什么PDF验证、类增强、支持移动设备……,都有啥用啊?!你内核没有改变啊,大侠。。。一一大帮子人做了一整年就加了这么一点东西,还好意思拿出来说啊?!

  QC也莫过于此。

  (四)关于“改名”的乐趣。

  从频繁改名就可以知道HP的无能——没有本事升级内核,只能改改花哨的界面,加一点噱头,再换个名字,看看都有啥名字吧。

  测试管理工具:TestDirectoràQuality CenteràALM

  自动化测试:Astra QuickTestàQuickTest ProfessionalàUFT

  HP肯定会说:你不了解名字背后的意义,好吧,我替你们来说:TD升级为QC的本意是从测试整合为质量中心,把QTP捆绑进来,QC改名为ALM就是希望它不再只是针对测试或质量的管理平台,而是一个完整的软件生命周期管理平台。

  我想问一句:累不累啊?真以为改了名字以后用户就收获了什么好处吗?我倒觉得反而增加了用户的认知成本、使用成本,最终反而伤害了自己的品牌。

  (五)没落是一个不争的事实。

  好吧,废话不说,下图是我们针对国内测试从业人员做的问卷调查。你可以看到QC正在市场上节节败退,按正常估计,明年一定跌破四成——极有可能被Atlassian Jira取代霸主地位。

  看到了吗?QC从昔日的一股独大,变成了今天群雄并争。最明显的就是Jira,从2009年的14%上升为24%!!猛增10个百分点哦!这风头在自动化那边也是同样,Selenium从2009年的4%上升为12%。

  为什么?很多原因。且听我细细道来。为了更好的说明,我以和它体量相当的大型测试管理平台比如Micro Focus SCTM(Silk Central Test Manager)、51Testing TestPlatform、IBM RQM来跟它做个简单对比——为什么不拿Atlassian Jira对比?因为Jira现在虽然也在朝着“全生命周期管理”的方向靠,也有需求管理、错误跟踪这些模块,但是走的路数和QC不太一样(设计思路不太一样,Jira走的是敏捷&项目管理模式),而且对测试需求和测试用例没有提供直接的方式进行管理(可以和别的工具集成),不好对比。当然后面还是会提及。

版权声明:本文出自 songfun 的51Testing软件测试博客:copy Bookmark http://www.51testing.com/?songfun

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

相关文章:

让Quality Center走下神坛--测试管理工具大PK(中)

 1、莫名其妙的架构设计。

  前面提到过TestDirector的架构设计,完全走轻快的路子,B/S架构,基于Windows 2000平台,安装IIS4.0即可,数据库可以是Access/Sybase/SQL Server6.5,7.0,2000/Oracle7,8,9这些,内存只需要128M,CPU只要PentiumⅡ足矣。

  但是到了QC的时候,莫名其妙的变成了Java EE架构,号称可以安装在Windows、Linux、Solaris等系统上,Web服务器可以是Apache、IIS,应用服务器可以是JBOSS、WebLogic、WebSphere,一个比一个复杂,一个比一个强大,……,架构师对外宣称QC可以更好的支持企业级用户,支持高并发……

  到了QC 11.5(ALM 11.5)的时候,官方的建议配置变成了Windows 2008 sp2 64bit + JBOSS 5.1 + SQLServer 2008 sp1,最低配置也得是Windows 2003 sp2 + (IIS 6) + JBoss 5.1 + SQL Server 2005 sp3,而硬件方面的最低配置更让人咂舌——最低内存8 GB!硬盘最少8GB!而且连客户端的内存最低配置都必须是2GB!

  各位都明白了吗?这也是为什么越来越多的用户抛弃了HP Quality Center的原因,内存要求短短几年之间翻了62.5倍!!惊人吧!!!

  看到这里我狂汗啊!要知道,微软Windows 2000这么庞大的系统,不过动用了1700个开发,3200个测试,世界上有几个微软这种巨量级的软件研发公司?难道他们的架构师没有读过《长尾理论》?事实上,大部分的公司测试开发比本来就很低,真正考虑到实时并发的话,能做到一两百并发读写已经很好了,而且就像Infosys、Tata这样的航空母舰级的外包服务公司,也没有必要整个公司只用一个QC啊——再者说了,就算出于企业级管理的需要,这样的公司能有几家,为这些大公司定制化一个不就行了吗?真正要考虑的是广大的受众群体所在的企业规模和研发团队规模啊!兄弟,这只是一个内部研发管理系统!对内的系统决定了对性能的要求不可能像对外开放的大型系统那么高,既不是12306,也不是天猫,更不是谷歌/百度首页,设计这样的架构,我想问一句:有那必要吗?图啥呢?

  假如还觉得不够的话,那么我们对比看看现在也非常流行的TestLink——一款可以和Jira、Bugzill、Mantis集成的测试过程管理工具。它的架构非常的简单:WAMP/LAMP,也就是Windows/Linux + Apache + PHP + MySQL。因为现在有大量的一键集成安装包(如WAMP Server、XAMPP),所以安装过程极其简单方便。正是因为TestLink的便捷性,这几年使用的用户比例也在攀升,而且别忘了,它可以集成很多主流的缺陷管理工具哦!

  2、复杂繁琐的安装和登录、惊人的资源消耗。

  QC的服务器端姑且不提,看看其复杂而坑爹的客户端——其实还是架构设计的问题。

  相信很多朋友都见过下图的这个页面吧?

  假如你真的经常使用Quality Center的话,一定对这个页面再熟悉不过,相信大家都有同感,这个页面往往需要下载非常的久,运气不好的话得下载5-10分钟,而且还经常下载到最后了打不开!!这时还得检查有没有关闭UAC(User Account Control)、DEP(Data Extension Prevention)等等,这种BT的架构设计真的让人不可思议了:这明明是B/S架构的系统,为啥需要下载安装这么多ActiveX?这不是挂羊头卖狗肉,打着B/S的旗帜,行C/S之事吗?与其这么麻烦,还不如你就做成C/S算了!

  当然,它还真有客户端,而且官方推荐你使用,叫:QC Explorer。说白了,就是专门为打开QC开发的一款基于IE内核的浏览器。唉,真的无语了,放着那么多流行的JavaScript. Framework Libraries不用,偏要用ActiveX这种落伍又笨拙的东西。这还不要紧,关键是这样一来,对你的浏览器就会非常的挑剔!请看这段官方描述(针对QC客户端的浏览器要求):Microsoft Internet Explorer 7 or 8。就是说你的客户端只能用微软的IE浏览器,而且必须是IE 7或者IE 8这个版本,不能用微软的IE 6或IE 9(一定要用高版本的IE还得到jboss\server\default\deploy目录下修改20qcbin.war里的内容),不能用Chrome、Firefox,更别提什么Opera、Safari之流了。还有更让人崩溃的,就是除了浏览器之外,你的系统上还必须要安装:Microsoft .NET Framework 3.5 (SP1)、Visual C++ 2005 SP1 ATL Security Update Redistributable、Microsoft Office 2007 (SP2)等一系列东西,你说有多烦有多烦!!!

  相比之下,真的建议他们(HP QC的架构师)去学习一下Jira和Micro Focus SCTM,全部是用JavaScript类库实现,真正意义上的纯B/S架构,所以所有的浏览器都可以轻松访问,无需额外安装其他ActiveX!

  纯B/S架构带来的好处还有很多,包括友好的用户体验,以及无缝切入移动互联网手机访问),这些后面会单独列出来提及。

 这里还没说它的服务器端的安装呢!假如你曾装过Quality Center的服务器端,十有八九遇到过“数据库连接属性不正确”的问题,一般原因是数据库那边还得再做正确的配置,具体得看是SQL Server还是Oracle,各有各的招,这里就不多说了。

  总而言之一堆的问题要注意要设置好,还记得当年我写的那篇《关于"The RPC server is unavailable"的探讨及解决方案》吗?这个也是其中之一。

  再来说资源消耗。其实从上面的“最低配置要求8GB内存”大家就可以大致看出QC有多吃内存了。这么说吧,我们51Testing的讲师都最怕上QC这门课,不是因为这门课很难,而是很痛苦,每次从虚拟机里启动出来至少15分钟,中间还有很多操作也非常的卡。PS:我用的笔记本是HP ProBook 4230s,CPU是i3-2310M 2.10GHz,内存8GB,也是如此。

  3、过于简化的需求管理模块。

  QC的需求管理严格意义上不属于真正意义上“开发需求的管理”,而是指针对测试需求的管理,并且可以结合Release模块设定简单的基线,不过如果你用过CaliberRM这种专业级的需求管理工具,就会发现QC的Requirements实在是弱爆了!

  Micro Focus SCTM就不一样了,它支持项目级的需求基线,而且可以直接切进CaliberRM(这是亮点),这才是真正意义的需求全生命周期管理。

  当然假如你的SRS是word文档,QC倒也可以把开发需求导入进去,但是问题是QC的word插件非常非常难用,导入的工作量一点都不比你自己手工输入来的快(因为需要针对每一个需求项去打begin和end标记)!!所以通常我们在企业实战中只能采用折中的方式,先把SRS转为Excel文档,再通过Excel Addin导入进去,当然导入的过程也不那么轻松,具体可以参考我的《ALM(Quality Center) Excel Addin深入剖析》,链接是:

  http://wenku.baidu.com/view/04a20cee998fcc22bcd10d81.html

  4、不伦不类的test plan——关于“测试计划”和“测试用例”的混淆。

  从TD以来一直到后来的QC、ALM,Quality Center一直把test plan认为是test cases——从这里很容易看出来,设计这款工具的人是做开发出身的,不懂测试,呵呵。

  测试计划是什么?首先测试过程会分为计划、设计、实现、执行几个活动(按ISTQB的说法是测试过程分为计划和控制阶段、分析和设计阶段、实现和执行阶段、评估出口准则和报告阶段以及结束收尾阶段),分别解决“做什么”、“如何做”、“具体步骤是什么”、“发现缺陷并跟踪缺陷”、“评估测试报告”这几个问题。

  《测试计划》,是有国际性的模板的,即IEEE 829。请各位参考维基百科:http://zh.wikipedia.org/wiki/IEEE_829内容包括明确组织形式(强矩阵、平衡矩阵、弱矩阵),明确测试对象,明确测试的需求跟踪和覆盖,明确测试的“通过/失败”标准,明确测试的挂起标准和恢复条件,明确工作的任务分配,明确项目可交付物。

  然而,QC里所谓的测试计划(test plan)对于以上这些统统没有涉及,实质上却是编写测试用例的模块,你可以看到用例的目录规划、用例的名称、用例的步骤,还可以看到用例的类型(是手工测试还是自动化测试),……,总而言之,这就是Test Cases。

  而它的Release模块倒可以理解为粗略的测试计划模块,只是太粗糙了点儿。

  真正做到了可以沿着IEEE 829的样板编写测试计划的工具目前还没有,不过IBM RQM算是比较接近的,它们可定义做到的是定义测试目标,定义过程,定义每次迭代的进度并对重要的milestone跟踪,可以估计工作量,可以列出测试环境,定义开始和结束的标准,……,总体来说还算不错。

  还有就是我们51Testing的TP(Test Platform),也有独立的测试计划管理模块,可以建立多级测试计划,也包含了任务分配、工作量估计、风险管理、测试环境管理和分配等,也能通过度量监控测试的执行进度,质量状况。

  5、华而不实的Business Components。

  QC中有个HP自己鼓吹的“业务驱动测试”的概念,叫:Business Components。核心理念是:BPT(Business Process Testing),业务流程测试。

  干嘛用呢?简单的说,就是让SME(主题事件专家,也就是“业务专家”)可以借助自身对业务的熟悉通过对系统的熟练操作,让这个Business Components把所有操作记录下来,生成一个自动化脚本,然后通过QTP进行回归测试(只能通过QTP)。实际上如果大家对QTP的Keyword View比较熟悉的话,就能明白是怎么回事了。HP认定做测试的人主要分为两类:一类熟悉测试技术(包括精通编程、数据库,但对业务不甚精熟),一类则熟悉业务(但可能是编程白痴),这两类人都有测试的盲点,通过这个业务设计让两类截然不同的人得以协作。很美好吧?其实也有一点儿TDD的味道(沾边)。

  SCTM也有个类似的东西叫workbench,基于StoryBoard技术,也不需要编程(Visual Test)。

  但事实上,很少有公司可以做到清晰的划分这些,往往做测试的必须懂业务,即使你是自动化测试工程师,也得了解业务。所以,……,就黄了,这个组件根本没有办法大面积推广开,在内部被证明失败之后,HP开始转型做 Sprinter——这个东西后面会提,是个神器!不过国内还没有汉化,也几乎没人深入研究,大部分testers还没能体会到它的强大。

版权声明:本文出自 songfun 的51Testing软件测试博客:copy Bookmark http://www.51testing.com/?songfun

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

相关文章:

让Quality Center走下神坛--测试管理工具大PK(上)

让Quality Center走下神坛--测试管理工具大PK(下)

 6、测试设计分析的薄弱。

  QC把自己的架构做的很复杂很“强大”,可遗憾的是,在测试的分析设计上却非常的薄弱,可以说几乎没有——很难想象一个被假设为如此强大的公司居然会没有测试分析?这种感觉就像给一个拖拉机安上了波音747的引擎。

  关于测试分析:其实业内的大部分测试管理工具往往都是跳过分析这一环直接从测试需求跳到了测试用例设计,而实际上对测试需求分解出来的东西直接进行用例设计的话会造成分解粒度过于粗糙,导致大量测试分析细化的过程无法以可视化的方式体现出来,从而造成漏测。假如你的系统比较复杂,这个过程应该是:从测试需求分解出测试项,测试项分解出测试子项,然后在测试子项中设计测试用例。

  TP在这块上做的很不错,可以进行继承性分析、质量模型分析(ISO9126 Model六大特性27子特性)、功能交互分析、用户场景分析等专业性的分析,通过这些系统性的分析我们可以得到高质量的测试项。而且TP把我们测试人员对分析思考的过程记录和管理起来,这样就实现了对分析过程的评审了。

  所有做测试的人都知道V&V,即Test = Verification + Validation。“测试”本质上就是验证和确认,验证过程的正确性,确认结果的正确性。而TP真正意义上实现了既确认结果,又验证过程。但很遗憾,QC不具备这个功能。

  而测试设计这块,也就是我们通常提到的等价类划分、边界值分析、判定表、因果图、状态迁移法、场景法(流程分析法)、正交实验法、输出域分析、错误猜测法等各种测试用例设计方法。它们同样在QC中也无法体现,这就意味着我们没有办法评审我们测试设计的过程!而漏了这个过程的评审,那么漏测也是在所难免了!比如我们只考虑了边界值,忽略了两两组合的分析(通过判定表或正交实验),虽然针对需求的覆盖可以达到100%了,但是仍然忽略了一些情况的考虑,那么QC这时是根本“察觉”不出来的。

  目前市面上的所有测试管理工具中,普遍缺少这块的功能实现,究其原因,我还是认为这些软件的设计者不是一个经验丰富的测试专家(应该只是做开发出身的),所以忽略了这些核心模块的功能实现。

  目前做到这一点的,只有51Testing的Test Platform这款工具——这里我得自卖自夸一下,周峰(90年代就已经通过国家系统分析员认证),对测试的理解确实是高瞻远瞩,要比很多人都深入、全面。而他所有的考虑都融入到了TP里面,我也衷心希望同行可以借鉴,把这些功能添加到各自的工具模块中,毕竟百花齐放、百家争鸣才是最应该看到的景象。

  7、忽略白盒测试,缺少代码覆盖率分析。

  所有熟知测试过程V模型的人都知道,测试活动分为:单元测试、集成测试、系统测试,验收测试,分别验证软件的内部质量、外部质量、使用质量。

  然而QC似乎并不关心这些。因为QC只实现了测试用例对需求的覆盖关联,却没有办法进行代码级别的覆盖率分析。给人感觉QC更多关注的其实是黑盒层面的测试。

  而SCTM则进行全面的关注,它也可以关联需求,还可以收集Java/.Net的代码覆盖率,而且可以提供比较报告,让SQA随时掌握代码覆盖率的趋势变化,了解测试用例的充分程度。

  这样可以更好的帮助项目成员一起来使用这个测试管理平台。

  顺便说一下,SCTM在单元测试这块应该是所有测试管理工具中做的最好的,可以支持Fitness、JUnit、NUnit、.Net Explorer、Process Executor、Windows Scripting等主流的单元测试/集成测试框架,而QC根本不支持,除非你做二次开发。差的远了!

  8、最关键的缺陷分析和Report功能。

  经常有朋友问我QC导出报告的问题,比如怎么把测试用例或缺陷以Excel的方式导出。其实QC的报告导出功能也很弱,特别是在Excel上,而且word的导出一直有Bug,基本上不可定制的,特别是你如果针对前面的Test Plan等模块做过定制化或二次开发,在导出的时候会有各种问题。

  后来QC整合了Dashboard(其实就是展现各种数据指标的仪表盘),但是这意味着你必须是Enterprise Edition(收费更高昂),而且即使整合了Dashboard,只是在展示上更华丽了,导出的问题还是没解决!而其实“测试报告”才是关键,只要做过项目的兄弟都知道,甲方需要的是漂亮的word报告!

  而SCTM的报告功能却非常的丰富,它提供了一个专门的报告引擎BIRT,可以定制各种报告,也可以支持项目群报告、Dashboard,而且最重要的是:它们都是免费的!

  再说度量和缺陷分析,这更是QC的一大软肋!严格意义上来说,QC的那些数据分析离真正的缺陷分析还非常的远!可以说几乎就没有。而51Testing TP在这块上做的非常出众,提供了专业的ODC分析、Gompertz分析、Rayleigh分析、四象限分析、DRE/DRM等工程分析方法,可以对缺陷进行单、多维度分析、进行缺陷趋势分析、对缺陷进行预测等,为测试工作质量评估、测试退出判断、遗留缺陷预测提供支撑。51Testing软件测试网9oz;R+nG(t2w:V]5LL"m

  一句话:QC弱爆了,TP“碉堡了”!!

  9、敏捷哪儿去了?

  敏捷时代,不能不提敏捷。

  “个体与交互胜过过程与工具”——这是著名的《敏捷宣言》的第一条价值观。不过,有意思的是,工具却成了今天大多数敏捷团队的重要组成部分。

  做过敏捷的人应该听说过Rally,这家公司是做敏捷项目生命周期管理工具的。其实还有很多,比如VersionOne、Mingle、DotProject、Redmine等。。。

  很遗憾,QC不提供这些工具的集成工具,也没有技术支持!

  这块做的最好的应该是Micro Focus SCTM,它提供了配套的集成工具,而且还提供技术支持,因为Micro Focus和这些软件厂商本身就是战略伙伴。

  当然,Atlassian Jira也是具有敏捷基因的工具,它有个GreenHopper插件,可以通过快速创建User Story来建立一个产品Backlog,可以在整个发布过程中管理Backlog、Sprint,并且监控项目的进度。此外,Jira还有一个名为Bonfire的插件,做敏捷测试管理的,不过我还没有使用过,不敢做太多评论。


 10、移动端的访问。

  十年前,我就在想这件事情。作为团队的项目经理、测试经理,或公司的老板,日理万机,每天就为了了解项目状况,得扛着笔记本电脑“飞来飞去”,看上去实在大煞风景。更何况,在讲究“碎片化时间利用”的今天,我们在公交上、地铁里,掏出手机访问一下我们的测试管理系统,了解下“张三用例写到哪里了,李四缺陷修复了没有”岂不更加方便、高效?

  要说敏捷,我觉得这也算一种“敏捷”。

  QC有移动端APP吗?或是能通过手机浏览器访问吗?道听途说过,却从未曾见。个人觉得很不靠谱,为什么?别忘了前面第2点提到的QC客户端对Windows平台和IE浏览器的依赖,假如我们用的是iPhone、iPad,或者Android设备,那怎么可能访问呢?

  相比之下,Jira和SCTM就具有这样的先天优势了。为什么呢?别忘了它们都是用JavaScript类库实现的,不需要安装ActiveX,是真正的纯B/S——自然可以通过手机浏览器访问了!

  事实上,Jira确实有移动端的APP,我刚特地去App Store上搜索了一下,呵呵,见下:

  而且,连Bugzilla也有移动端的APP了!

  个人觉得,移动互联网时代,这些测试管理工具也都将面临着新一轮的洗牌,HTML5的支持、CSS3的支持、大量的JavaScript类库……QC还能撑多久,我们拭目以待!

  11、用户体验哪儿去了?

  其实TD当初的用户体验还真的挺好的,但是QC的用户体验,唉,不提也罢。

  庞大的身躯、臃肿的组件、极差的兼容性、缓慢的运行速度、滞后的设计理念、封闭性……其实前面都已经提到过了。

  用户体验的精髓在于“Don’t make me think”,而QC却是“make me think hard”。

  12、唯一的亮点:Sprinter,探索性测试(Exploratory Testing)和兼容性测试的头号利器!

  QC唯一的亮点应该就是从QC 11.0开始推出了Sprinter——一个半自动化测试的集成工具。

  它既不是QTP,也不是Selenium,而是可以把你手工测试的过程直接记录下来,进行“自动化回归”,比如屏幕捕捉(截图、截视频)、屏幕记录(截图以后可以在上面做标记)、自动数据注入(Data Injection),可以在执行用例的同时直接生成缺陷报告,非常适合做探索式测试。还可以做镜像测试,也就是同时进行多环境的配置测试,是兼容性测试的利器!我亲见过它的强大,确实“亮瞎了眼”!我推荐大家去体验一把,这种针对手工测试的自动化一点都不需要你有编程基础,用起来又快又方便,真的是“谁用谁知道”!

  只是很可惜,HP没有足够的重视Sprinter,没有把这张王牌打好。因为准确的说,QC是用不了Sprinter的,ALM才能支持Sprinter,这意味这你必须先升级到它们的ALM(QC 11)。这成了它的第十二宗罪!

  13、离线模式和版本管理。

  随着GIT的兴起,离线开发和离线Repository将成为一种新兴的需求和开发模式。

  我们51Testing出去和用户推TP的时候,就遇到有用户提出这样的需求(而我们的TP已经实现了离线模式)。但事实上,QC并没有离线模式,必须始终保持QC Connection,而且消耗你的License!

  除了51Testing的TP,Micro Focus SCTM也支持离线模式(通过MTC来支持),也可以在你工作完成后提交测试结果。

  好吧,即使我们不谈离线模式,就说版本管理,QC仍然在同类测试管理工具中处于下游。QC虽然提供了版本管理的功能,但是非常弱,易用性也极差。比如你编写了测试用例,经过评审之后修改了用例,过几天删除了,过几天又想恢复……那么这些通过QC实现是几乎不可能的。

  在版本管理这块,SCTM(Silk Central Test Manager)就不一样了,它可以支持测试用例的版本化,还可以指定当前测试项目测试用例的活动版本!是不是很强大?!

  14、相形见绌的扩展性。

  QC几乎没有任何扩展性!虽然它有一个Add-in Pages,但是基本都没有和业界主流工具集成,上面可以下载的都是诸如QTP Addin、Excel Addin这种东西,实在不值一提。

  扩展性这块,Jira很不错,不过最强的还是SCTM,还记得前面发过的文章吗?——《你见过的这么强大的开箱即用的测试管理工具吗?》

  好吧,这里再次描述一次:SCTM号称业界最开放的测试管理平台,需求部分支持CaliberRM、DOORS、RequisitePro、Word,变更管理部分支持StarTeam、Subversion(SVN)、VSS、CVS、PVCS、VSTS,缺陷管理部分支持Atlassian Jira、Bugzilla、IBM ClearQuest、Microsoft VSTS、StarTeam,自动化测试这块支持JUnit、NUnit、Fitness、TestPartner、SilkTest、SilkPerformer、VMWare Lab Manager……据说现在还在增加扩展……不得不赞美一句,牛B!

  OK,至此,《让Quality Center走下神坛》已经全部打完收工!

版权声明:本文出自 songfun 的51Testing软件测试博客:copy Bookmark http://www.51testing.com/?songfun

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

相关文章:

让Quality Center走下神坛--测试管理工具大PK(上)

让Quality Center走下神坛--测试管理工具大PK(中)



posted @ 2013-07-25 10:09 顺其自然EVO 阅读(23613) | 评论 (2)编辑 收藏

VPS简单性能测试命令

  很多同学,都跟赵容一样,盲目的买进一些VPS,买到了也基本没有测试下VPS的性能,所以,今天我就把几个简单的VPS性能测试(也可以说是查看)命令发出来,大家参考下(新手参考,老鸟请勿见笑)

  1.top

  Top命令显示了实际CPU使用情况,默认情况下,它显示了服务器上占用CPU的任务信息并且每5秒钟刷新一次。你可以通过多种方式分类它们,包括PID、时间和内存使用情况。

  第一行的load average即为系统负载,就是说整个VPS资源占用情况,如果正常建站,一般很少有超过5的时候;

  第三行的,这个是CPU占用资源。还有后面的??%wa这个是硬盘状态,正常情况下CPU最好不要超过30%占用.wa指数长期30%以上,基本上硬盘就是不给力状态。

  第四行是内存,总内存,已使用内存,空闲内存。我这里是W2的VPS,内存为1GB,大家可以参考下。

  2.查看CPU,硬盘和内存信息

  命令:cat /proc/cpuinfo(CPU信息)

  cat /proc/meminfo(内存信息)

  df –lh(查看硬盘信息)

  这些,都只是简单的查看VPS的参数,我就不截图了。

  3.下载测试

  命令:wget http://cachefly.cachefly.net/100mb.test

  图中有下载速率,我这个是W2的,下载超级不给力,大致上,如果你是100MB端口的话,应该7-10m/s,10MB端口的话,也有1m/s左右了。

 4.磁盘I/O测试

  命令:dd if=/dev/zero of=test bs=64k count=16k oflag=dsync

  这个命令,是测试磁盘I/O性能的,图中有磁盘写入速率,可以作为参考。

  或者使用此命令:dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

  【小提示】其实正常做站,这个DD值不必过于纠结,只要不是低得离谱都没有很大的差异,赵容本人也在DD值不到1M/s的VPS做了很久的站。

  SSD磁盘用这个命令:hdparm -t /dev/xvda

  经过上面两步测试,磁盘多出了2个文件:100mb.test,test,我们用命令删除它们。

  rm 100mb.test                       rm test

  5.UBI跑分综合性能测试

  命令:wget http://www.CTOHome.com/linux-vps-pack/unixbench.sh;sh./unixbench.sh;

  这个命令运行的时间比较久,因为好多VPS都是赵容借来半小时看看简单性能的,所以一般没有做这项测试。这个测试完成后的综合分数也可以看出一个VPS的性能:一般高于400分就算正常水准,如果高于1000的话,就是非常给力。

  6.其他测试命令

  命令:iostat  (磁盘和内存使用率)

  命令:Vmstat  (进程、内存、页面I/O块和CPU等信息的监控)


posted @ 2013-07-18 10:57 顺其自然EVO 阅读(2676) | 评论 (1)编辑 收藏

精通软件性能测试与LoadRunner最佳实战 连载十五

     摘要: 14.3  前端性能测试自动化介绍  随着功能测试的发展与壮大,功能自动化测试已经越来越广泛地应用于现行软件系统的测试,那么性能测试方面是否能给实现自动化的控制呢?答案是肯定的,随着行业的发展,性能测试的研究也日趋深入,前面我们向大家介绍了如何自动化控制场景的运行,当然这只是性能测试自动化的冰山一角,其目的也是拓展大家性能测试方面的思路。  本节作者将向大家介绍前端性能测试的自动化控制,...  阅读全文

posted @ 2013-07-18 10:55 顺其自然EVO 阅读(1748) | 评论 (0)编辑 收藏

Java菜鸟学习笔记(2)---Ubuntu JDK环境变量配置与常见问题

一.官网下载方法

  1.1 官网下载JDKDK

  官方下载地址:http://www.Oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

  找到对应系统的下载

  1.2 版本区别

  这里简单地阐述一下rpm、tar.gz的区别。

  1.2.1 rpm格式的软件包适用于基于Red Hat发行版的系统,如Red Hat Linux、SUSE、Fedora. 类似地,

  1.2.2 deb格式的软件包则是适用于基于Debian发行版的系统,如Debian、Ubuntu、Mint.

  1.2.3 tar.gz格式只是一个压缩包,里面一般是源码,因此只要使用tar命令或解压软件解压到相应路径就可以了。如果使用的是Ubuntu amd64,故选择jdk-7u11-linux-x64.tar.gz,下载后解压到了/usr/lib/java/目录下(需要root权限)。

  1.3 JDK变量配置

  JDK环境变量配置如下:

  执行命令sudo gedit /etc/environment,在打开的编辑器中PATH变量上面两行新建两个变量,

JAVA_HOME="/usr/lib/java/jdk1.7.0_11"
CLASSPATH=".:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar"

  在PATH中添加$JAVA_HOME/bin,注意与PATH原有的值之间用英文冒号:分隔,切勿把原来的值删除。

  然后保存关闭,使用命令source /etc/envrionment更新。

  Ubuntu系统默认安装并使用OpenJDK(usr/lib/jvm/),因此需要手动修改系统默认的JDK,

  sudo update-alternatives --install /usr/bin/javac javac /usr/lib/java/jdk1.7.0_11/bin/javac 300

  sudo update-alternatives --install /usr/bin/java java /usr/lib/java/jdk1.7.0_11/bin/java 300

  sudo update-alternatives --config javac,再选择相应的Priority 300

  sudo update-alternatives --config java,再选择相应的Priority 300

  至此配置完成,输入java -version、javac或java检查是否配置成功。

  本文基于http://www.linuxidc.com/Linux/2013-01/78221.htm修改而成如需要原版请点击链接前往

  二.apt-ge方法

  2.1 在控制台下输   apt-cache search jdk

  之后在查看版本 看中想安装的版本

  然后在控制台输入 sudo apt-get install xxxx(xxxx为jdk版本)

  然后等待安装完毕即可

  三.遇到问题

  3.1 Ubuntu怎么解压 tar.gz ?

  2.1.2参考了 Ubuntu解压缩zip,tar,tar.gz,tar.bz2这篇文章,各个格式相应的压缩解压命令如下

  ZIP

  zip可能是目前使用得最多的文档压缩格式。

  优点跨平台:比如Linux, Windows以及Mac OS

  缺点:压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。

  我们可以使用下列的命令压缩一个目录:

  # zip -r archive_name.zip directory_to_compress

  下面是如果解压一个zip文档:

  # unzip archive_name.zip

 TAR

  Tar是在Linux中使用得非常广泛的文档打包格式。

  优点:消耗非常少的CPU以及时间去打包文件

  缺点:他仅仅只是一个打包工具,并不负责压缩。

  如何打包一个目录:

  # tar -cvf archive_name.tar directory_to_compress

  如何解包:

  # tar -xvf archive_name.tar.gz

  上面这个解包命令将会将文档解开在当前目录下面。

  也可以用这个命令来捏住解包的路径:

  # tar -xvf archive_name.tar -C /tmp/extract_here/

  TAR.GZ

  这种格式是我使用得最多的压缩格式。java的jdk有用格式本压缩

  优点:压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。

  使用下面这种格式去压缩一个目录:

  # tar -zcvf archive_name.tar.gz directory_to_compress

  解压缩:

  # tar -zxvf archive_name.tar.gz

  上面这个解包命令将会将文档解开在当前目录下面。

  也可以用这个命令来捏住解包的路径:

  # tar -zxvf archive_name.tar.gz -C /tmp/extract_here/

  TAR.BZ2

  这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。

  这个就是你如何使用tar.bz2进行压缩。

  # tar -jcvf archive_name.tar.bz2 directory_to_compress

  上面这个解包命令将会将文档解开在当前目录下面。

  也可以用这个命令来捏住解包的路径:

  # tar -jxvf archive_name.tar.bz2 -C /tmp/extract_here/

  3.2 如何把解压好的文件放到 /usr/lib/java/ 目录下?

  1.ubuntu 终端下获取root

  sudo -i

  2.创建文件夹(usr下需要权限)

  sudo mkdir /usr/lib/java

  3.把文件移动到usr文件中(权限)

  sudo mv /home/h/java/jdk1.7.0_25 /usr/lib/java

  把/home/h/java/j下 的jdk文件夹  移动到usr/lib/java文件

  4.copy完毕后进行JDK环境配置

相关文章:

Java菜鸟学习笔记(1)--Windows JDK环境变量配置与常见问题

posted @ 2013-07-18 10:39 顺其自然EVO 阅读(1420) | 评论 (0)编辑 收藏

学习使用Jmeter做压力测试(一)

package d706;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

/*
 * 使用JMeter测试mysql数据库性能,插入数据的程序。
 * 本程序将在可装入表中插入 10,000条记录。然后编译并执行这段代码,
 * 用测试数据填充可装入数据表。
 *
 * 建表语句:create table TEST_DB(id int auto_increment primary key, name varchar(20), sex char(1) );  
 *
 * 表TEST_DB 增加列test: alter table TEST_DB add(sex char(10));
 * 表TEST_DB 修改列test: alter table TEST_DB modify sex char(20) not null;
 * 表TEST_DB 删除列test: alter table TEST_DB drop column sex;
 *
 */
public class Test_DB_Insert {
 
 public static void main(String[] args){
  int numOfTestRecords;                  // 插入数据量;
  Connection con = null;                 // 连接数据库;
  PreparedStatement statement = null;    // 获取数据库操作对象;
  
    try {
     //注册驱动;
     Class.forName("com.mysql.jdbc.Driver");
     //连接数据库的信息;
     String dbName = "test";
     String url = "jdbc:mysql://127.0.0.1:3306/" + dbName;
     String userName = "root";
     String pwd = "root";
     
     //获取数据库连接;
     con = DriverManager.getConnection(url,userName, pwd);
     
     con.setAutoCommit(false);  //关闭事务自动提交
     
      //记录执行时间
      SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS"); 
      TimeZone t = sdf.getTimeZone(); 
      t.setRawOffset(0); 
      sdf.setTimeZone(t); 
      Long startTime = System.currentTimeMillis(); 
     
     //创建数据库操作对象;
     statement = con.prepareStatement("INSERT INTO TEST_DB(name,sex) VALUES(?,?)");
       
     numOfTestRecords = 100; //插入的测试数据量;
     
      for(int i = 0; i<numOfTestRecords; i++) {  //循环
       statement.setString(1,"DBTest-" + i);
       statement.setString(2,"" + i%2);  //0表示男;1表示女.
       statement.addBatch();  // 把一个SQL命令加入命令列表 
       //statement.executeUpdate(); //执行SQL;
      }
     
      statement.executeBatch(); //执行批量更新
      con.commit();//语句执行完毕,提交事务
     
      int[] ref = statement.executeBatch();              
      //if(ref[numOfTestRecords-1] == 0){System.out.println("插入数据操作完成.");} //
      System.out.println("插入数据操作完成.");
      Long endTime = System.currentTimeMillis(); 
         System.out.println("用时:" + sdf.format(new Date(endTime - startTime))); //
     
    }catch(Exception e) {
       System.out.println("An error has occurred: " + e.toString());
       e.printStackTrace();
       }finally{
        
        if(statement != null){ //关闭数据库操作对象
         try{
          statement.close();
         }catch(SQLException se){
          se.printStackTrace();
         }
        }

        if(con != null){  //关闭数据库连接
         try{
          if(con.isClosed()){con.close();}  //
         }catch(SQLException se){
          se.printStackTrace();
         }
        }
       }      
      
 }
}

posted @ 2013-07-17 10:49 顺其自然EVO 阅读(407) | 评论 (0)编辑 收藏

单元测试重要意义及方法介绍

 软件项目开发中,有些开发人员对单元测试的重视不够,可能有几种原因:

  一、开发人员主观原因,认为“测试主要是测试人员的事情,我主要负责代码实现,功能实现就可以了,测试不是我的重要工作”,重代码轻测试;

  二、环境客观原因,如由于项目进度的迫切要求和压力,使开发人员也不得不快速编码实现作为重要任务,而来不及或忽视了测试;

  三、单元测试方法、工具单一,或者成本太高,没有方便支持单元测试的工具,依靠简单编写测试方法、用例,花费额外多余的时间,有些测试用例用完可能就丢弃不用了,得不偿失;

  四、一些编程高手编程经验丰富,不需要单元测试就能满足要求。

  这些对单元测试的片面认识,可能都会造成项目质量成果的不同程度的危害。从项目整体生命周期看,可能在项目早期能够快速实现软件功能需求,提高开发进度,但可能存在潜在的bug,bug量可能会很多,或者可能在送交正式测试阶段都难以发现,有些可能延迟到运维期才发现,修改不当会使代码变得更加膨胀臃肿,难以维护,使修改维护成本大大增加了,可维护性变得差,反而”欲速则不达“,整体成本还是很高。与其如此,不如早期未雨绸缪,“bug发现越早,成本越低”,若在编码早期进行更多的单元测试,即将bug隐患消除在早期,成本就大大降低了。所以,对项目质量、成本都造成直接或间接的危害后果,我们要重视单元测试。

  测试是保证项目质量的一个重要手段。一般测试可分为单元测试、系统测试、集成测试。项目开发编码实现后,一般要经过项目组内部测试,测试通过后,将项目产品交付给测试人员送测。是在项目开发中的一项测试工作,一般由开发人员进行一段,自行测试,做完编码开发后,提交给测试人员完在项目开发中

  单元测试能带来哪些益处?

  1.方便分析学习源代码。把单元测试可以作为分析、学习编码的工具,编码不仅是原创开发人员编写的,而且是需要给人阅读,共享给后续开发人员进行维护修改的,所以学习理解原创人员代码,对于正确维护修改意义很大。可以通过单元测试,对自己不理解的代码部分进行分析、调试,很有帮助。

  2.方便跟踪测试源代码。单元测试用例,可以作为指导后续开发人员理解编码的工具,有许多开发人员抱怨前期开发人员遗留代码缺少注释,可理解性差,自己又没有有效方法切入修改代码,因为如果在没有理解别人代码的时候,贸然修改或者注释别人的代码,可能会更增加代码的复杂度、难理解性。单元测试用例则与源代码是分开管理的,白盒测试,可以针对源代码的方法进行debug跟踪测试,并可以根据自己测试后的理解,写出自己的理解注释,而不影响源代码。

如何能有效运用单元测试工具提高开发效率?

  ·功能概述

  主要采用Junit4。推荐采用注解方式测试。

  ·本组件所在项目位置

  各项目源码的unittest包下,测试类与相应的目标类的包目录相同。

  ·本组件主要涉及的元件

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:META-INF/application-*.xml"})
public class WarnRuleParserTest {
@Test
public void testGetWarnRule4Cpu() {//cpu
WarnRuleValue warnRuleValue=WarnRuleParser.getWarnRule4Cpu();
System.out.println( JSONObject.fromObject(warnRuleValue).toString());
}


posted @ 2013-07-17 10:47 顺其自然EVO 阅读(201) | 评论 (0)编辑 收藏

主流需求管理工具比较(Telelogic Doors | Requistie Pro | 青铜器RDM)

  本人从网上收集整理的几个需求管理工具 - 项目管理

  需求是研发团队工作的起点,很多研发团队的开发过程混乱的源头都在于需求管理没有做好。这里是本人收集整理的几个需求管理系统,希望对大家有点帮助。

  RationalRequisitePro

  Rational RequisitePro是一个强大、易用、集成的需求管理产品。而通过与Rational系列软件产品的广泛集成,大大扩展了RequisitePro及其他产品的功能,给软件工程生命周期内的各个阶段都提供了强大、方便的信息查询、跟踪、管理功能。从而能够促进更好的团队沟通、帮助管理变更和评估变更的影响,帮助验证所有的规划需求被交付物所满足、降低项目风险。

  IBM RationalDOORS

  IBM Rational DOORS前身是大名鼎鼎的TelelogicDOORS,被IBM收购后更名为IBM Rational DOORS。DOORS

  是最老牌的企业需求管理套件,通过使用DOORS/ERS,可以帮助企业更有效地进行沟通并加强协作与验证,从而降低失败的风险。通过对整个组织实施多种需求管理的方法,可以使项目的管理更加透明。它可以使企业跨越地域与组织的边界来按国际化的方式运行。

  青铜器RDM

  青铜器RDM是IPD+CMMI+Scrum一体化研发管理解决方案,针对需求管理,涵盖需求的全生命周期管理,从市场客户需求收集(创意管理)、产品路线图(Roadmap)定义、产品特性需求、产品设计需求与规格、项目开发Build划分(迭代划分)、测试用例库、测试计划、测试执行、缺陷跟踪、全方位的需求跟踪矩阵RTM;同时实现Scrum开发模式,基于项目需求直接生成项目任务,实现基于需求和缺陷的迭代开发模式;全面实现了IPD、CMMI、Scrum业界主流研发管理框架的需求管理要求。

    

   


字体:        | 上一篇 下一篇 | 打印  | 我要投稿 

 

比较内容

Telelogic Doors

IBM Rational RequisitePro

青铜器RDM

结论

项目级别的比较

(1)Doors 将所有的与需求相关的数据均存放在服务器上的 doors 数据库(不是商业数据库)中。

(2)一个 DOORS Database 能够同时支持许多个不同的项目开发,从而使得新的项目能够复用和共享过去的文件和信息。不同项目(文件)之间的追踪关系可以跨项目建立。

(1)ReqPro 将需求的数据存放在数据库中,而把与需求相关的上下文信息存放在 Word 文档中。

(2)一个 Database 只能支持一个项目的开发 , 无法支持对过去文件和信息的复用和共享。不同项目之间无法建立联系。

(1)RDM所有项目的需求统一保存在一个Database,该数据库可以是Oracle、Sql、Mysql任何商用数据库

(2)不同项目之间的需求可以相互关联、共享;同时支持产品标准化需求库,从而支持平台化产品开发模式,可以基于产品标准需求库构建项目,实现具体客户的个性化。

RDM、Doors 占优

(1) Doors 中的项目显然是从企业的级别考虑,任何一个用户,只要有权限,就可以访问企业中的任何一个项目的需求数据。

 (2)RDM需求集中保存,便于统一维护,跨项目共享也更方便,同时产品通用需求库概念,支持平台化开发模式,兼顾平台化和项目个性化要求。

多人同时访问

(1)一个时刻,只能有一个人修改一个 module (类似于 requisitepro 中的一个 word 文档),其他人只读方式打开。

DOORS 有访问方式:独占、共享和只读。当某人独占打开某个 module 时,其他人只能只读访问。但 DOORS 提供共享方式,特别是可以允许不同的人同时修改同一文档的不同部分,比如 A 用户负责修改第一章, B 用户负责修改第二章。这是 tool-setup for sharing 的功能。

(1)一个时刻,只能有一个人修改一个 word 文档。其他人只读方式打开。

(1)RDM支持需求检入/检出,版本化操作;同时不同版本之间的差异化能自动对比分析

(2)RDM的需求可以灵活根据需求类型、需求状态划分权限,支持多人并发对需求进行编辑、维护。

RDM占优,ReqPro、Doors两者相同。

需求创建和编辑

在 doors 中创建和编辑(与 word 的使用类似。)创建方法简单直观。

在 word 文档中创建和编辑,创建方法和理解上略有困难。在 requistitepro 中创建的需求放在数据库中,不能被文档使用

RDM支持在线创建编辑需求 和 基于Excel编辑需求,然后集中导入RDM 两种模式。

在线编辑支持富文本、直接插入图片等个性化手段

各有优劣, ReqPro、RDM略占优

(1) doors 中创建和使用简单,不需要 word 。但是,它毕竟没有 word 的编辑功能强大。

(2)RDM支持富文本、直接插入图片方式,能使需求展现的更直观

需求修改历程的纪录和管理

(1)可以针对 module (类似于 requisitepro 中的一个 word 文档)打基线。可以比较基线之间的不同点。基线可以作为创建新的 moduel 的模版。

(2)需求项的修改有历史记录,并且可以回滚到任何一个历史点的内容。

(3)可以和主流的配置管理工具集成使用;

(1)需求项的修改有历史记录。

(2)可以和 clearcase 工具集成使用 , 完成基线功能,但是只是形成版本,没有比较功能。

(1)RDM支持需求检入/检出,版本化记录,同时一个页面展现版本间差异

(2)RDM本身提供变更管理流程,并且流程可配置,需求和流程的集成性高

(3)RDM同时提供变更关联提醒功能,需求变更后自动通知子需求、关联需求、对应的测试用例。

Doors、RDM占优

(1)优势明显,而且该功能比较有用。

 (2)RDM的版本间差异对比、变更关联通知非常有价值。

对需求变更的管理

Doors 本身具备变更管理系统,即变更的提交,评审,应用,并因此可以给指定的用户分配不同的角色(如提交者,审阅者,应用者);内容讨论能力较弱 

可以和主流的变更管理工具集成使用;

DOORS 可以和 ClearQuest 集成,可以使用 CQ 的功能扩展变更流程,使需求项和变更请求紧密相关

RequisitePro 有针对需求项的讨论功能。类似于 bbs 中的主题讨论。使用比较方便。

讨论没有区分权限,但是有明显的讨论人和讨论时间。 

与 clearquest 工具集成;

1)RDM支持需求检入/检出,版本化记录,同时一个页面展现版本间差异

(2)RDM本身提供变更管理流程,并且流程可配置,需求和流程的集成性高

(3)RDM同时提供变更关联提醒功能,需求变更后自动通知子需求、关联需求、对应的测试用例。

各有优劣, RDM 略占优

多个需求项及追踪关系的显示

Doors 能够在一个专门的界面上给用户一次显示一个 module 文件中的所有需求项和相互之间的追踪关系 ( 即支持 in 和 out 的需求追踪 ) ,从而支持用户同时观看所有相互依赖的需求项。

有专用的追踪矩阵图,以二维表的形式展示需求项之间的追踪关系。

(1)针对单个需求,一个页面可以追踪到市场需求、产品需求、设计需求、物理模块、项目构建、测试用例、开发任务、测试缺陷,实现端到端追踪

(2)针对集中追踪,提供跟踪矩阵、跟踪表两种模式

RDM占优

(1)RDM跟踪更全面,涉及到测试用例、项目任务、物理模块、测试缺陷。

(2)RequisitePro 的功能强大,界面也比较复杂,使用不便,但RDM同样功能,RDM界面更清晰、明了。

可疑 link (需求变更)的通知

(1)当 link 的一方产生变更时, Doors 可以自动产生提示符通知另一方,而不需要在 link 的矩阵上查找;

(2)可以清楚地看到导致可疑 link 的需求内容变更情况

没有自动提示,必须通过追踪关系矩阵来查找,当追踪矩阵比较大时,非常费时费力;

(1)当 link 的一方产生变更时, RDM 可以自动产生提示符通知另一方,同时自动把变更的信息推给对方

(2)Link方不仅仅是需求还涵盖测试用例,通知更全面

RDM、Doors 占优

(1)RDM更优,可以灵活配置哪些属性变化才通知,同时变化信息能自动推送给link方,更易用

(2)Doors 的可疑 link 原理是通过需求内容的改变自动置 link 为可疑,比较科学。

与已有产品的集成

Clearquest 、 clearcase 、 rose

Clearquest 、 clearcase 、 rose 、 testManager 、 project2002

RDM本身就是研发一体化平台,可以使客户最大程度节约投入

Requistitepro 占优

与 word 的集成

需求的创建和修改工作完全在 doors 中完成。只是提供了导出符合格式的 word 文档。

与 word 紧密集成,需求的创建和修改工作大部分在 word 中完成。

需求的创建和修改工作在 RDM 中完成。灵活定义导出的内容和格式,可以直接导出为Word、PDF、Excel格式。

Requistitepro 、RDM占优

从现有 word 文档的导入功能

。支持,基本上是 word 文档中的一段对应 doors 中的一个需求项( object )。同时, word 中的表格、图像等 ole 对象也可以导入。

支持 Word 文档的导入,同时支持 table , picture 和 OLE object 的导入

不支持普通 word 文档的导入

不支持Word,支持Excel

Doors 占优

离线编辑功能

没有找到离线编辑的好方法。

可以使用 word 把文档下载到本地编辑(可以离开网络环境)。然后再提交到 requisitepro.

没有找到离线编辑的好方法。

Requistitepro 占优

该功能比较有用。

权限控制

Doors 具有灵活的权限控制,包括:只读,修改,创建,删除,管理等五种级别。权限控制可以针对每一个用户在每一个 database ,项目目录,文件,实施等;

权限控制的种类和级别有限。包括:只读、完全控制。权限只能针对项目 。

RDM 具有非常灵活的权限控制,包括:只读、编辑、创建、删除、管理等五种级别。同时可以基于需求字段属性配置权限

RDM 占优

数据备份和恢复

简单有效

复杂,要保证文件和数据库同时备份。可能使用 access 数据库会 …

简单方便,只需要配置数据库、服务器上的文件库目录即可

RDM、Doors 占优 

异地需求管理

(Multi-site)

Doors 提供灵活的方式实现需求异地管理的方式; Doors 强大的性能优势也保障了大型项目异地需求开发 / 管理的可能;

无异地使用模式

RDM是B/S结构,提供领会异地访问管理模式

RDM已经有众多实际案例

是否易于掌握

容易使用

较容易使用

容易使用,但前期配置有一定的工作量

Requistitepro 上手较快(因为是在 word 中编辑),想各个功能用的比较顺手需要一段时间。

Doors 大部分功能比较容易掌握。

RDM终端用户操作方便,但系统配置需要一定工作量。

 

posted @ 2013-07-17 10:43 顺其自然EVO 阅读(613) | 评论 (0)编辑 收藏

MYSQL tee的功能测试

 Mysql的tee功能是用来记录用户的操作记录的,由于对mysql进行大量的更改操作,比如删除,修改,添加等动作等等,涉及到生产环境中时候,这些操作有时候很有必要把整个操作记录下来,以便核对查找。Tee功能类似于oracle中的spool,下面对几种tee的不同保方式测试

  一、直接指定文件

  出于这种是由于之前使用spool的时候每次spool时候都会使用spool '文件路径',结束后便用spool off即可。下面是测试截图:

  初看结果,好像是正确指定了文件和路径,那么我们去这个路径是否看到这个tee.log呢,进入mysql用户根目录下的tmp目录查看,已经生成了tee.log文件,然后运行一些简单操作测试是否记录成功;

  查看tee.log文件;发现都是实时记录了所有的操作记录和结果。跟oracle有点不同的是,oracle每次都是在spool off之后才生成(应该没有记错)。关闭即用notee或者\t命令。

  二、通过启动带参数--tee

  启动使用命令:mysql -uroot -p --tee=/home/mysql/tmp/ceshi.log -S /usr/local/mysql/tmp/3306/mysql.sock登录成功后,按正常同样再测试一次操作记录

  查看ceshi.log,所有记录均实时记载。

  三、通过更改设置配置文件my.cnf

  测试环境,先kill掉mysqld服务(生产环境一般没有在my.cnf中增加该配置,这里仅仅只是用来测试)。

  关闭mysql,然后修改mysql的配置文件中的[client]选项段,添加以下内容:

  [client]

  port = 3306

  socket = /usr/local/mysql/tmp/3306/mysql.sock

  default-character-set = utf8

  tee = /home/mysql/tmp/result.log

  再次启动mysql,查看/home/mysql/tmp/下是否生成了result.log文件,一看没有,奇怪了,按理说这样的方式是正确的,在网上找了下大部分都讲到了这三点,也没有见谁说这种方式不行。会不会是版本有问题,我本机装的是32位的mysql 5.1.57版本。于是换台机器,换个64位的mysql 5.1.50版本测试下;

  一样的配置一样重新启动了mysql。测试后发现还是没有出现结果记录;

  原来写入mysql配置文件中,在不同版本中有差异,目前有一些有些版本的mysql数据库的tee功能在写入配置文件的时候不生效,但是支持终端下命令行直接操作,例如上面2个版本都是没有效果的,所以写入配置文件中并不保险。目前还不清楚原因何在,猜测也有可能是某些版本存在bug ,希望知道的不吝赐教。

posted @ 2013-07-16 10:26 顺其自然EVO 阅读(1491) | 评论 (0)编辑 收藏

仅列出标题
共394页: First 上一页 224 225 226 227 228 229 230 231 232 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜