【问题标题】:Language to learn to move out of manual testing towards automated/programming [closed]学习从手动测试转向自动化/编程的语言[关闭]
【发布时间】:2010-07-26 18:31:45
【问题描述】:

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

需要注意的几点是:

  1. 我需要知道哪些工具在行业中最常见,以及与这些工具相关的语言。
  2. 我没有太多时间来学习大量的东西。因此,我正在寻找使用有利于学习的语言的工具,以防我想做更多的编程。
  3. 我更喜欢基于 Web 的应用程序测试,但这不是限制。
  4. 您可以提供 2-3 种语言,据我所知,不可能只有一个赢家。
  5. 我做过一些使用 VBScript 的 QTP,但 VBScript 没有被广泛使用。我想学习一门基础更广泛的语言。
  6. 即使这个问题似乎很难回答,也请提供您的意见和想法。

提前致谢。


编辑: 我想到目前为止我已经决定我会去:

  1. QTP
  2. 测试驱动开发方法

我只需要找到一种优秀的编程语言,它可以让我具备程序员的优势,并且适用于多种测试工具(包括 Selenium)。也许是 Python、Ruby 或 Java?

【问题讨论】:

  • 我认为到目前为止我已经决定我会选择:1. QTP,2. Selenium,3. 测试驱动开发方法。我只需要找出一种好的编程语言,它能给我带来程序员的优势并且适用于多种测试工具(包括 Selenium)。也许是 Python、Ruby 或 Java?
  • 在这 3 个中,我会选择 java。我会断言它拥有最成熟的自动化测试工具。虽然 Ruby 和 Python 的进入门槛较低。
  • 谢谢。 c# 和 nUnit 怎么样?

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


【解决方案1】:

哇,这是一个相当广泛的问题。我想说随着行业朝着Test Driven Development(或在代码之前编写测试)模型发展,您处于有利位置。

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

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

  1. 在 .NET 中,NUnit 可能是使用最广泛的单元测试框架。它是 Java 世界中JUnit 的一个端口(副本)。大多数单元测试框架在概念上与这些框架非常相似。所以学一个,很快就能学会其他的。

  2. 我认为阅读以上链接并对这些概念有所了解会让您顺利上路。可能值得尝试使用 Python 或 Ruby,因为它们的入门门槛很低,可以进行一些简单的测试。

  3. 对于基于 Web 的测试,最知名的可能是 SeleniumWatin。这些允许您编写浏览器脚本以自动执行操作。但是,我很少遇到这些很好的用法,而且它们非常繁琐(你说的是几天/几周的努力)来设置和有用。同样,无论您使用什么框架,这些背后的概念都是相似的。

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

HTH

【讨论】:

  • 感谢 TDD 的想法。我认为当今大多数公司都在走向敏捷。我需要学习。
  • 敏捷对不同的人意味着很多不同的东西。以我的经验,敏捷通常意味着“只是做它”,而实际上它是一个严格的过程。敏捷也不是灵丹妙药,上面的技术将有助于敏捷,但敏捷中最难的一点是纪律。
【解决方案2】:

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

对于大公司,QTP 被广泛使用。用 QTP 学习的东西并不是真正的语言,而是工具本身。对我来说,克服工具细节比学习 VBscript 更麻烦。如果您考虑性能测试,那么 PerformanceCenter 可能是您的选择。在这里,您将 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)。

【讨论】:

  • 我认为你是对的。 QTP 是必须的。我现在正在寻找一种好的编程语言来弥补我的非编程经验。
  • 与 Java/C# 相比,深入研究 TDD、BDD、ATDD 和其他敏捷的东西。
  • 是的。我在想 c# 和 nUnit。尽管 Java 与 C# 相比,这是一个艰难的过程。
【解决方案3】:

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

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

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

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

C - 在测试编译的库时,我使用好的 'ol C 取得了令人惊讶的成功。我将为测试应用程序编写基本框架并创建一个脚本实用程序,该实用程序将基于动态生成其余代码关于需要运行哪些测试(我给它一个示例 C sn-ps 库,它可以用于更复杂的任务)。

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

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

【讨论】:

  • 我将主要从事网络应用功能。
  • 关于 Tcl,它不是唯一的语言。 Perl 和 Python 在同一角色中工作得非常好。在您的情况下,我建议使用 Python 而不是 Perl 或 Tcl,因为 Python 是通向编程的更好桥梁。
  • 谢谢。我丈夫喜欢 Python。
  • @David Thornley- 我之所以提到 TCL,是因为我是 Windows 版本 TCL 附带的交互式控制台的粉丝(您几乎可以将它用作 cmd.exe 的替代品) .不过,您是对的,TCL 只是几个选项之一。
  • @David Thornley:我不同意 Python 是“更好的编程桥梁”。它有所不同,但在这方面不比 Tcl 好也不差。两种语言都有优点和缺点。不过,我同意 Python 显然是通向 OO 编程的更好桥梁。
【解决方案4】:

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

【讨论】:

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

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

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

    【讨论】:

    • 感谢 Selenium 的想法。我想我一定会和 QTP 一起深入研究它。
    【解决方案6】:

    我也会添加一个小评论

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

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

    但它很容易使用

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

    像这样的:

    <!-- 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 中

    【讨论】:

      【解决方案7】:
      • 是的,你可以学习 selenium IDE,它只是作为 firefox 浏览器上的一个插件,你可以使用它来记录你的测试并在需要时播放它们。 IDE的限制是只能在firefox上使用。

      • 如果您希望在多个浏览器上进行测试,则需要 Selenium Grid 或 WebDriver,这需要 Java 知识。同样,您不需要成为 Java 专业人士也能做到这一点,简单的学习会有所帮助。

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

      硒的优点:

      1. 开源!!
      2. 它易于学习和实施..
      3. 支持多种浏览器。
      4. 支持多种脚本/编程语言。
      5. 您可以灵活选择,简单的录制和播放 (IDE),使用您最喜欢的编程语言选择的完整框架设计。
      6. 支持并行执行。

      希望这会对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-22
        • 2011-02-04
        • 2013-10-21
        • 2012-11-15
        • 2021-03-02
        • 1970-01-01
        • 2011-10-01
        • 2010-11-18
        相关资源
        最近更新 更多