What are the best programming languages to learn now?

What programming languages are good for novice testers to learn?

  • I'm looking for a programming language to recommend to a friend considering teaching herself software testing. I have a friend who is interested in learning software testing, and I believe strongly that today's testers absolutely have to have automation skills if they don't want to hit a glass ceiling after a few years (or become super-star exploratory testers . . . but not everyone wants the stress of having to be a super-star). I can't look to my own experiences, because I did a 4-year CSE degree that was geared toward developers, and my education isn't light-weight enough. I want something relatively easy to learn that will give the tester the greatest bang for their buck in developing good, maintainable automation. I know Ruby is used for a couple of test tools - Watir and Cucumber - and something that works with Selenium, WatiN, or Watir would be good. The two favorite languages locally for developers seem to be Java and C#, and she will be working locally. Whatever she learns needs to have good resources for novices at programming to self-teach, whether those be books, online tutorials, or online communities. Something that isn't too expensive to learn would probably be preferred ('free IDEs are available and there are good free tutorials and information to learn from' is ideal). Also, something that is harder to write bad code in would be good, since I want her to be able to avoid brittle, unmaintainable tests. She is highly motivated to learn, so a very useful language that will take 6 months of hard work to get a usable level of skill is preferable to a slightly useful language that she could use in a single month. At the same time, any time she spends learning to program is time she could be spending practicing exploratory testing or learning other great test skills - so ease of learning does matter. Also - I do realize that programming is one very small piece of being a good tester. I just have a better handle on self-teaching the rest of the testing skills, since I self-taught myself those areas and can pass on what worked for me or what I wish I'd known. I don't want anyone to think I believe you can learn to be a good tester by just learning to program; rather, I just don't have a good handle on the easiest way to start programming as a tester since I started testing as a programmer.

  • Answer:

    I kind of have the opposite experience: I learned some coding first then became a tester. My advice is that any programming/coding experience is beneficial for testing. Any way you can better understand what the application is doing in front of you, the better you can test it. Plus, specific tools and languages come and go in use and popularity: learning the fundamentals will age quite well in the long run. Programming languages comes in all shapes and sizes, but have some main things in common (usually) so seeing more is good. Plus if she's willing to learn, then larger ideas such as Object Oriented Programming, web and command scripting, programming style and code reuse will be helpful overall. Definitely look at scripting languages like Python or Perl: they can be indispensable for daily testing tasks. As for specific suggestions, Python is a good language to start with. It's easily available and platform independent, which is great in the long run. It also has some mature testing tools (nose, unittest) and a large range of other libraries and tools (BeautifulSoup for HTML processing, Selenium tools). It also has a good community for help, and straightforward syntax. I've also heard good things about Ruby for similar reasons, and maybe the testing tools (Watir in particular) are more mature. I've recently learned a small bit of C#, and it's good as well.

Ethel Evans at Software Quality Assurance & Testing Visit the source

Was this solution helpful to you?

Other answers

I don't think any specific language is better or worse than any other, although I will say (from experience) that going from Java or any other "pointerless" language to one that does have pointers is not a pleasant experience. Apart from that - the important parts of automation and coding are recognizing the problem that the code needs to solve, and being able to express the solution in a way that can be handled with a logical series of steps. Object-oriented and data-driven are nice ways to handle the data that drives the steps, but the core is finding the bits the automation has to interact with, and the logic processing. My recommendation here would be to pick something that's got a lot of support and wide application, make sure the logical structures are learned (if-else, case statements, the various looping types and so forth), and it won't matter past what's currently most practiced what the language is. I learned programming this way, and I've never had much difficulty picking up new languages (I first learned Java, then Javascript with HTML, various other scripting languages, VBScript with ASP.NET, and I'm currently working with a script flavor of Delphi)

Kate Paulk

I would recommend a slightly different approach. Rather than initially focusing on a particular language, I would recommend focusing on programming concepts. Some good books include Programming Langugae Concepts by Carlo Ghezzi, or Prelude to Programming: Concepts and Design by Elizabeth Drake. (Another great book is Programming in the Key of C Sharp by Charles Petzold. It uses C# to teach programming concepts.) If someone learns the semantics of basic operations, and the basics of data types, control structures, program design, and data structures then learning a particular language is reduced to learning the syntax for that language. You don't learn to think or rationalize ideas by simply learning how to repeat words in another language.

Bj Rollison

I like Everyday Scripting with Ruby: for Teams, Testers, and You by Brian Marick It teaches Ruby but also shows how it can be used to help in testing - so instead of reading theory and going through exercises there is the chance to actually put some of the code into use.

Phil Kirkham

There's a good argument for trying to use whatever language the devs are using, so to that end I'd suggest C#. I don't think that I really subscribe to the idea that you should start out with a 'gateway' language and work your way up - at the beginning learning programming you can tend to be very hung up on the syntax, rather than concepts, so trying to learn more than one language is a complication. C# has the free express visual studio IDEs, which are going to be packed with auto-completion and help files. I think there is some decent context for automated testing in C# from some of the microsoft testing blogs also.

aliking

I would recommend to start from JavaScript This language is not too complicated for beginners to start writing some very basic code. From the other hand it is a powerfull language that is used not only for client side but also for server side development. This language has a hidden potential and the popularity of its still growing, see http://langpop.com/ Also person knowing JavaScript can learn Java or C# , but in this case good understanding of OOO concept will be required As a language it is used in different automation tools, like Selenium and there are a tone of tutorials (just google for 'JavaScript tutorial' and select what you want)

Bogdan_Ch

Get the OOPS concept first, Start with Java Script, VB Script. Before that it is good to know HTML, CSS styles. Once you are expert on these then go to Ruby Scripts, C#, later on to PERL scripts if you want to learn Security testing.

Balaji Kothandaraman

The language's utility depends upon the type of automation. For driving applications from the outside, or for interacting with a command line interface, a scripting language like Bash or PERL is hard to beat. For interacting with an API, the API's own language is never a bad choice, especially if one has well-documented examples to learn from. (I personally think Clojure is a better language than Java for testing a Java API, but I am not sure I would recommend this to a beginner.) For testing web interfaces, JavaScript might the right language, or it might be a "bigger" language environment like Java or C#, assuming there are well-documented examples (or willing teachers) to learn from.

user246

I would recommend 3 that iconic of how bugs are created: C# - this will show a modern object oriented approach, hard to have bugs that are pure typos. Objective C, managing resources and the unique C syntax, so easy to mess up and wonderful bugs are easily created JavaScript - this or some variant of will be useful in automated testing tools as well has understanding loosely typed languages. Overall I think it helpful to have some knowledge of the language you AUT is written in.

jtreser

I've mostly used Ruby and Python languages recently in my role as a tester, also would recommend learning command line scripting both on Unix/Linux and Windows machines.

Alastair

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.