Category Archives for "Test Automation"

Why functional testing is important to test automation
Apr 12

Why functional testing is important to test automation?

By Farvin Gonsalves | Test Automation

Do I really need to know functional testing if I’m a test automation engineer?

When I first started learning about test automation I didn’t care much about functional testing. I thought being a technical tester meant learning a programming language and mastering tools like Selenium and Cucumber but I was so wrong. In my post 7 things you need to learn before you move to test automation I have listed functional testing best practices as something you need to learn. Now let’s find out why and how functional testing is important to test automation.

100% Test Automation

Do you think all the tests in a regression pack are automated? With constraints on time and budget, it’s not feasible to automate everything. While deciding test cases for automation consider repeatability, risk and business value of automating that test case. The test cases which are not selected for automation need to be run and maintained manually.

Writing Functional Tests

You may not always have a regression pack to automate and will be asked to write your own functional tests. So, knowing how to write good functional tests is vital. Well written test cases are far easier to automate than ones that are poorly written.

Unstable Requirements

When testing features that are likely to change, (either in development or requirements) it is highly likely that you will need to rewrite your test cases and automation scripts. Repeatedly doing this will add constraints on the project, increasing its expense. Therefore, testing these features is best done manually, as is maintaining those test cases.

Technical Issues

Some systems are just not feasible enough to be automated. This could be because of complex environments, legacy code base, new technology or a system that requires human interaction which can’t be replicated. In these cases, functional testing saves the day.

Small Projects

Small projects where test cases will be run only once or twice are not good candidates for automation. As the value in automation is achieved over a period of time which includes multiple runs of tests, small projects usually benefit with functional testing as it’s quicker and the costs are low.

Exploratory Testing

Exploratory testing is a functional approach and is often used in tandem with test automation. Exploratory testing is done without test cases and relies on the tester’s creativity, freedom and experience. After a system has gone through a series of automated tests, exploratory testing is used to uncover new defects.

Both test automation and functional testing have their benefits, quite often they work well in tandem. However, many functional testers have concerns about their role becoming obsolete as it can be replaced by automating their tests. While this is possible, there will always be a place for functional testing.

Do you think that there are any exceptions to the points that I have made? Please leave a comment, I’d like to hear your thoughts on this.

7 things you need to learn before you move to test automation
Apr 05

7 things you need to learn before you move to test automation

By Farvin Gonsalves | Test Automation

When I first started out learning about test automation, I jumped at learning Selenium. I had no idea what Selenium was and how to use it so I picked a course on Udemy and started learning how to use Selenium using Java. I could follow along and was learning how to use Selenium but since I had no goal in my mind and no plan of action, my approach wasn’t effective. I kept skipping a few videos thinking they were not important. Soon I was bored.

I thought test automation was just about learning an automation tool but it’s so much more than that. It’s not just the tool I needed to learn but concepts, approach, process, best practices, frameworks and development methodologies as well.

So what is it that I am learning?

1. Automation Concepts: You need to increase your technical knowledge. Focus on automation first, that will include why we automate? How we automate? What to automate? Test automation frameworks, Automation pyramid. How should you do this? Ask for help - There’s Google, developers whom you know or work with, automation staff in your company/client and my blog of course.

2. Programming Language: If you want to automate a test case you will have to learn to code. There are many programming languages, some popular ones include: Java, C#, Ruby, Python and Javascript. I have chosen Java because I learnt it in my university. So all I need to do is refresh my Java skills. What if you’ve never coded before? Don’t worry just pick a language and do a bit of research regarding support for the language you pick.

3. Automation Tools: I’ve chosen to go with Selenium WebDriver because its free and open source. Since you’re learning how to use a tool, you will want something that is easily accessible. Selenium is a browser automation tool and is used for GUI tests. SoapUI is a tool which I’ll be using for API testing.

4. Functional Testing Best Practices: Most of you already have this one. There may be times where you need to write test cases. You may be handed over a regression pack to automate and knowledge of functional testing will help you identify well written test cases and since there’s no 100% automation you will have to run some of the test cases manually.

5. Structured Query Language (SQL): You may already have used SQL as a functional tester, if not you need to learn SQL. Reading data from databases is mostly what you will be doing. But having a basic knowledge of CRUD (Create, Retrieve, Update, Delete) operations and the different types of databases will be vital to you as an automation engineer.

