尝试畅游于测试中^^^^^^^^^^

自动化测试有关问题

上一篇 / 下一篇  2007-07-01 22:09:56

1.自动化测试需编写自动化测试脚本,而你对自动化脚本只是略知一二,由于项目成本的限制,不可能再增加专门编写测试脚本的人员,而对这个问题你如何解决?
答:
     我的解决方案是:软件测试自动化 。在项目成本的限制不能增加专门编写测试脚本人员的这样的经济以及人力的限制条件下,我认为测试自动化是一个很好的解决方案。
     具体解决方案:利用自动化的测试支持工具。尤其是在时间、资源或成本有限的这种棘手的问题下,利用自动化的测试支持工具是一非常好的解决方法。这样的自动化的测试支持工具有很多,我们在自动化脚本只是略知一二和项目成本的限制不能再增加专门编写测试脚本的人员的情况下,我们可以选用自动化的测试支持工具来进测试自动化,这种工具只需我们进行一些简单的操作,而且对我们所做的操作可以自动生成所需的脚本。有一种这样的工具如WinRuuner,它可以确保那些复杂的企业级应用在不同环境下都能正常可靠地运行,可以对简单的操作来自动完成应用程序的功能性测试。用WinRuuner创建一个测试,只需点击鼠标和键盘,就能完成一个标准的业务操作流程,WinRunner自动记录所做的操作并生成所需的脚本代码。这样,即使计算机技术知识有限的业务用户轻松创建完整的测试。而且还可以直接修改测试脚本以满足各种复杂测试的需求。WinRunner提供这两种测试创建方式,满足测试团队中业务用户和专业技术人员的不同需求。这就十分符合我们所需的要求。


2.单元测试自动化,你打算使用哪些工具或框架?
答:
     (1)JUnit是一个开源的java测试框架,它是Xuint测试体系架构的一种实现。在JUnit单元测试框
架的设计时,设定了三个总体目标,第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个是可以利用既有的测试来编写相关的测试。而且junit是完全Free的,所以是一个既经济又强大的单元测试自动化框架。
     (2)LUnit是一个单元测试框架,用于对数据库存储过程进行回归测试。用 Java/JUnit/XML开发。
     (3)Jtest是一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbC(Design by Contract)规范开发的代码的正确性。不过价格昂贵。
     (4)Ckrunner用在J2EE环境中进行应用程序的单元测试。它不仅支持Struts actions, servlets,过滤器和标签类还包括一个JDBC和一个JMS测试框架,可以用于测试基于EJB的应用程序。
     (5)Rrogate Test framework是一个值得称赞单元测试框架,特别适合于大型,复杂Java系统的单元测试。这个框架能与JUnit,MockEJB和各种支持模拟对象(mock object )的测试工具无缝给合。这个框架基于AspectJ技术。
      总之:具体选用那种工具或框架,应该根据公司自身和具体单元测试自动化的情况来定。


3.为了能让单元测试自动化顺利实施,实施前的培训非常重要,结合你选择的工具或框架谈谈培训内容重点,及时间的安排?
答:
    1、为了能让单元测试自动化顺利实施,那么这是对单元自动化测试的培训。因此,第一应该了解“软件详细设计评审”,它包括:(1)详细设计文档的文档格式、规范。应知道如何根据根据概要设计文档完成详细设计文档,并且,保证详细设计文档可以指导后续的编码和单元测试工作;(2)伪码写作注意事项。
    第二应该掌握“单元测试理论”,它包括:测试理论基础,什么是单元测试,单元测试的基本方法,桩和驱动,单元测试策略,单元测试过程,单元测试辅助工具。
    第三应该掌握“单元测试用例设计”。
    第四应该熟知“软件单元测试相关工具”,知道怎么使用,使用方法,及使哪些工具或框架适合对哪些测试要求能更好达到更高质量的测试。这就需要对所选择的工具及框架有相当的了解和对其使用的技术。这是培训的重点。在培训中应让学员充分掌握对选择的JUnit、LUnit、Jtest、Ckrunner、Rrogate Test framework等工具的了解和使用方法,及对它们的性能、优点和适合什么样的情况下的测试等特性应十分了解,这对于具体实践工作中很重要,这将直接影响到测试的质量。
    2、培训的时间安排:培训的时间安排可以是在软件开发前进行为期一到两个月的培训时间,然后从学员中筛选优秀的学员正式应用到软件开发中来;或者在边开发期间边实地实战培训,具体参与软件开发,这样面对实践专家技术指导,如此的培训有一定的风险,但培训的效果也是比较显著和具体。

     
