7

I currently work at an ad agency as a Manual QA. I originally came in to act on the business side but kind of 'fell in to' the job.

I do not have a programming background but I am very interested in automated QA. My questions are:

1.) Having no knowledge of programming languages, which is the strongest language for automated QA?

2.) I have some understanding of Selenium but I'm not sure which suite to use. Should I be looking to use Web Driver?

3.) I understand the concept of creating scripts to perform tasks, but I've read re-creating my manual tests as scripts isn't the direction I should be headed. What types of tasks should I be looking at to automate?

4.) Are there additional tools outside of scripting that are used in the automated QA process?

If anyone has any other resources or information I can use to educate myself I would gladly appreciate it.

4

10 Answers 10

3

I have to disagree with Twaldigas on point three:

3.) I understand the concept of creating scripts to perform tasks, but I've read re-creating my manual tests as scripts isn't the direction I should be headed. What types of tasks should I be looking at to automate?

You should automate manual tests. First of all automate the regression tests. You execute them over and over again. Automate them will useful in the long term

It depends on your manual tests - often manual tests are not good matches for automation and a manual process will not necessarily translate well to automation.

The way I handle automation is to look not at the manual test itself but at the goal of the manual test. The goal is what I may want to automate, not necessarily the steps.

For example, if my manual test involves checking a printout to ensure that the correct data is displayed and the layout is good, I'm not going to automate the layout check because that can really only be accomplished through automation by an image comparison and those, even with fuzzing, are far too likely to report problems that don't exist. Instead of printing, I'll print to file in a format I can work with, and run a text compare against a baseline. This isn't something I'd do manually, but it works very well as an automated test.

Simply put, computers are very good at doing a lot of data checks very quickly. Automation should focus on that. Humans are very good at pattern-matching and deciding whether a particular process is a pain to work with or not. Manual testing should focus on that.

If you've worked solely as a manual tester, there's a good chance your tests are a mix of both types, along with a mixture of priorities and levels of value (humans are versatile. Computers, not so much).

For resources, I'm going to give you my standard list:

  • Joe Strazzere's site, All Things Quality. He covers a lot of questions relating to automation as well as general testing matters.
  • The Ministry of Testing. They have a massive resource list as well as a phenomenal listing of testing blogs and multiple other goodies.
1

1.) Having no knowledge of programming languages, which is the strongest language for automated QA?

In general nobody can answer this question. It depends on what you want to auomate and what tool or framework you use for that. Like B. Berndsen says, if you want to use Selenium 2 / WebDriver to develop GUI tests, I also advise Java. But other languages are supported too.

2.) I have some understanding of Selenium but I'm not sure which suite to use. Should I be looking to use Web Driver?

If you want to create GUI tests for web applications Selenium 2 / WebDriver is the right choise. It is open source, has a detailed documentation and do not need much programming skills.

3.) I understand the concept of creating scripts to perform tasks, but I've read re-creating my manual tests as scripts isn't the direction I should be headed. What types of tasks should I be looking at to automate?

You should automate manual tests. First of all automate the regression tests. You execute them over and over again. Automate them will useful in the long term.

4.) Are there additional tools outside of scripting that are used in the automated QA process?

For different types of testing exists different tools. Selenium 2 / WebDriver is for testing the GUI of web applications. For stress or performance tests exists JMeter. But this is just an example. Reflect what are the important things to test, find a tool and then try to automate them.

If you decide to start with Selenium 2 / WebDriver pay attention to the basics of the programming language you choise. Not more! After that write some simple unit tests with a framework, like JUnit for Java. If you did that create your first tests with Selenium 2 / WebDriver.

Here are some helpful links:

You should also trial Selenium IDE to understand what Selenium can. It is just a Firefox plugin and is easy to understand.

1
  • I strongly disagree with "nobody can answer this question". This question is asked all the time, and it is hard to answer only if your experience in languages is limited. If you have first-hand experience in dozen languages, you can see beyond trivial differences in syntax. Then, power of language like Python over Java is obvious. To expand your programming horizons beyond Java, read articles like (paulgraham.com/avg.html)[beating the averages] about power of higher languages like Lisp and Python. Jul 9, 2014 at 17:31
1

Been the manual QA, moved to automation over 15 years ago. Can now code in Java, C#, C, Python, etc, etc... written automation tests in more tools/languages than I care to remember.

Trust me when I say learn Python and WebDriver. You will be productive with this combination faster than any other, and since you are learning as you go, your employer will really appreciate you not wasting the money they give you. Get productive and then go back and learn more languages - never stop learning! You will also appreciate it later when you can easily teach someone else Python/Webdriver to be your helper.

Besides, the expressiveness of Python/Webdriver allows you to write lines like:

  test_passes = True if "My text" in webdriver.find_element_by_tag_name('html') else False

which are easy to understand even without comments - which you will need lots of.

1
  • A valid opinion but just that. I could make the same argument about learn Ruby!. This opinionated question and answer are not well suited to our format. Jan 27, 2017 at 14:46
1

If you are testing web applications then you can start with Selenium IDE

http://www.seleniumhq.org/docs/02_selenium_ide.jsp#ide-features

It requires no programming knowledge, you can record what you do in the browser, as a "macro" that you can later edit (still requires no programming knowledge). The benefit of this approach is that you can get productive very quickly, still if you later want to learn programming you can export all your Selenium IDE test cases to Java/Python/.Net etc

0

I would start learning Java. The reason for that is that most Selenium/Webdriver lessons and books are written with Java in mind. That said, there are some really good guides and tools for Selenium and Python(holmium.core is a really nice framework to build robust automation suites with Webdriver). I'm sure there are tools and guides for other langues as well, but to my knowledge Java is a first class citizen when it come to automation using Slenium/Webdriver Besides the actual language you should familiarize yourself with unit testing frameworks such as JUnit as these are often used as test runners in UI automation suites as well. The other thing is to learn about the DOM and how to interact with it.

