我正在寻找一种编程语言,推荐给考虑自学软件测试的朋友。我有一个对学习软件测试感兴趣的朋友,并且我坚信,如果今天的测试人员不想在几年后达到极限(或成为超级明星探索性测试人员),他们必须具备自动化技能。 ...,但不是每个人都希望成为超级明星的压力。)

我不能依靠自己的经历,因为我获得了面向开发人员的4年CSE学位,而且我的教育还不够轻巧。我想要一个相对容易学习的东西,这将使测试人员在开发良好的,可维护的自动化方面付出最大的努力。

我知道Ruby用于两个测试工具-Watir和Cucumber-以及与Selenium,W​​atiN或Watir一起使用的东西会很好。开发人员在本地最喜欢的两种语言似乎是Java和C#,她将在本地工作。她所学的知识,无论是书籍,在线教程还是在线社区,都需要有足够的资源供初学者编程自学。一些不太昂贵的东西可能是首选(“提供免费的IDE,并且有很好的免费教程和信息可供学习”是理想的选择)。另外,用难写坏代码的东西会很好,因为我希望她能够避免脆弱的,无法维护的测试。她非常有学习动机,因此,一种非常有用的语言需要6个月的努力才能获得可用的技能水平,而不是一个月就可以使用的稍微有用的语言。同时,她花任何时间学习编程,都是花在练习探索性测试或学习其他出色的测试技能上的时间-因此易于学习很重要。另外-我确实意识到编程是成为一名优秀测试人员的一小部分。我可以更好地自我学习其余的测试技能,因为我可以自学这些领域,并且可以将对我有用的或希望的知识传授给我。我不想让任何人认为我相信您可以通过学习编程来学习成为一名优秀的测试人员。相反,自从我开始以程序员身份进行测试以来,我只是没有办法以最简单的方式开始以测试人员身份进行编程。

评论

感谢您到目前为止的回答!我现在倾向于Java和Python的组合。 Java将使她做好与Java和C#一起使用的准备,这是大多数开发人员将使用的语言,Python听起来像是具有许多测试工具的良好“实用程序”语言。我将开始寻找一些好的教程:)

Python被广泛认为是初学者的最佳语言,比Java或C#简单得多。了解Python编程后,学习其他语言将变得更加容易(并且您将了解为什么Python更容易)。

#1 楼

我有相反的经历:我首先学习了一些编码,然后成为了测试人员。我的建议是,任何编程/编码经验都对测试有益。以任何方式可以更好地了解应用程序在您面前所做的事情,就可以更好地对其进行测试。另外,特定的工具和语言也开始流行和流行:从长远来看,学习基础知识将变得非常成熟。

编程语言有各种形状和大小,但有一些主要的共同点(通常),因此,多看是件好事。另外,如果她愿意学习,那么诸如面向对象编程,Web和命令脚本,编程风格和代码重用之类的较大构想将对总体有所帮助。绝对要看一下像Python或Perl这样的脚本语言:它们对于日常测试任务是必不可少的。

关于特定建议,Python是一门很好的语言。它易于使用且与平台无关,从长远来看,这非常好。它还具有一些成熟的测试工具(nose,unittest)和各种其他库和工具(用于HTML处理的BeautifulSoup,Selenium工具)。它还有一个很好的社区,可以提供帮助和简单易懂的语法。由于类似的原因,我也听说过有关Ruby的一些好消息,也许测试工具(尤其是Watir)更加成熟。我最近学了一点C#,它也很好。

评论


我同意任何编程语言经验都是有益的。我也同意Python可能是一个不错的起点。我的团队中有一位Python专家,他能够在各种测试环境中使用它。

–乔·斯特拉泽(Joe Strazzere)
2011年8月23日14:48



Python带Ruby进入了我的脑海,看起来像带Selenium(RC和IDE)一起工作。我绝对偏向于可用于教授OOP的语言。我将不得不研究其测试工具。谢谢,这看起来很有希望。

– Ethel Evans
11年8月23日在18:05

嗨,乔,有几个原因。因为理解OOP使理解开发人员代码更加容易,并且为白盒测试提供了可能性,并增强了调试能力。因为如果测试人员甚至可以理解基本的OOP(例如,用于UI测试的页面对象),编写可维护的自动化测试通常会变得更加容易。在我自己的开发背景下,可能会有不合理的偏见:p

– Ethel Evans
2011年8月24日17:27



对Python(+ Selenium绑定)和Shell脚本的另一票支持。

–精子
13年2月19日在8:08

出于少数原因,将Python作为首选(1)针对人类可读性进行了优化的简单语法(计算机必须更努力地工作,但是语法使程序员更具生产力); (2)灵活的数据结构,数据文字和理解方式节省了大量代码行; (3)出色的文本处理能力,因此您可以使用Python开发很少的自定义工具; (4)初学者可以编写非OO代码并使用现有对象,这是更容易的方法; (5)麻省理工学院将其作为编程入门语言-给您提示。我知道有10多种语言,Python最适合初学者(对专家也很重要!)

