Home › Forums › Software Testing Discussions › What languages do you need for testing?
- This topic has 8 replies, 8 voices, and was last updated 7 years, 6 months ago by Oliver.
September 9, 2015 at 2:45 pm #9275DaraghParticipant@daraghm
In light of the webinar next week on Programming for testers, I would love to discuss what languages you see as most useful when testing? I know that some like using languages for scripts and others prefer visual basic as it is easy to learn and is used in a lot of applications relevant to testing.
Although, if using tools link Selenium is something like Java more effective? Do Ruby and Python remain very popular as well?
There is a vast choice of languages out there so what would you recommend? On the opposite side, is there any languages you would recommend to avoid?September 10, 2015 at 10:35 am #9290marzioParticipant@marzio
I guess it depends on the environment where you have to move. I believe that if you want to be as effective as possible you have to learn how to be independent enough.
I’m in a Java-based environment so start to use Selenium (webdriver) and Junit was a must to me. Then as a company we try to adopt BDD, so I’m on gherkin and cucumber as well. And in my previous experiences I have the chance to use python, awk and cics.
Learn a new language is always interesting and funny to me, but I’m a tester, there’s a gap of knowledge with a developer, I just know the fundamentals.September 11, 2015 at 4:06 pm #9306KyleParticipant@k-potter
Like Marzio said, I think it depends on what you test and what tools are available to you.
Currently creating and automation framework in CSharp using Webdriver/nUnit, as it’s what our SaaS is developed in. So we decided to build the framework in CSharp to leverage developers skills and experience.
With what languages a tester should have, I’m not sure. But I think (in my experiance) that being able to scrap sites, sort through data and being able to understand webpages is useful.September 11, 2015 at 4:32 pm #9307OliverParticipant@oliver
Most of my experience in testing has been black box testing. While I have touched on some white box testing it has mostly been sql related.
Being able to create or alter test harnesses is the Chief reason I see for a tester to learn to code, but I’m interested in the possibility of testers sitting in and potentially adding value to code reviews.
The test Automation tools I have used have been heavily supported by developers and baring some minor scripting are normally quite straightforward to use given access to help files and a search engine.September 11, 2015 at 8:57 pm #9308ConallParticipant@ccbmonks
I think the technical requirements for testers these days is increasingly that they should know how to script or program in some language and I can only see that becoming more mainstream (if it isn’t already), esp in agile environments. I think understanding code makes you a better tester even if you don’t write much as you can test more effectively in white box or grey box situations.
I don’t believe there is any one language that is better than the other, though obviously it can depend on your environment which one you will sway towards. I think the most important thing to know as a tester is what good code looks like and how you apply patterns like modularity and OO concepts for automation – regardless of whether that is for non UI automation like intermediate sql or Unix script or more advanced programming in a language like java for UI automation or api automation. If you know the core concepts and patterns then (syntactic differences of languages aside) most UI automation frameworks look the same – they all use locators, need synchronisation, require utility functions etc etc and if you have done that before in one language you should quickly pick up the basics if writing in a new language.
For non technical testers up skilling I think VB is a good intro to basic programming concepts, with basic to intermediate sql. But I think moving onto basic JSCRIPT, HTML and then picking a language to learn more on and automate more is important.
Python is good and if you have some of the above can be a nice follow on, and I think JSCRIPT is good in that respect too, I found testers learning take to these easier than going into c# or java which i think have steep initial learning curves unless you have OO experience. That said it’s difficult to ignore that java is so common in many environments so it is always good to learn and you will be able re-use that skill in many places. Just be ready for a tough initial intro (unless you have good support around you to help or you are working on a framework already built with complexity well abstracted away).
Haven’t seen ruby being used much, I think it is quite niche but if you are in Devops / testops then it will fits well.September 12, 2015 at 8:23 am #9310RomanParticipant@rpwheeler
Languages are like “magic”. You say or write some words and “some magic” happens. Or some automation. If you need something to happen your way, you may need to code something even where your job doesn’t demand that explicitly. For example, for one of my mostly manual testing jobs I wrote custom log analyzer application.
There are a lot of tools written in languages you cannot choose (not the case with Selenium, but choice with Selenium is also limited). Like a tool, like a language it supports, as it enhances your capabilities in making tool to do what you want.
When choosing a language, think of tools / libraries / technologies it supports. Languages are for something, for some work to do.
Any general-purpose language can do some task(s) for you, with OS-related tasks you probably want to learn some OS scripting, this is also required for many jobs dealing with Linux/Unix-based servers.
In any job I most probably need some scripting (OS scripting or other tool for scripting/automating) to automate launch of what I use after PC restart (as it is boring to run some software in particular order again and again).
As general-purpose language now I prefer Python, as for me it is simpler language, while still powerful. It is “write fast, modify fast, re-run fast”, and I like it.
I used Python also with Sikuli visual automation tool, and for making custom keywords for Robot Framework automation framework, which has a lot of ready-to-use libraries (for Selenium, databases, OS tasks), but you may need some customization.
Now I’m studying CSharp, as with my new job I have to deal with tools written in it.
I also heard from my young colleague that they learn Python and Java as computer course students. It looks natural for me, as Python is good language to start, and Java is popular.
So, my recommendation are:
– learn OS scripting for OS of your choice
– learn Python and/or Java, general-purpose languages with great libraries choice, community support etc. Both are popular and recognized. If you are not sure with which to start, start with Python (and there are popular Computer Science courses based on it), but remember that Java increases your tool reach and career possibilities.
– if your job is related to Microsoft world and tools and/or code base, learn CSharp. But remember that Java and Python have more OSes and tools covered.
– learn how to do SQL queries, it is not that hard to learn and you going to need it at some point
– many languages support similar concepts and constructs, but write it in different ways. This means that after you learn your first programming language, you’ll find many familiar topics in other languages, and it would be simpler to you to add more languages to your toolbox
– it is good to have some tools in that your toolbox, not just the one 🙂
Also I’d like to share link to http://hyperpolyglot.org/ , which helped me to write a few things in Python knowing just Pascal at the time.September 12, 2015 at 4:41 pm #9312CristianoParticipant@cristiano-cunha
I agree with Roman, in automation we have different phases where we have different needs:
– Scripting to execute our tests in CI process and generate our precious reports
– A coding language to write tests, C# and Java are big right now and widely used with Selenium
– Understand the language used in our “test subject”
– Know how to use queries, a lot of validations will need checking the data base
If you want to be a complete tester invest in being able to deliver a complete testing solution, that will bring value to your team by increasing confidence
in the delivery process.
We have so much choice that I cannot advice you to use this or that language, like Roman says, invest in your toolbox.September 14, 2015 at 10:13 am #9315MichaelParticipant@mkenne01
Currently using Java with cucumber for integration tests, Scala with Gatling for performance tests. Previously used NodeJS for functional tests.
Generally we try use the code for tests the same as what is being developed that way we have loads of knowledge to relay on and people to do code reviews of the test code.September 22, 2015 at 4:19 pm #9455OliverParticipant@oliver
So I attended the Webinar last week, it provided information on the workshop the presenters had on a crash course into python for beginners.
Depending on the day to day activities of a Tester I would suggest some Resources which I have found to be useful
For SQL querys, XML, and HTML (also Java script, ASP, PHP and plenty of other web focused technologies which I have not used)
Scripting Language Perl has a lot of Powerful Data creation Utility
- You must be logged in to reply to this topic.