4.Robot和WinRunner都是自动化功能测试的利器,它们之中都各自蕴含着向自己独特的一套自动化测试框架和方法论,请综合评价这两个工具并最终选择哪个更合适会在项目上使用,说明理由。
答:
      (1)Robot
    Robot测试技术框架是基于表驱动测试思想。表驱动测试就是预先在表中定义清楚代表每一步执行操作的关键字,然后由脚本读入表中的每一行,根据关键字来执行对应的动作。Robot 可以通过环境变量设置自行启动和运行的时间,和Test manager 协作自动按照顺序运行某些脚本;再则可以通过 Insert at Cursor 方式 进行插入录制,而且Robot 不仅支持 c/s 架构的程序完全没有问题而且只需要语句call 就可以完成。
    Robot执行完整的功能测试。记录和回放遍历应用程序的脚本,以及测试在查证点处的对象状态。
    Robot执行完整的性能测试。Robot和Test Manager协作可以记录和回放脚本,这些脚本有助于断定多客户系统在不同负载情况下是否能够按照用户定义标准运行。
      在SQA Basic、VB、VU环境下创建并编辑脚本。Robot编辑器提供有色代码命令,并且在强大的集成脚本开发阶段提供键盘帮助。测试IDE下Visual Basic、Oracle Forms、Power Builder、HTML、Java开发的应用程序。甚至可测试用户界面上不可见对象。
     脚本回放阶段收集应用程序诊断信息,Robot同Rational Purify、Quantify、Pure Coverage集成,可以通过诊断工具回放脚本,在日志中察看结果。
    Robot使用面向对象记录技术:记录对象内部名称,而非屏幕坐标。若对象改变位置或者窗口文本发生变化,Robot仍然可以找到对象并回放。
    Robot提供的强大功能所搭建起来的自动化功能测试框架,能够帮助软件开发组织成功的实施自动化的功能测试。通过重用已有的静态结构和动态结构,能够有效的促进测试的重用,并且在IBM Rational Robot的支持下,可以自动的执行这些测试。 通过使用测试设计工具来生成动态配置,可以看到除测试技术框架的SQABasic脚本外,不需要再维护任何其它的脚本,降低了脚本调试、维护的工作量。并且将来的维护是基于测试设计工具来进行,也降低了自动化测试整体的维护工作量。通过使用测试设计工具来生成静态配置,能够做到根据界面的设计来进行配置,而不需要等到待测试应用完全可用,就使得及早测试成为可能。通过支持业务、技术测试人员的分工,在测试技术框架中封装自动化测试技术细节,使得业务测试人员不需要自动化测试技术的相关知识,只需要通过测试设计工具,就能够简单、直观的进行测试的设计和执行,降低了自动化测试的实施难度。
      (2)WinRunner:
    WinRunner是一种强大的企业级自动化功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。WinRunner自动记录你的操作并生成所需的脚本代码随着时间的推移,开发人员会对应用程序做进一步的修改,并需要增加另外的测试。使用WinRunner,不必对程序的每一次改动都重新创建测试。除了创建并运行测试,WinRunner还能验证数据库的数值,从而确保业务交易的准确性。
创建好测试脚本,并插入检查点和必要的添加功能后,就可以开始运行测试。运行测试时,WinRunner会自动操作应用程序,就象一个真实的用户根据业务流程执行着每一步的操作。测试运行过程中,如有网络消息窗口出现或其它意外事件出现,WinRunner也会根据预先的设定排除这些干扰。
    Winrunner是专门用于C/S和B/S架构功能测试的自动化测试工具,其强项在C/S架构功能测试上WinRunner可以创建在整个应用程序生命周期内都可以重复使用的测试,从而大大地节省时间和资源,因此可以充分利用公司的测试投资。
       (3)我选用Winrunner的理由:
    虽然Robot和WinRunner都是自动化功能测试的利器,它们之中都各自蕴含着向自己独特的一套自动化测试框架和方法论,但我认为WinRunner更合适会在项目上使用。
 如果时间或资源有限,这样的问题会很棘手。人工测试的工作量太大,还要额外的时间来培训新的测试人员等等。为了确保那些复杂的企业级应用在不同环境下都能正常可靠地运行,需要一个能简单操作的测试工具来自动完成应用程序的功能性测试。而用WinRuuner创建一个测试,只需点击鼠标和键盘,就能完成一个标准的业务操作流程,WinRunner自动记录所做的操作并生成所需的脚本代码。这样,即使计算机技术知识有限的业务用户轻松创建完整的测试。而且还可以直接修改测试脚本以满足各种复杂测试的需求。WinRunner提供这两种测试创建方式,满足测试团队中业务用户和专业技术人员的不同需求。因此我认为WinRunner更合适会在项目上使用。


