学习从手动测试转向自动化/编程的语言

时间:2010-07-26 18:31:45

标签: testing programming-languages automated-tests manual-testing

我一直在公司的软件/ IT部门担任手动测试人员和文档(测试计划等)人员。我没有很大的编程背景,但我想学习编程语言和工具。因此,我正在寻找自动化测试工具和编程语言来学习哪些也给我带来了工业优势。

需要注意的一点是:

  1. 我需要知道哪些工具是行业中最常用的工具以及与这些工具相关的语言。
  2. 我没有太多时间学习很多东西。因此,我正在寻找使用有助于学习的语言的工具,以防我想做更多的编程。
  3. 我更喜欢基于Web的应用测试,但这不是约束。
  4. 根据我的理解,你可以提供2-3种语言,但不能有一个获胜者。
  5. 我做了一些使用VBScript的QTP,但没有广泛使用VBScript。我想学习一种具有更广泛基础的语言。
  6. 即使这个问题似乎很难回答,请仍然提供您的意见和建议。
  7. 提前致谢。


    修改 我想到目前为止我已经决定我会选择:

    1. QTP
    2. 测试驱动开发方法
    3. 我只需要找出一种优秀的编程语言,它可以为程序员提供优势,适用于多种测试工具(包括Selenium)。也许是Python,Ruby或Java?

7 个答案:

答案 0 :(得分:11)

哇,这是一个相当广泛的问题。我会说,当行业向Test Driven Development(或在代码之前编写测试)模型转移时,你处于有利位置。

首先,您需要了解Unit TestingContinuous Integration和Web自动化。

我将专注于我所知道的领域(.NET,Java,Javascript,构建自动化,Selenium)

  1. 在.NET NUnit中可能是使用最广泛的单元测试框架。它是java世界中JUnit的端口(副本)。大多数单元测试框架在概念方面与这些框架非常相似。所以学习一个,你不会花很长时间去接受其他人。
  2. 我认为阅读上述链接并了解这些概念可以帮助您顺利进行。它可能值得用Python或Ruby进行试验,因为它们的进入门槛较低,可以通过一些简单的测试来解决问题。
  3. 对于基于网络的测试,最知名的可能是SeleniumWatin。这些允许您编写脚本浏览器以自动执行操作。但是,我很少使用这些并且它们非常繁琐(你说的是几天/几周的努力)来设置和有用。无论您使用哪种框架,这些背后的概念都是相似的。

    想想我在1,2,3中回答了4,5,6: - )

  4. HTH

答案 1 :(得分:3)

至于“工业优势”,取决于你的意思。

对于大公司而言,QTP被广泛使用。用QTP学习的东西不是真正的语言,而是工具本身。对我来说,克服工具细节比学习VBscript更麻烦。如果您考虑性能测试,可能会选择Performance Center。在这里,您将C作为语言,但同样,使用工具比使用语言更难。 在一些公司中有来自IBM的堆栈,所以Rational软件开始发挥作用(FunctionalTester,Robot,PerformanceTester)。还有一些工具复杂性可以通过(IBM Redbobks可以提供帮助)。

在较小的公司中,Java / C#可能是有益的。在这里你可以熟悉junit / nunit / TestNG / MSTest。对于webapps,像Selenium / Watij / Watin / Fit / Fitness / Concordian这样的东西值得一看。如果你有时间看看AutoIT,PowerShell,Python,Fiddler,Jmeter,Abbot,Watir / Cucumber,Sikuli。

还有许多其他工具,如WebAii,TestComplete,Twist ......以及其他一些商业工具。通常你可以试试让他们玩一两个星期。

一切都取决于您将接触的项目类型,以及它将成为什么样的公司。

无论如何,在我看来,在某种程度上学习Java / C#就足够了。你不需要成为C#/ Java忍者,了解每个图书馆,并且在给定语言的情况下学习非常努力。您看到开发软件不仅仅是了解编程语言,而且测试自动化不仅仅是了解工具/语言(M. Fewster& D. Graham),因此不要对此感到痴迷。如果您可以在QTP中编写脚本(不记录但程序,使用描述性编程,将逻辑分解为库,通过适当的方法完全控制TestResults等),那么其他工具不会成为问题。您可能需要一两周才能学习给定语言的基础知识,但这完全适用于测试自动化(至少从一开始)。你需要更多的经验,了解工具,了解概念,了解不同方法的利弊,更好地了解头脑,而不仅仅是“如何用这种语言写出来”(你有这样的想法) :D)。

答案 2 :(得分:3)

这个问题的答案实际上取决于几个方面。首先,你在做什么样的测试?测试基于Web的应用程序?测试较大程序的库/组件? GUI测试?测试命令行应用程序?

在创建脚本/自动化测试工具时,我发现以下内容非常有用:

TCL - TCL可以像批处理文件一样轻松地与命令行连接,但是具有强大的语言,可以将批处理从水中吹走(包括GUI功能)。如果您使用基于Windows的控制台应用程序编写脚本(测试它们或使用它们来测试其他内容),我建议您花点时间来使用TCL。

