Friday, September 12, 2014

For beginner QA Engineers

What is QA? What is the main role of QA Engineer? How you can help developers? How to be sure that you’re checking right things? What is bug? What’s error and what is fault?

If you’re just starting your way in SQA, you’re giving yourself this question and trying to find answers in Internet. There are many books and articles in Internet, but this article will be handbook for junior QA engineers.

I was doing development, when I found some little bugs and XSS in our project and started doing QA. At first I was just trying to find all bugs, faults, errors in our project without any test cases. When your project is under development and there are new features, without test cases, without steps you’ll lose your time and you can’t help your team.

First of all you need to ask yourself, do you really want to be QA Engineer or not. What is important for you? You want to find bugs, because you like finding bugs or you want to find bugs, and help your team, to fix bugs and have ideal project.

The role of QA Engineer is neither finding mistakes in project or helping team in improvement of project. At first, you need to talk with team and tell them, that you find bugs for helping them to have ideal project. It’s very important for QA Engineer to be in touch with development team. Very important thing is to be in the same room with developers. Sometimes developers can’t reproduce steps, and QA Engineer needs to help developers to reproduce bugs, show them small bugs. In my opinion, based on my experience is having short standups with team. QA Engineer needs to know everything about team, what are they doing and what plan to do. QA Engineer needs to help team lead with estimation of tasks and scheduling. 

Everybody in team, especially QA engineer should remember about quality of product. This is what client expects from team. Quality Assurance Engineer should remember that he/she is responsible for quality of product. Product with bugs, faults, error etc. is not a product. QA Engineer must be sure that product has high quality before lunching it.

From what QA Engineer needs to start? If you joined team in the middle of development, first of all you need to read documentation of product, understand futures, and know deadlines and iterations. After that you need to write for youself test cases, collect your cases in suits, develop automated tests, run unit tests etc.
What is test case? Why QA Engineer need to write test cases?

Test cases will help QA Engineer to understand what steps he/she needs to do to be sure that product has no faults, bugs and errors. Being responsible for quality of product you need to test is as user, as developer, as client. When you’ll start thinking as user or as client you’ll start writing test cases as user or as developer. You need to write steps, how you’re going to test product. In future, when you’ll run test cases, write down successes and failures with dates. You’ll have archive of your product development stage. When developers will add new futures you can view on what it can affect and you’ll know what to test. At first stage write your test cases not only in some document/tool also write on paper and put it on your desk. Test cases are your steps that you’re doing when testing product. It’s very important to have detailed information about your steps.

There are many types of testing. White box testing, gray box testing and black box testing.

There are two kinds of QA. Manual QA and Automate QA. Majority of developers thinks that manual QA is just clicking on buttons, writing some text in text boxes and that’s all. Frankly speaking many of them are just copying code from one file into another, changing variable names and saving it. Manual testing starts from writing scenarios, writing test plan, executing test cases, tracking bugs, doing regression testing etc. So, if someone tells you that manual QA engineers are just clicking on buttons, just smile.

For doing manual testing QA Engineer doesn't need any tools. You just need to know stages of testing. Always remember, that QA Engineer is doing testing not for finding bugs for developers, he/she finds issues for product to be without bugs. When developers are fixing bugs, QA Engineer needs to check if everything works properly. Sometimes developers fix some bugs and because of that something goes wrong. QA Engineer ought to know what is connected with that function or block. Checking after bug fixing is regression testing.

There are many tools (also free) which you can use for doing load testing. Load testing is for founding out how many people can use your product at the same time. You need to know maximum number of users, and tell developers to optimize code for increasing number of users.

QA Engineer need to understand when he/she needs to use automated testing for project. Not every project needs to be tested with some tools. In course of time QA Engineer will understand which methodology to use for testing each product. After writing test cases QA Engineer can understand, does that project need automated testing or no.

You need to remember that there are no automated tests that cover your entire project. You need to do automated testing, but at first you won’t concentrate on it. Just try to understand what your team expects from you. When product is going to be released you need to be sure that it has high quality. That’s your main job.

For automated testing you need to know/learn some scripting languages. If you don’t know any scripting language you can’t write automated tests, but you can use tests that others posted. QA Engineer needs to run unit tests that developers wrote. There are two types of people: people whi think that unit tests should write QA Engineer and people who think that unit tests should write Developers. In my opinion everybody is right. Everybody can write.

If QA Engineers are being late with unit tests, Developers should help them with writing. If QA Engineer knows how to write unit tests, it’s very big plus for him.

Many developers (it’s bad, but QA Engineers too) don’t know what is bug, what is failure, what is defect and so on. First of all QA Engineer must understand meanings of these terms. Bug is the result of coding error and defect is a deviation from the requirements. If there is a defect it doesn’t mean that there’s a bug in the code. Error is a mistake, misconception on the part of a software developer. Failure is the inability of a software system or component to perform its required functions within specified performance requirements.
Also, QA Engineer needs to distinguish bug types. If there’s a small cosmetic bug don’t write that it’s a blocker one. There are such types: Trivial, Minor, Major, Critical, Blocker. If you find critical or blocker bug immediately tell about it to your team lead.

It’s very important to do right bug tracking. When QA Engineer is opening a ticket for developer he/she needs to write all steps very detailed how developer can reproduce bug. Sometimes developers are having problems with reproducing bug and in my opinion it’s because of not detailed description. You need to understand what developer needs to know for reproducing bug. For example, what OS have been used, what was screen resolution and so on. With detailed description of bug Developer will fix it easily and without coming to your computer for asking to reproduce bug for him.


As QA Engineer you need to understand that you’re last human who is testing product before releasing it and you’re responsible for quality of product. You’re helper of developers, who is finding bugs not for laughing at developers, you’re finding bugs for making product work properly.

No comments:

Post a Comment