– Peter M.-代表莫妮卡(Monica)
2015年11月11日14:30

#2 楼

我不认为任何一种特定的语言都会比其他语言更好或更糟,尽管(从经验中)我会说,从Java或任何其他“无指针”语言到具有指针的语言并不是一种令人愉快的体验。 >
除此之外-自动化和编码的重要组成部分正在认识到代码需要解决的问题,并能够以一系列合理的步骤来处理该问题。

面向对象和数据驱动是处理驱动步骤的数据的好方法,但是核心是找到自动化必须与之交互的位以及逻辑处理。

我在这里的建议是选择一些得到了广泛支持和广泛应用的东西,确保学习了逻辑结构(if-else,case语句,各种循环类型等等),它将不会不管过去最常使用的语言是什么。其他脚本语言,带有ASP.NET的VBScript,目前正在使用Delphi的脚本风格)

评论


绝对是带/不带指针语言的一个很好的技巧。当然,采用其他方式(例如,从C ++到C#)很棒!

– joshin4colours
11年8月23日在19:21

joshin4colours-是的!从Java开始,然后尝试在C ++中工作并不是一种愉快的经历。如果我必须专业地做那件事,那我就必须坐下来学习指针以及它们如何工作。

–凯特·保罗(Kate Paulk)
11年8月24日在15:18

#3 楼

我建议使用稍微不同的方法。我不建议您一开始就专注于特定语言,而建议您专注于编程概念。

一些不错的书包括Carlo Ghezzi的《编程Langugae概念》或Elizabeth Drake的《编程前奏:概念和设计》。 (另一本很棒的书是Charles Petzold撰​​写的《用C Sharp编写Key编程》。它使用C#教授编程概念。)结构,程序设计和数据结构,然后学习一种特定的语言就减少了学习该语言的语法。语言。

评论


基本上,我同意,尽管不只是“学习该语言的语法”

–Rsf
2011年9月5日在7:49

#4 楼

我喜欢Brian的Everyday Scripting:针对团队,测试人员和您,作者Brian Marick

它不仅教Ruby,还展示了如何用于帮助测试-因此,您无需阅读理论并进行练习有机会真正使用一些代码。

#5 楼

我建议从JavaScript开始。

对于初学者来说,开始编写一些非常基本的代码不太复杂。另一方面,它是一种功能强大的语言,不仅用于客户端,而且还用于服务器端开发。这种语言具有潜在的潜力,并且其流行程度仍在增长,请参见http://langpop.com/。

还知道JavaScript可以学习Java或C#的人,但是在这种情况下,您对OOO概念的理解很好将是必需的。

作为一种语言,它会在不同的自动化工具(例如Selenium)中使用,并且会有一系列的教程(仅Google代表“ JavaScript教程”,然后选择您想要的)

#6 楼

尝试使用开发人员正在使用的任何语言都有一个很好的论据,因此,我建议使用C#。

我不认为我真的赞成您应该从一种“网关”语言开始并逐步发展的想法-在开始学习编程时,您可能会非常挂念

C#具有免费的快速Visual Studio IDE,将与自动补全和帮助文件打包在一起。我认为有些Microsoft测试博客也提供了一些不错的C#自动测试环境。

#7 楼

我建议从脚本语言开始。可能是Perl,Python,Ruby。使用这种语言很容易,它们可以轻松解决许多标准问题,例如HTML报告生成,发送电子邮件,生成测试数据等。这些语言可以与Selenium RC一起使用,以创建自动化的Web测试。首先,初学者需要了解他可以使用编程语言做什么。动态语言在日常工作中显示出很多优势。

我不建议以强类型语言(例如C#或Java)开头。该语言中有很多重要的细节,使其难以理解。

默认情况下,测试人员必须知道Windows Batch Files脚本。

评论


(注意:此评论来自@ mohammed-sameeh-它被添加为答案,因为新用户尚无足够评论要点。我认为这是一个好问题,我也想知道!)“ dmitry Zhariy为什么选择Windows批处理文件脚本对于测试人员很重要”

– testerab
2012年2月29日在20:14



Windows Batch脚本节省了大量时间。我正在使用msiexec安装正在测试的应用程序,在安装后自动复制预定义的配置文件,从海外服务器下载最新版本,一键式备份和还原oracle DB。为什么要手动执行所有这些常规操作?我使用批处理文件和命令行工具将它们自动化。除了批处理文件之外,您还可以使用Powershell,JScript等,但是我更喜欢使用批处理来自动化我的任务,而且每天都可以节省我的工作时间。

– Dmytro Zharii
2012年3月13日在16:03



#8 楼

一切都有上下文。


您将加入或启动自动化项目吗?请遵循该项目的语言。
您想快速了解编程和自动化的基础知识吗?看一下Python;进行类似Codeacademy的课程,并在Y分钟学习X站点上的每个条目上玩-尝试运行并更改内容以查看会发生什么。之后,通过严格的学习自动学习Page Object模式,并始终使用良好的OO编程检查是否正在构建可扩展的对象。 Python教程和课程有时缺少这类批评家。
您想看看市场吗?大型公司比C#使用Java多,因为他们有Java的开发人员。Java紧密结合使用,具体取决于您所在的地区。这里的缺点是,使用这些语言进行自动化的社区并不那么强大。
您是否想尝试Selenium上内置的许多开源工具?看看Ruby; Cucumber环境非常活跃,与Rails的集成是重点。 Javascript社区与Ruby一样活跃。这些语言有很多“魔术编程”,很少有几行代码可以完成很多事情。我喜欢它们,但是我知道,如果您是新手和/或学习严格的C风格编程,可能很难捕捉到这类优雅的代码。


#9 楼

首先获得OOPS概念,从Java脚本,VB脚本开始。在此之前,最好了解HTML,CSS样式。一旦您是这些方面的专家,然后如果要学习安全性测试,请转到Ruby脚本C#,然后再转到PERL脚本。

#10 楼

语言的实用程序取决于自动化的类型。对于从外部驱动应用程序或与命令行界面进行交互,很难击败Bash或PERL之类的脚本语言。对于与API进行交互,API自己的语言绝不是一个坏选择,特别是如果有一个文档齐全的示例可供学习的话。 (我个人认为Clojure在测试Java API方面比Java更好,但是我不确定我会向初学者推荐这种语言。)对于测试Web界面,JavaScript可能是正确的语言,或者可能是“更大的”语言语言环境(例如Java或C#),假设有充分记录的示例(或愿意的老师)可以学习。

评论


谢谢,关于与API交互的观点很重要。然后,这强烈暗示了Java或C#,因为这些语言在这里被大量使用(IME,从Java到C#的迁移真的很容易)。 Java加上Python或Perl中的一些脚本可能是一个非常有效的组合。

– Ethel Evans
11年8月23日在18:08

#11 楼

最近,我以测试人员的身份主要使用Ruby和Python语言,也建议您在Unix / Linux和Windows计算机上学习命令行脚本。

#12 楼

我会建议3标志着错误的产生方式:
C#-这将显示一种现代的面向对象的方法,很难发现纯错别字的错误。 ,因此很容易弄乱,也很容易创建精美的错误
JavaScript-此变量或某种变体在自动化测试工具中也将非常有用,并且可以理解松散类型的语言。

有助于了解您使用AUT编写的语言。

#13 楼

如果您想让您的朋友开始选择“ First First Programming”一书,它使用Python教授编程和一些设计。我前几天做了一些事情,以增强我想在编程中拥有的一些基础知识,尽管考虑到我已经以自己的测试能力进行了一段时间,但是我从中得到了一些好处。对于尚未编程的人,在我看来像是一个不错的介绍。

#14 楼

我在软件测试领域还很陌生,也一直在尝试自学自动化测试。我一直在Udacity.com上使用此免费软件测试课程。它具有笔记和论坛,它们也非常有用。它使用Python。希望这可以帮助!

#15 楼

我起初是测试人员,没有任何编程技能。

我开始使用名为“ Autoit”的工具进行自动化。
VB和用户之间略有差异SCITE中的代码。话虽如此,100%开源。

主要的好处是社区/论坛。每当在这里提出问题时,都不会给出答案,除非用户实际粘贴了他们一直在努力的一段代码,从而迫使用户学习。它也非常有据可查,因此,如果您准备先进行研究,则提问的机率会降至最低。

如果我以前没有说过,请单击或使用键盘,Autoit可以使其自动化! (我们每晚进行部署。)

如果需要的话,我很乐意提供更多信息和帮助,并认为这是最好的方法,可以同时访问两个世界(编程和测试)

评论


AutoIT是一个很好的工具。我过去用过。但是,我非常确定AutoIT是免费软件,而不是开源软件。请参阅:autoitscript.com/autoit3/docs/license.htm

–乔·斯特拉泽(Joe Strazzere)
13年2月22日在12:51



#16 楼

我是Ruby爱好者,所以我可以推荐该路线。
我希望直接使用水豚而不是Watir和Cucumber。

https://rubygems.org/gems/ capybara

尽管通常在Rails应用程序中使用,但它也可以在它们之外使用,并且为使用Selenium命令提供了不错的DSL。
有关示例,请参见我的https:// github。 com / durrantm / basic_app
注意它的设置方式:

Capybara.run_server = false
Capybara.default_driver = :selenium
Capybara.app_host = 'http://www.google.com'



正确使用页面对象选择器和帮助器方法,您可以最终得到结果具有诸如

...
find(p.css_has_license).click
fill_out_driver p
fill_in p.css_driver1_age_licensed, with: age_licensed
select credit_evaluation_option, from: p.css_credit_rating
select education_level_option, from: p.css_driver1_education
...


这样的可读规范,您可能会猜到我们正在我们的网站上收集消费者汽车保险信息!