Manual tester looking to move into automation - help required!

Hello everyone,

I understand that there are similar posts to mine already, but I am currently so perplexed as to where to start I thought it would be useful to explain my personal situation and get some insight from the pros :slight_smile:

I have been testing for 3 years now. This currently involves me manually testing websites. The thing is, I am aware of test automation but I am unsure of exactly what it could help me achieve, and what are the best tools to achieve it. I already use Selenium IDE, but only for basic time-saving scripts, eg: quickly fill in all forms on a page. I feel that this must only be the tip of the iceberg but I donā€™t know where to go from here.

I have tried to create scripts that will automatically run through an entire user journey in the past (both with Selenium IDE and iMacros) but with limited success - I often found that using the record function wasnā€™t good enough, and oftentimes my scripts would fail because the element could not be found etc.

To summarise, I have these questions:

  • What can automation do for me to make me more efficient and cover more areas with regards to testing websites?
  • What are the best tools to help me achieve this?

I have some HTML/CSS knowledge and also have access to Test and Production databases; could automation be used here?

I really appreciate your input! :smile:

Thanks

sad_muso

9 Likes

Step 1: Learn to code. It doesnā€™t matter much what language you learn, since what you need to learn most is the principles rather than the language. Depending on your environment, Python or Javascript could work for you. Java is also an option. All three languages have large, active user bases who can help you with your coding.

Step 2: Learn and understand the principles behind data-driven testing and the principles behind object-oriented programming. This will help you build cleaner code.

Step 3: Try it. Selenium WebDriver uses the same general principles as Selenium IDE, but does a better, cleaner job of it. Or use one of the many wrappers that simplify Selenium access.