6. Version Control: Test automation code needs to be maintained and version control systems like Git and Subversion help with this task. Version control has many benefits like storing code, reverting to previous versions and backup. I will experiment with Git and Subversion to see which one fits my needs the most.

7. Continuous Integration: Continuous Integration (CI) is a build automation process. Developers check in code into a shared repository and the CI server creates a build, runs unit and integration tests and deploys the build. The same concept is applied to test automation code as well. I will be using Jenkins as my CI server.

That looks like a lot to learn!

I know I will not be able to master all these technologies before I move into test automation but the goal isn’t to master them rather to learn enough to do something useful. Consider Pareto’s Principle in this case, learn 20% of the technology which you will use 80% of the time.

I’d like to conclude by saying start by learning automation concepts and learn the basics, the rest of the items on the list will follow. This post was about “what to learn”, I will create a “how to learn” tutorial series for each of the items on the list.

Do you agree with my list? Have I missed out something? I’d like to hear your feedback on this post. Thanks for reading.

Mar 28

My first step towards test automation, what will yours be?

By Farvin Gonsalves | Test Automation

Are you a functional tester that wants to move to test automation? “I’ve been doing functional testing for years now and I want to move in to test automation.” Have you heard that somewhere? Is it you who keeps saying it to yourself or to your fellow workers? That’s great! but where do I start? And what should I do?

Once upon a time...

Let me start by telling you my story. I’m Farvin and I am a functional test analyst who is moving into test automation. I’ve been a functional tester for more than a year now. I started out as a graduate tester and was trained in functional testing. I didn’t think I would stick with it though as I wanted to be a Java developer to use my degree in computer applications.

Even though I was a functional tester I wanted to be more technical. I was happy to find out that Planit Software Testing, the place where I work had a non-functional stream as well. I was excited and began researching on how do I move from functional to test automation.

I began learning Selenium WebDriver using Java during the time in the office while I was waiting to go on a client site. This lasted a week and I got bored. I couldn’t see how this would help me. I lacked motivation and discipline. I tried again but with no different result, I couldn’t focus or I would get easily distracted.

Something changes

When I got my first project and I was super busy. As a graduate tester, my first project was a big deal to me. I had to make a good impression to my test manager and the project team. Learning Selenium took a back seat. I was happy on my project, finding defects and running tests and my test manager was happy with me.

Soon I found myself working on a new project. This one was more demanding and more engaging. I learnt many new things, participated actively in sprint ceremonies, engaging with the business users and I felt great. It was a maintenance project and I was working with the developers and operations team closely.

Being around technical people, I realised what I was missing out on. That desire to become a technical tester which seemed faint started to become more alive. I decided to do something about it.

Taking my first step

It was time for my Performance Appraisal, which went great by the way. I decided to let my reviewer know that I wanted to move to test automation. He told me there was a process and got me started on that.

According to the process, I had to raise an interest at the PA, take a technical assessment test, self study and train in test automation and answer a technical interview. I prepared for the test and took it. Guess what? I passed the test.

The next step is self study and training. This is where I am currently. This is also the reason I’m starting this blog. The best way to learn something is to teach it to others. I have decided to relearn Java, followed by learning Selenium, Cucumber, Jenkins and SVN/Git. I want to use this blog to share what I’m learning. I also want to help testers by sharing my experience of moving from functional testing to test automation.

Lessons learned

I procrastinated and wishfully thought about getting into test automation but unless you take any action in this direction nothing will happen. So I’d like to ask you to take action. Reading a blog or watching a video about automation may give you a “feel good” feeling but unless you are actively learning about automation, you won’t be making any progress.

Taking that first step is always very difficult. I was learning about automation when I had some down time but it was aimless learning. I didn’t have a goal in mind, wasn’t really motivated and was learning for the sake of learning, sometimes just to pass my time. But what’s the difference now?

Now I have a burning desire, a plan to make this desire into reality, now I know I am moving into test automation. Having a desire is really important to start anything, that’s what keeps you going.

It's your turn now

It's time to take action. Now that you have read this blog post, would you be kind enough to leave a comment with the action you’re going to take. I’d also like to know how I can improve my blogging skills, so please feel free to point out any mistakes I did or anything I can improve on. Go ahead and post a comment.