Saturday, March 14, 2015

Types of testing

Hey everyone...
        Now, here is a post that will interest if you are aiming for foundation level of testing certifications such as ISTQB, CSTE, etc., Even if not, these information that is good to know if you are remotely associated to software testing. And what more, if you are a QA professional and looking for a job change, this is the first thing you would want to refresh. Here, are the most commonly and widely used types of software testing methods across the industry. Yes, we agree that there is a plethora of websites having this info. Our blog just comes with the USP that, the descriptions presented here are from QA Veterans with decade of experience in Software testing. And all of it are here for you, free of cost. Read on, and get some good dose of knowledge on testing types.

Testing can be broadly classified into two types, "Static" and "Dynamic". All other testing types will fall under any one of these major classifications.

Static Testing :- Now, this is the testing activities that the QA Team does, even before the actual testing starts. In other words, This the bug finding activity that can happen even before the development phase starts. Confused? rings a bell in on how testing can happen without the actual product to be developed is not in place? Yes, it can. The reviews. You read it right. The requirement walk-through, development design review, peer reviews, everything is considered as an opportunity for testing in a tester's point of view. Consider this, A tester is reviewing the requirement document to understand it and finds some deviation using his previous knowledge in the product/domain. Yes, that's also is a kind of static testing. 

Dynamic Testing(Functional and non-Functional):- This is part where the Tester's rules. During this phase only they will have hands on experience with the application under test. But wait does the tester will get handed the application straight after its developed? Hopefully not, if that organization is practicing the CMM. Let's go step by step.

Let's assume that, We need to develop  a new page in a job portal website to show "jobs applied for the past one week" as per a client's Project Request . With this, we shall walk through the types of testing that can be applied for this activity.

Unit Testing:- So, both the Dev and Testing team understood the requirements and what happens next, Developer team will come up with a Technical Design document and build the webpage as per the Design. Once the coding is completed, The Developer will do a round of testing of his own code and make sure that it is working as expected. This is Unit Testing. This happens before giving the code to the Testing team. Most of the minor and naked defects would've been found and rectified by the development team at this stage.

Integration Testing:- Unit testing is done by isolating the newly developed page alone and check is done for its functionalities alone. However, the newly developed code should work correctly when it is put into actual use. That is, when the page becomes the part of the web site. In other words, when the page is integrated to the Website. Testing the newly developed page after integrating it to the actual website is called integration testing. This testing can be done either when the unit testing is completed or after one round of Testing by QA Team depending on the complexity and client's preference.

Smoke Testing:- Once the unit and integration testing is completed, the code will now be formally handed over to the QA Team for testing. This code migration from Dev environment to QA Environment or any environment will always be handled by a separate team in most of the organizations. It's the configuration Management team that does the job. Once the code is available  in QA Region, testing team will not directly jump into testing the crux. Usually, a preliminary testing will be done to make sure that the basic/key functionalities are working. Only after which, Testing team will enter into formal test cycles. Without the basic/key features working, there is no point continuing further testing. Smoke testing is done basically to check whether these functionalities are working and whether it is good to go with further testing.

Sanity Testing:- Once the code is delivered to higher test regions , there will be some very high level testing done by the QA team to make sure the system/region is not broken due to the new build. This is called Sanity testing. Now, there might be a confusion between Smoke and Sanity testing. Let's put it this way. Smoke testing is done to make sure that the further testing will be meaning full or not. Sanity testing is done basically to ensure the system stability after the new code is introduced.

System Testing:- This is the area where full test execution of the project will happen. QA will test the length and breadth of the application functionalities including the usability, data, etc. 

End to end Testing:- This part is nothing but if one application under test is interacts with other application(This might be a third party application or different application providing different services within the organization itself) . In our example(job portal website to show "jobs applied for the past one week"), say when the user clicks on the a specific job application status it might navigate to the respective company's career website to show the application status. So this part needs to get tested. I mean full end to end process.

Regression Testing:- The purpose of this testing is to make sure existing functionalities are not broken due to new code. Normally regression testing is done after the completion of all formal testing steps are done to make sure that the newly developed functionality is working fine. Its a common practice for every organization to have a separate window for conducting regression testing. Mostly after the testing cycle us completed and before moving to higher regions like XAT/UAT/Production (XAT/UAT are regions which are dedicated for client testing which will be an exact replica of Production environment)

Performance Testing:- This is the Non-functional type of Testing, where application will get treated with heavy load of users and its behavior. For ex, QA will be testing the behavior of the application when a large data chunk needs to be handled. Say, how the application will behave when it encounters its peak capacity, etc.,

Security Testing:- Infosec/Appsec testing as it is famously called, is another non-functional testing type where the application is tested for security. Whether it can be hacked easily, whether there is any possible data leakage points, etc., Though non-functional, this testing plays a crucial part in most of the applications that deals with user data ranging from banking to social networking.

Beta Testing:- So, Now our newly built web page has passed all the above testing hurdles and standing proud after the sign-off from QA Team stating that the new code is fit for production. The new page will now be released to a specific set of audience who is a small subset of the target users of the application. The users will use the new application and provide their feedback. This is called as beta testing Based on the feedback, minor changes are done in the application if needed before releasing the product to the general audience.

You may want to thank us now for the gyan on types of testing as it will be useful for your certification, your interview, etc., But wait, there is a lot to come.There's just one more formal post on various standard testing techniques post which, our blog will jump into explosive mode and explore a lot of cutting edge testing technologies and the current affairs of the industry. Stay tuned. Cya!!!

No comments:

Post a Comment