AutoIt - 此脚本语言可让您快速轻松地自动与Windows应用程序进行UI交互。它也很容易学习。如果你想花时间和麻烦来开发一个屏幕抓取工具,你可以将它与AutoIt结合起来创建一些非常复杂的测试系统。

C - 在测试编译库时,我使用优秀的'C'获得了惊人的成功。我将为测试应用程序编写基本框架并创建一个脚本实用程序,它将动态生成其余代码在什么测试需要运行(我给它一个样本C片段库,它可以用于更复杂的任务)。

Ruby - 当您进行自动化测试时,强大的脚本语言可以走得很远。无论您是需要解析测试日志,生成报告还是自动生成测试脚本,您熟悉的脚本语言都可以为您节省大量时间和精力。我选择的语言是Ruby,但我公司的其他语言更喜欢其他语言,如Perl或Python。语言选择不是太重要,选择一个并学好它。

根据您正在测试的内容,您可能还会在您正在测试的代码中内置某种测试工具。 Java代码有时用JUnit测试编写,Ruby代码可以使用Test :: Unit框架等。Here是一个用于各种语言的单元测试框架列表。如果您正在测试的代码是在构建单元测试的基础上构建的,那么您将需要学习编写代码的语言,以便您可以利用这些单元测试。

答案 3 :(得分:3)

对于基于网络的测试,您可能需要查看fitnesse。此外,基于python构建的自动化测试框架是robot framework

答案 4 :(得分:2)

  1. Selenium非常适合QA级别的自动化测试。
  2. 无论您做什么,都会有一些与您的解决方案相关的学习曲线
  3. Selenium的目的是为webapps提供测试框架 - 您使用Selenium来操作浏览器中的DOM元素,而不是应用程序的运行版本。
  4. Selenium是一个客户端/服务器模型(您运行服务器的某个地方,可以访问您的QA应用程序实例;您使用客户端库编写测试代码),以多种语言提供客户端(java,ruby,等)

  5. 如果您有专门的QA资源可以编写代码,那么这种类型的测试是个好主意。它提供了一些高级回归测试。然而,它并非没有缺点:(1)测试可能需要一些时间才能运行,(2)您可能需要对Web应用程序dom元素进行一些更改以轻松使用框架,(3)更改Web应用程序将需要更改您的测试代码,这可能是非常重要的。

  6. 您的其他选择是为应用程序代码编写单元测试。通常,开发人员将此作为测试驱动过程的一部分。因此,开发人员有TDD,然后是QA的自动QA测试。

答案 5 :(得分:1)

我还会添加一个小评论

有一个新的测试自动化平台XML2Selenium

该平台建立在classis Selenium框架之上,并提供许多有用的功能

但它很容易使用

您不需要学习任何java或ruby - 您可以用XML编写

像这样的SMth:

<!-- here we have some imports Frame - is like a class, you can extend it with extends -->
<import resource="Demo.a-server/03Registration/framesRegist.xml" name="frames"/>
<import resource="Demo.a-server/01Action/FramesAction.xml" name="framesAct"/>
<import resource="Demo.a-server/03Registration/FramesLogin.xml" name="framesLog"/>

<property resource="Demo.a-server/LogValue.properties" name="logValue"/>
<test name="creatAction" description="create and check action">

<frame extends="frames:logAdmin"/>
<frame extends="framesAct:createAct"/>

// here we upload the image
<upload id="img_id0" resource="image.jpg"/>

// click save button with id=save
<button id="save" />

// make a screen shot 
<screenshot/>

// sleep for 3 seconds 
<pause time="3000" />

// make a screenshot again
<screenshot/>

// navigate to the given URL:
<navigate to="${logValue.baseUrl}/admin"/> 

<frame extends="framesLog:logOutAdmin"/>
<pause time="1000"/>
</test> 

您可以在此处查看包含错误的报告:    http://xml2selenium.com/demored/xml2selenium/

在这里你可以看到成功状态的报告:  http://xml2selenium.com/demogreen/xml2selenium/

PS:它支持在所有浏览器中进行测试,不仅在Firefox中作为Selenium IDE进行测试

答案 6 :(得分:0)

  • 是的,您可以学习selenium IDE,它只是作为firefox浏览器的附加组件,使用它可以记录您的测试并在需要时播放它们。 IDE的限制是它只能在firefox上使用。

  • 如果您希望在多个浏览器上进行测试,则需要Selenium Grid或WebDriver,这需要了解java。再一次,你不需要成为Java专家来做这件事,一个简单的学习会有所帮助。

  • 您可以在youtube.com上搜索Selenium教程。

Selenium的优点:

  1. 它的开放战场!!
  2. 它易于学习和恭维..
  3. 支持多种浏览器。
  4. 支持多种脚本/编程语言。
  5. 使用您喜欢的编程语言,灵活选择,简单记录和回放(IDE),完成框架设计。
  6. 支持parellel执行。
  7. 希望这会对你有所帮助。