One of the biggest issues with websites and record/playback tools lies in accurately identifying the web elements you need to interact with. Often to find the way to identify something you need to traverse and search the document object model (Iā€™m a big fan of Microsoftā€™s linq-type syntax for that - itā€™s a whole lot easier to find an element that doesnā€™t have a unique name or id using linq fluent querying than by the base Selenium API methods - unfortunately this is a Microsoft-specific tool as far as I know.

It doesnā€™t really matter if your first attempts are fragile and awful, as long as you keep working to improve them.

3 Likes

Hi James,

Thank you for providing us with some context to your situation. I will do my best to answer your two questions.

What can automation do for me to make me more efficient and cover more areas with regards to testing websites?

I will start answering this by asking a question - what is automation for you? If you are referring to what most people refer to as automation than I would say that it can do the following for you:

  • It can catapult you into learning how to program. Coding is always a great skill to have.
  • It can earn you the respect from other developers - you would no longer be known as a non-technical tester (not that there is something wrong with that, yet developers get excited those kinds of things.)
  • It can open up other opportunities for you where automation is seen as the way to go.
  • It can assist you in creating an automated regression checklist that could give you information quicker on whether or not the items on that checklist are working according to the test scenarios you specify.

(I know I added more things to the list that donā€™t relate to you being more efficient, but I did that because I think those are things to consider as well.)

Now, if you are referring to automation as just a tool to help you be more efficient in testing, then I would say that you are already automating; you are creating scripts in Selenium IDE. Sure you could learn how to code and then utilize Selenium Web Drivers to help you with those failures that you are facing in your scripts, but that wonā€™t necessarily make you more efficient. Remember, someone has to upkeep those scripts. And if you are coding then you are not testing.

There is nothing wrong with wanting to learn how to code and how to develop test frameworks but there is nothing wrong also with utilizing tools such as Selenium IDE to help you save time.

Ok, so up to know you are confident that you want to learn about Selenium Web Drivers and specialize in automation - thatā€™s great! If that is the case, then you can do the following:

  1. Learn to code - Pick a language that interests you, and that has a large, active user base; Python, Javascript, and Java come to mind. Afterward explore online platforms such as www.codeacademy.com (free account), www.egghead.io (free account) or www.codeschool.com (free account) that can provide to you with some structured learning. As you learn something new, put it in practice so that you can retain it. It doesnā€™t have to be anything related to testing, just something small that will allow you to utilize what you learned.

  2. Pick up Selenium Webdriver - Start reading about Selenium. You can start by looking at their website http://www.seleniumhq.org/ and then looking at other resources such as https://saucelabs.com/resources/articles and http://elementalselenium.com/. Once youā€™ve read about it, look for some course that can teach you hands on how to use Selenium; Software Development Courses. Beginner to Advanced Tutorials | Pluralsight is a cool course that teaches you how to utilize Selenium Web Drivers, and it teaches you about the Page Object Pattern. The only sucky part is that the course uses C#, but you can translate that to the language that you chose.

  3. Put your new skills to use - So you have learned how to code, and you have learned about Selenium Web Drivers and the Page Object Pattern, now go ahead and prepare a small sample that you can bring to your manager to demo what you can do. It is important for you to do this because you working on this will take quite some time, and if you do not get buy-in from them from the start, you may end up working on something that will never see the light of day. Now be careful, by you championing this new effort, you will have put yourself in a situation where you will need to deliver. So make sure you are ready for this before you ever demo.

  4. Get involved with the community - After you have done all of the above, your learning is not complete. It has just started. So stay involved with the automation community. Attend meetups and conferences that relate to automation. Continue to utilize those new things you have learned, and donā€™t forget to share with others as well. I follow the following motto: receive - retain - release. You will have received a lot of new knowledge and gained new skills, you will have retained and utilized your new found skills, but part of the learning also comes in sharing what you know with others.

What are the best tools to help me achieve this?

As Iā€™ve already mentioned, it depends on what you are looking to do. If you just want to use some tools that can help you be more efficient, you can look into Charles Proxy, JMeter, Postman. You can also check out https://dojo.ministryoftesting.com/series/resources for a larger list of tools. If you are interested in learning how to automate utilizing Selenium Web Drivers, then I think I may have already answered this question in my answer to your first question.

I hope this is not too long and that it proves to be helpful to you.

Best regards,
Alex Dillon

12 Likes

It sounds like you are on the right track already by using the IDE. But you say the tests fail and are not stable. You have your problem and solution already. Fix the brittle test. Keeping it simple is the easiest way to get something tangible without going in circles.

You are probably achieving more than you think you are, stick at it and as you fix those tests you will inherently learn how to program. Good luck and remember Google is your friend:
http://www.seleniumeasy.com/selenium-tutorials/selenium-locators

3 Likes

Thank you so much to all of you for responding with such useful comments. I think that my pathway to success now is to move from Selenium IDE to Webdriver. I have started to learn C# now as well, so this should assist me with writing more complex test cases. If I get stuck Iā€™ll report back!

Thanks again :slight_smile:

4 Likes

Hi, Jamesā€¦

I have a few off-the-cuff ideas here, but can I start by offering a reframe?

Instead of thinking in terms of ā€œmanual tester moving into automationā€, see what happens when you think in terms of ā€œtester learning to write useful little programsā€. That might allow you to approach your skills development from an alternative angle. You can certainly ask ā€œWhat can automation do for me to make me more efficient and cover more areas with regards to testing websites?ā€ You could also ask ā€œWhat do I want or need to get done as a tester, and how could the computer help me to get it done?ā€ My personal experience is that thinking the latter way gave me lots of authentic tasks (some of them quite simple) that made learning to program much easier. People learn most quickly and easily when they need to learn something.

Sure, programming can be used for automated checks. Iā€™ve also written programs for generating data; for modeling business rules and creating a comparable-product oracle; for obfuscating real-life data; for converting and/or massaging test data from one format to another; for visualizing coverage; for setup and configuration (and for checking whether the system is in an appropriately set-up state); for sorting and searching logs; for obtaining more extensive coverage of specific functions, either by randomizing or iterating through all the possible values for a given setting. Monte Carlo simulations can be a lot of fun.

You can also add depth to the checking you might already be doing. For instance, when performing a set of automated checks, I found interesting bugs by logging and graphing and analyzing the round-trip times.

Ask your developers and your team for testability. When youā€™re discussing new features or functions, ask for scriptable interfaces and log files, at least. Ask your developers how they might use tools themselves to probe the system; ask for help or offer collaboration in building tools. Be upfront about the fact that youā€™re learning; not all programmers are enthusiastic about mentoring, but many are when they become aware of a sincere student.

A good IDE can be helpful; on the other hand, some of them are so feature-rich that it becomes a little overwhelming.

Itā€™s not a new or current book, but Iā€™d recommend a look at Brian Marickā€™s Everyday Scripting in Ruby.

I hope that at least some of these ideas help.

Cheers,

ā€”Michael B.

13 Likes

Are you picking c# because app is when in c#? It may be in your best interest to learn the language the the program is written in as the developers can assist you as well. Not as many people use c# but it is solid mature language. I started learning how to code about two years ago and I learned C# as well. I can understand your journey. If you have a good relationship with your developers they will be an invaluable resource. Learning to speak the same language as the developers will make it an even easier journey.

I would highly recommend taking Michaelā€™s approach as well. Being able to use coding to help you test faster may actually be more efficient. UI testing is expensive in the creation, managing and maintaining of tests. The closer you get to the code though, the more you will understand where and how to test even better.

Feel free to send me questions with what you are trying to do. Getting into the web development tools for Chrome (or other browsers) can still help you with testing and trouble shooting, even filing bugs with better info for developers.

I would also suggest trying out bug replay to see more info on what the browser is doing.

2 Likes

Iā€™m unlikely to be able to provide anything of technical value, but I can give morral support. I cannot code. I am as far from a technical tester as they come, yet I managed to script, run and analyse automated test for one of our biggest applications, using MS visual studio. Our largest dev teams here based around.Net so they were able to help me get up to speed with C# - which actually is fairly easy once you get your head around the basics. I am working on building a regression pack ahead of an application upgrade and that will save our user acceptance testers a lot of tedious and boring work. Go for it I say - itā€™s a fun thing to learn.

8 Likes

Iā€™m someone who moved from Manual to Automation testing. I wrote a little blog post here that covers a bit of what you asked:

Iā€™ve been getting people that were traditionally ā€œmanualā€ testers started with automation using RobotFramework.
Itā€™s a generic open-source automation framework that is keyword driven based. What I really like about it.

  1. Open-source
  2. Wide range of supported technologies (including, but not limited to WebDriver)
  3. Does not require coding experience to get started, but supports custom coding as well.
    Iā€™ve got a github repo with a sample simple project that I made available at the Agile and Beyond conference a few weeks ago in Michigan (United States).
    https://github.com/kentfitz/RFStub
    Take a look if interested and if I can help at all, Iā€™d be happy to

As Test Lead I agreed with the Scrum Masters that testers should get coding work each sprint., and this helps people learn and maintain their coding skills

Iā€™d echo some of the points above regarding learning to code, but donā€™t be daunted by that as even a basic understanding of something like Java can really improve your automation. Iā€™d also agree with the sentiment that automation is a useful tool in the overall arsenal of a tester, but not the be all and end all (it has taken me some time to come around to this!)

I have a similar timeline to you, a few years ago I moved from being a manual tester with a few years experience, to working mainly in automation due to the direction my organization was moving in. Being a contractor at the time of the change (when I was looking to secure a full-time post) I jumped right into it with selenium IDE, but quickly ditched that for selenium webdriver with java. I was extremely lucky to have an experienced colleague who provided a lot of coaching, but one of the things us testers do well is pick up new things, and I had to pull myself back from overkill a few times. Once I was up to speed I was able to train up the rest of my team of manual testers (10+) to do the same thing. We test mainly e-commerce and account maintenance type web applications.

As time saving as IDE is, Iā€™d encourage you to try using selenium webdriver (if selenium is what youā€™re interested in), as you can still use this for time saving scripts, but they will be way more maintainable. You can start by exporting your IDE tests in the language of your choice, and once youā€™ve edited a few tests itā€™s easy to get the hang of.

You can definitely use selenium to conduct database validation, but probably not for prod databases, using jdbc/odbc drivers, this has been a huge time saver for me.

Not much of a technical help there, but this transition is not uncommon. If you do choose this route Iā€™d be happy to help with some pointers. Good luck!

1 Like

Gemma, youā€™ve got plenty of technical knowledge if you were able to figure out how to build and analyze automated tests in C#. Just because youā€™re not a full-time coder does not mean youā€™re not technical. It means youā€™re not coding full time, thatā€™s all.

Donā€™t sell yourself short!

5 Likes

A few resources I have:

-T.J. Maher
Co-Organizer, Ministry of Testing - Boston

3 Likes

Hey James,

Itā€™s great that you are trying to find better ways to do testing. Those are very good questions. Donā€™t be afraid to ask them even if someone else has already asked them before. Technology changes overtime, and you will get different answers each time, as some solutions go out of date, or better solutions emerge.

Let me answer your questions individually.


1. How can automation make you more efficient and cover more areas?

When it comes to functional testing, you can only be testing two things:

Existing stable features (Regression testing), or
New unstable features (Exploratory testing).

In regression testing, you want to find out - is the feature working correctly?
In exploratory testing, you want to find out - what do I need to test, and add to the test plan?

To cover more ground, you should automate regression testing, and spend more time yourself doing exploratory testing.

But if you are doing manual testing, you likely are spending up to 80% of your time testing existing features - running through the same user flows, the same actions, the same button clicks - again and again. These tests should be automated to save you time, so that you can do more exploratory testing, and cover more ground.

With good tools and good tools (and good governance - a separate topic altogether), you can make automated testing work for you, which I will get to next.


2. What tools can you use?

So there are a few kinds of tools, for different needs and different levels of expertise, and it is good that you have already explored a few commonly used ones, like Selenium IDE.

There are two types of test scripting tools:

  1. Macro-recording tools, e.g. Selenium IDE, Ghost Inspector

  2. Test scripting tools, e.g.: Selenium WebDriver, webdriver.io, CodeceptJS, UI-licious (https://uilicious.com) (Disclaimer: Iā€™m the creator of this),

There are many more tools available, but Iā€™ll just name the popular and - IMHO - the good ones.

Macro-recording tools:

Macro-recording tools are a good place to start, because it doesnā€™t require you to code, anyone can use it.

Simply hit the record button, perform some actions, and hit stop when you are done, and a test script will be generated for you.

But as you have noticed, there arenā€™t the most reliable tools because they tend to pick up the wrong identifiers for the elements on the webpage you are trying to test. Moreover, since the test script is wired to the UI code, if the UI changes - because of business decisions, or if your programmer decides to do some spring cleaning and change the identifiers - your tests breaks. This makes it pointless to automate tests for evolving products or in new teams with slacker engineering-testing governance.

Ghost Inspector is a popular paid tool because it has friendly user interface, and offers to run your tests on a cloud at a massive parallel scale (it means you can run a ton of tests at the same time, and you will start to need this when you have 200-300 automated tests).

Test scripting tools:

Test scripting tools offer you a few great benefits over macro-recording tools:

  • Precision: They are a lot more precise. Rather than worry about a macro-recoding tool picking up the wrong identifiers for the element you are trying to test, you are set the identifiers yourself.
  • Flexibility: Sometimes you just really need a bit of coding to get certain things done. For example, setting the check-in date you enter in a hotel reservation form to be always 3 days from the current date.

To have a lean and productive (=happy) engineering team, test automation is the way to go, as it is far more powerful and efficient.

But to use test scripting tools, you need to learn to code, particularly Java or Javascript.

The good news is, you already know HTML and CSS!

Iā€™d suggest that you start with Javascript, as it is the language of the web. And also because Java is really heavy for beginners to self-learn. Codeacademy is a good place to start learning Javascript.

Now, more about the test scripting tools themselves!

  • Selenium WebDriver is the mother of all test scripting tools - but itā€™s in Java, and has a high learning curve. It offers a lot of functionality, and itā€™s useful if you need custom scripts for fine-grained control over the testing.
  • WebDriver.io is like Selenium WebDriver, but implemented in Javascript. Again, use it, if you need custom scripts.
  • CodeceptJS is based in Javascript and is really easy to learn. It has abstracted the complexity of using the web driver libraries into very simple commands like I.amOnPage(ā€œexample.comā€), I.fillField(ā€œUsernameā€. ā€œJamesā€), I.click(ā€œRegisterā€)

If you are just starting out, Iā€™d highly recommend CodeceptJS, and then graduated to WebDriver.io when you need to implement custom commands.

Now, CodeceptJS is great, but I ran into some limitations using it for in my previous work. It requires you to have a very experienced and disciplined front-end engineer to write your UI code in a certain way for CodeceptJS to work its magic. For example, for I.fillField(ā€œUsernameā€, ā€œJamesā€) to work, the label must be associated with the text input field using the ā€œforā€ attribute to match the ā€œidā€ attribute of the input field. If you use placeholders instead of labels for your input fields, you would need to use IDs, CSS class selectors, or XPATHs to identify the field to test instead. This means that your tests are dependent on your UI code, making it difficult to keep these tests up to date when you have an evolving product with rapidly changing UI. (Another problem is that itā€™s not very smart at handling UI rendered progressively on the client-side, using new front-end frameworks like Angular, React, VueJs, but I wonā€™t go into detail as this is a fairly technical topic.)

Hence, Iā€™ve created my own testing tool UI-licious for the busy front-end programmers who donā€™t have the luxury to keep their UI code and test scripts sane and in-sync. :slight_smile:

Disclaimer again, Iā€™m the creator of UI-licious, and Iā€™m working full-time with a team of dedicated engineers on this, which is why it is a paid product.

Writing a login test in UI-licious looks like this:

I.goTo(ā€œhttps://waynecorp.comā€);
I.fill(ā€œUsernameā€, ā€œbruceā€);
I.fill(ā€œPasswordā€, ā€œihatesupermanā€);
I.click(ā€œLoginā€);
I.see(ā€œWelcome, Bruce.ā€);

I wonā€™t go into detail into how it works under the hood (itā€™s not some secret sauce, itā€™s just really long and technical). But one great thing about UI-licious is that this test doesnā€™t require you to have a UI written with the perfect code, it just need to have a UI that renders good enough for a human user (or tester) to use.

Thereā€™s more great things about UI-licious, and thereā€™s a 30-day trial if you are interested to try.

So I hope this helps you, James. All the best!

And if you want to have a further discussion on web testing, Iā€™d be happy to help you at hello@uilicious.com.

Shi Ling,
CEO & Co-founder, UI-licious
Follow me on twitter at @taishiling

3 Likes

The link seems to be dead unfortunately.

Hi everyone!
I am providing mentoring support in learning test automation based on my own Test Automation for beginners course that I developed. If anybody is interested, you can check my experience in my blog: http://overtest.me/#/about-me
If you want to know the list of topics, please contact me from this page: http://overtest.me/#/contact-me

1 Like

There is also useful information on this within the following:

Manual tester wanting to get into automation

How can Manual QAā€™s without a programming background learn Automated Testing?

What programming languages are good for novice testers to learn?

How can I switch from manual testing to writing automation?

2 Likes

Hi everyone,

Can someone tell me does learning java for test automation really helps? I find it there are many people learned about Selenium and java testing frame works to jump start their automation career. I have been learning java for a while now but when I look around there are many people who just learn Jmeter, postman and start working in automation. what are your thoughts guys? (I stutter sometimes and thought learning java reduce my time to speak ;)).

@mikeharris - How does this work in practicality if you donā€™t mind the ask? I think most of the devs here would worry that having people with little to no coding skills working on the sprints might have a delivery impact?

Could you share how this is managed within the sprint?