4.Bug跟踪管理是一个不可忽视的环节,请你作为这个项目定义一个合理的bug跟踪流程,绘制流程图并附文字说明。
答:
     1、Bug跟踪管理系统对于一个软件开发团队的Bug管理是非常有效的,它能记录和跟踪每个出现的问题,为软件开发团队提供有效的交互平台,Bug跟踪管理系统从另一定程度上还可以提高团队效率和增强团队工作氛围。同时,作为问题记录的数据库,能积累处理问题的经验,有利于以后维护。bug跟踪系统用于帮助公司和软件开发团队跟踪工作中的Bug,管理和记录这些Bug的出现及处理过程,并为用户提供事务分配和自动通知的平台。常见的Bug跟踪工具有很多,网上很容易找到最新的,华军软件下载区就有。
     2、只是有Bug跟踪管理工具还远远不能正常完成具体的Bug跟踪管理,还需要为自己公司定义一个合理的Bug跟踪流程,绘制出Bug跟踪流程图。对于比较大型的公司或开发团队,比较倾向于自己开发符合自己需求的Bug跟踪管理系统。我的Bug跟踪流程图:

    Bug跟踪流程图如下:

 

 

 

 

 

 

 

 

 

 

4.除了上述问题,你认为还可能有哪些问题是需要考虑解决的?
答:(参考来源于网络)
     (1)自动化测试时间不充足:根据项目计划的安排,测试人员往往被安排利用自己的个人时间或者项目后期介入自动化测试。这使得自动化测试无法得到充分的时间,无法得到真正的关注。
     (2)缺乏清晰的目标:有很多好的理由去开展自动化测试工作,诸如自动化测试可以节省时间,使测试更加简单,提高测试的覆盖率,可以让测试人员保持更好的测试主动性。但是,自动化测试不可能同时满足上述的目标。不同的人员对自动化测试有不同的希望,这些希望应该提出来,否则很可能面对的是失望。
     (3)缺乏经验:尝试测试自己的程序的初级的程序员经常采用自动化自动化测试。由于缺乏经验,很难保证自动化测试的顺利开展。
     (4)更新换代频繁:测试自动化往往需要花费很多时间学习,当自动化测试更新换代频繁的时候,你就丧失了刚刚学习到的自动化测试经验。
     (5)对于绝望的反应:在测试还远没有开始的时候,问题就已经潜伏在软件中了。软件测试不过是发现了这些潜伏的问题而已。就测试本身而言,测试是一件很困难的工作。当在修改过的软件上一遍接一遍的测试时,测试人员变得疲劳起来。测试什么时候后结束?当按照计划的安排,软件应该交付的时候,测试人员的绝望变得尤其强烈。如果不需要测试,那该有多好呀!在这种环境中,自动化测试可能是个可以选择的解决方法。但是,自动化测试却未必是最好的选择,他不是一个现实的解决方法,更像是一个希望。
     (6)不愿思考软件测试:很多人发现实现产品的自动化测试比测试本身更有趣。在很多软件项目发生这样的情况,自动化工程师不参与到软件测试的具体活动中。由于测试的自动化与测试的人为割裂,导致很多自动化对软件测试并没有太大的帮助。
     (7)关注于技术:如何实现软件的自动化测试是一个很吸引人的技术问题。不过,过多的关注如何实现自动化测试,导致忽略了自动化测试方案是否符合测试需要。


相关阅读:

TAG: 培训 自动化测试脚本 单元测试工具或框架 Robot和WinRunner Bug跟踪管理

Jackei 的测试生活与人文社会读本 引用 删除 jackei   /   2007-07-03 15:16:46
感觉LZ对于自动化测试方面的理论掌握的还不够扎实,也没有在大项目中开展自动化测试的实践经验啊。上面的对于自动化测试方面的问答显得有些弱。
 

评分:0

我来说两句

日历

« 2024-04-13  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 795
  • 日志数: 1
  • 建立时间: 2007-06-27
  • 更新时间: 2007-07-01

RSS订阅

Open Toolbar