0

I found that Microsoft`s Visual studio really easy to get into its automation tools.

Started with the simplest of them, Web Performance and Load tests. These are really easy to get your fingers arround and there are plenty resources/tutorials to help you on your journey.

After I got comfy with these I went to CodedUI and by trial and error for a couple of months things started to pay off and I began, baby-steps, to get the hang of it.

Of course, Selenium is another entry level tool for most people.

0
  1. Skill up to JAVA - Head first java is an excellent option
  2. Move onto Selenium Webdriver
  3. Some resources to help you:

    jroller.com/selenium/#tutorial

    university.utest.com/selenium-basics-part-1-how-to-set-up-selenium

    qaselenium.blogspot.in

    software-testing-tutorials-automation.blogspot.in

    selenium143.blogspot.in

0

OP: Try Python for afternoon, and you will see how much more productive you will be in Python than in Java. Especially if you don't have comp science education.

Java is popular because it is "standard" - it does not mean it is a good fit for programmer, especially for beginner.

To answer your questions:

1.) Having no knowledge of programming languages, which is the strongest language for automated QA?

You mix two different problems: how to learn programming, and how to automate QA.

Python is widely considered as the best language for beginners or for experts in something else, who just need a language to write simple scripts to do some data manipulation. Only later, when you are concerned about performance issues, or being compatible with other systems, you should start thinking about which exactly language you should use.

Java is widespread and popular, but it does not mean it is optimal for QA. Also, programmers who did not learned Java as first and only language, routinely learn other languages as needed. Or as option, you may find position where Python for QA is OK - QA test might (and sometimes are) written in different language than main application. Main app might require specific language for performance or compatibility. Tests only require web automation, which means Selenium. Using different languages is debated often, ie: Selenium - advantages and disadvantages of using Python vs C# Python is very strong for QA testing.

It is funny how such simple question (language selection) will evoke strong emotions. One reason is that language you use shapes the way you think (and program), and this is also reason why this answer will be downvoted by people who want to protect they way of thinking/programming as limited to Java. Happens on forums all the time. See also Linguistic relativity - how language influences cognitive process.

2.) I have some understanding of Selenium but I'm not sure which suite to use. Should I be looking to use Web Driver?

Yes, but it will be few months later, when you will be competent programmer in language of your choice.

3.) I understand the concept of creating scripts to perform tasks,...

Scripts are programs. Just people who are used to "bondage and discipline" languages like Java, consider programming in languages which do not require such rigorous discipline (Python, perl, shell etc) something less than real programming, and call it "scripts". It makes no sense, test scripts are just programs.

You automate task which are most effective (best bang for the time spend writing them).

0

I would approach this as follows:

  • Use the Firefox browser SeleniumIDE plugin. You'll be able to write tests you can run in a few minutes. You'll learn a ton about html, js, selecting elements, css, id's, classes, naming tests, codifying Given, When, Then and so much more. Once you are comfortable with that, modify the tests to use a page object pattern with javascript variables (don't worry if that doesn't mean much now) to identify the elements.

  • Study webdriver. Eventually you'll want to move from the seleniumIDE (which is great but strictly limited for long term projects) to a programming language where you use a driver like Webdriver in combination with a programming language like Python, Ruby, etc.

  • Learn programming. Start learning Ruby/Python and little bits of shell scripting. Buy and read books, use sites like code academy and code school. Study, study, study. It may takes months to get a toehold, years to become productive and decades to become highly proficient.

  • Combine programming and webdriver knowledge. Once you have some familiarity with a language, look to start using the test frameworks that are available for that language. This may be selenium webdriver but it could also be (for Ruby for example) a framework like rspec-capybara

Notes:

These are somewhat sequential but you can also do some of the steps at the same time. For example while writing seleniumIDE tests you can be learning a programming language and the test frameworks it supports.

The term "strongest" language doesn't have clear (or any) meaning in terms of software and automation. You could specify characteristics such as "easy to learn for beginners" or "produces most efficent code" or "well suited for automation". If the last case it's probably going to be the question of what testing frameworks exist for that language.

Scripts are useful automation tools. They are just limited in terms of long-term growth and maintainability. You will want to use a modern object-oriented language to write concise yet easy to read and maintain, programs. Even then, command line scripts, e.g. in bash, can be an essential part of automating testing as they can be used to setup data, files, databases, etc before or after automated tests are run.

0

The path Manual QA -> Automation QA is not optimal. You can:

  • Spend 3-5 years as a programmer, then 1 year of automation.
  • Or you can start with test automation right away and spend another 20 years torturing yourself. And after that there still be a slim chance you'll be doing it right.

Test Automation is not for a QA who learnt how to write code. It's for programmers who know how to test. Without proper skills in programming you won't be able to implement a proper Test Pyramid because it requires the knowledge of Dev frameworks. You won't become a Quality Assistance because you'd need to give technical advice to Developers.

Of course there is still something that you can do without deep programming skills. And this is very common among AQA. But the results are:

  • Either Devs write the technical part and then you write the actual test cases on top of that. But this is rare since not a lot of Devs know how to or want to write easy-to-use frameworks.
  • Or you'll be writing plenty of fragile System Tests that take a lot of time and don't bring satisfaction to the team.

The other problem with MQAs who became AQAs is that Dev team often doesn't have respect to these people. That depends on the culture of course, but I noticed this unfortunate behaviour in multiple teams. And this is hardly the career that most people want.

So if you really want to become an AQA my advice is to change the career path and become a programmer. After that if you still have a passion for testing, you can start specializing on test automation.

Not the answer you're looking for? Browse other questions tagged or ask your own question.