Friday, September 12, 2014

For beginner Testing Engineers

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

If you’re just starting your career in Testing, you’re giving yourself these questions and trying to find answers in Internet. There are many books and articles in Internet, but I think this article will be handbook for junior Testers.

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

At first, you need to answer yourself, if you really want to be Testing Engineer or no. Do you want to find bugs, because you like testing or you want to find bugs in order to help your team, to fix bugs and have ideal project.

The role of Testing Engineer is neither finding faults in projects, nor helping his team to improve the project. It’s very important for the Tester to be in touch with development team. A very important thing is to be in the same room with developers. Sometimes developers can’t reproduce steps, and Tester needs to help developers to reproduce bugs, show them small bugs. Having regular short meet-ups with the dev team is very useful. Tester needs to know everything about the team and what they are doing and what  is planned to be done. Tester needs to help the dev team lead with estimation of tasks and scheduling. There are some aspects that developers don’t think about and Testing Engineer needs to discuss it with team.
Everybody in the team, especially Testing Engineer should remember about the quality of product. This is what client is waiting from team. Testing Engineer should remember that he/she is responsible for quality of the product. Tester needs to be sure that product has high quality before lunching it; since any product with bugs, faults, error etc. is not a product. 

Where does the Tester starts? If you joined a team in the middle of development, first of all you need to start going throw the project. You don't need any documentation or something on paper. At first, all you need is the project. Try everything in the project and try to understand what it's doing, why it's doing it and what's can be wrong there.

What is test case? Does Tester needs to write test cases.

You'll find many testers who'll tell you that you cant test without having test cases and you need to start testing from writing test cases.
For being fast you don't need to write test cases, it's paperwork, and as a Tester you need to test your product. Your main function is helping your team to develop product without bugs. So for testing you don't need to write test cases. You need to test the product and write bugs, identify steps for reproducing bugs and make suggestions for improvement. It’s very important to have detailed information about your steps. Also, don't forget to write about environment where you've tested the product.

There are many types of testing. White box testing, gray box testing and black box testing.
You can find many people who are saying that there are two ways of testing: manual and automated. Automated testing is when you're automating steps for testing, that you would have to perform yourself, but you're giving a task to the machine and the latter is doing the work for you. So, automated testing cannot completely replace manual testing since it won't be able to complete the task fully. Always remember, that Tester is doing testing not for finding bugs for developers. Tester is finding issues for product to be without bugs. When developers are fixing bugs, Tester needs to check if everything is working properly. Sometimes developers are fixing some bugs and because of that fixing something is crashing. Tester needs to know what is connected with that function or block.

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

Tester needs to understand when he/she needs to use automated testing for the project. Not every project shall be tested with the some tools. By time, Tester will understand for what project what methodology shall be used for testing.

When product is going to be released you need to be sure that the product has high quality. That’s your main job.

For automating testing steps you need to know/learn some scripting languages. If you don’t know any scripting language you can’t write automated tests, or you can use tests that others posted. Testers needs\ to run unit tests that developers have written. There are two types of people: people of the first group think that unit tests should be written by Testers, people from the second group think that unit tests should be written by Developers. In my opinion both groups are correct. Everybody can write unit tests. If Testers are being late with unit tests, Developers need to help them with writing unit test. If Tester knows how to write unit tests, it’s very big plus for him.

Many developers (Testers too, unfortunately) don’t know what is a Bug, what is Failure, what is Defect and so on. First of all Testers need to understand the 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, Testers need to distinguish bug types. If there’s a small cosmetic bug don’t write that it’s a blocker. There are 5 types of bugs: Trivial, Minor, Major, Critical, Blocker. If you find critical or blocker bug you should immediately report to your team lead about it to.

It’s very important to do right bug tracking. When Tester is opening a ticket for developer he/she needs to write all steps in a very detailed manner on how the developer can reproduce the bug. Sometimes developers are having problems with reproducing bugs; and in my opinion it happens because they usually do not get detailed description. You need to understand what developer needs to know for reproducing bugs. For example, what OS was been used, what was screen resolution and so on. With detailed description about the bug, Developer will be able to fix the latter easily, without asking the Tester to reproduce the bug for him.

As a Tester you need to understand that you’re the last human who is testing product before releasing it and you’re responsible for the quality of your product. You’re the helper of developers who is finding bugs in order to have a properly functioning product.

No comments:

Post a Comment