When I joined as a test engineers in a MNC,I was given an automation role early in my career. But I had a question to justify myself why so many teams to test a single application which is being developed?
After a few years of testing I came to a conclusion about the fact. I am trying to express this experience .
Let me show you what type of bug/defect may arise during testing of an application.
If system is not functioning properly, its a functional defect. If system is not performing well, its a performance defect. If system is not usable, its a usability defect If system is not secure, its a security defect require different skill set, different techniques and different type of test cases. Now it is very rare to have a test engineers having all skills. Even if they have it ..it is impossible to cover all aspect if it is not parallel activity within the given time frame of testing.
To identify these defects
Software Testing Types:
In my view testing can be divided into three broad type of testing.
1. Black box testing
2. White box testing
3. Gray box testing
Black box testing – Internal system design is not the concern. Tests are based on requirements and functionality.we test the input and the corresponding output. The output has to be as per specification and requirement.Test Engineers do not look into the code at all. Most of the functional manual and automation testing are black box testing.
Functional Testing: This is such type testing where we check if the application is as per requirement. Only requirements are traced and checked.
System Testing: System testing is a subset of black box testing where the output is concerned. For system testing the output has to be as per specification. It may cover different parts after integration and on a complete software.
Retesting: In this technique a portion of a testcases is executed to check if the faulty portion of the application is corrected or not. Majorly a black box approach is taken.
Regression Testing: Post retesting of a bug, it is test engineers responsibility to cross check if the bug fix or any change in the application does not give birth of a new bug somewhere else into the application. i.e the regression does not affect the application.The whole testcase set is executed once to check the integrity of the application. The best approach for this case to automate the previously pass manual testcases and cross check later if the scripts are running fine.
Automation Functional Testing: By this type of testing all the older flows are recorded and comes handy when a new module is getting added or the regression due to any bug fix,patch update is flawless.
Integration testing – if integrated modules after integration are working fine or not is the main testing concern . Modules are typically code modules, individual applications, client and server applications on a network, etc.
Sanity testing – When I say it is a good idea to automate the previously passed manual testcases. The automation team needs a minimum criteria to accept the application is running fine and up for automation. The test to conduct if the application is all right for automation is called sanity testing.Purely automation test engineers carry out this testing.
Alpha testing – This type of testing is done in front developers. Here virtual user environment can be created for this type of testing. Testing is done at the end of development. only minor design changes may be made as a result of such testing.
Beta testing – This type of testing is done by end-users or others. Final testing before releasing application for commercial purpose. All target customers ,eager and early interested test engineers takes part in this phase.
Installation Testing: In such testing engineers make sure the deployment of a software as per system requirements. The application needs to be fully compatible with different hardwares.
White box testing – Internal logic of an application’s code are the prime look after area. Test engineers look into the internal code and logic to find out bugs.Also coined as Glass box Testing.Tests are based on coverage of code statements, branches, paths, conditions.
Unit testing – Software components or modules are called units. When we start testing of those individual modules.We call it as unit testing. Programmer who has the detailed knowledge of the internal program design and code carry out this types of testing. may require developing test driver modules or test harnesses.This is a subset of white box testing.
Gray box Testing:
My understanding is little bit different here. This is such type of testing where developer and test engineers both are required. In this technique first we look into the core testing part and secondly the developer look through the code for checking the integrity of the application. Say I made a web application. When I start loading the page it gets loaded correctly but takes a lot of time. In this example the application is working correctly but not as per web standard. These cases gray box testing comes handy.
Incremental integration testing – This is again a subset of gray box testing. Here developers go on increasing modules one after another which are independent to test by test engineers. So basically it is a bottom up approach for testing i.e continuous testing of an application as new functionality is added. As both the parties are involved I consider itself a gray box testing.
Smoke Testing: This is a test conducted by subset of automation test engineers called performance test engineers. They test if the application is functionally acceptable to go for performance testing. Such testing is called smoke testing . Performance testing is a gray box testing where along with test engineers (performance) the developer takes part.
Load Testing:Load testing is to check a system’s behavior under both normal and anticipated peak load conditions.Test engineers checks response of the application under various load condition. Stress Testing: Stress testing is a form of testing that is used to determine the stability of a given system or entity. It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results.as per-wiki
Performance Testing: In this type of testing, test engineers checks about different standard and permitted time slot for different pages under different load.Any deviation from the standard is treated as performance bug.All DBA engineers,Developers,test engineers look closely to the application. API Testing:An API (Application Programming Interface) is a collection of software functions and procedures,called API calls, that can be executed by other software applications.So GUI testing is very different from traditional testing.A sql development experience is required to test the APIs.
Acceptance Testing: Post all conventional testing it is tern of the customer to test the application as per his need. That is what is given is delivered testing. Based on different standards and requirements customer prepares a checklist or testcases.They try to match the output with actual output of the application.An individual test team or third party test team can do it.
Accessibility testing: Accessibility testing is such type of testing where test engineers checks more details about the contest,layout of the page elements, for variety of different circumstances. More details can be found http://www.w3.org/WAI/eval/users.html
Upgrade and backward compatibility testing: This is applicable for very big companies and a large customer base. If a company has a large customer base across the globe, they have to consider the equipment used by the customers. It may happen that the US customer is using upgraded version where an Indian customer is still using older versions.In this scenario the forward and backward compatibility comes into picture. By this type of testing test engineers make sure that the application’s core functionality is unchanged in different versions used.New version of the application is compatible enough to work with older version of the application.Upgrading testing is somewhat same as backward testing. Along with all those feature test engineers look for the learning curve to adopt the new version.By this testing test engineers make sure the old versions users are comfortable enough to upgrade themselves for the new version.
Internationalization and localization testing: When a company has a large customer base in different countries.So they need to take care compatibility and consistency across localized versions of the application. Automation is better option for this type of testing.
Usability Testing: Usability testing is a black-box testing technique. The aim is to observe people using the product to discover errors and areas of improvement. Usability testing generally involves measuring how well test subjects respond in four areas: efficiency, accuracy, recall, and emotional response. The results of the first test can be treated as a baseline or control measurement; all subsequent tests can then be compared to the baseline to indicate improvement. Performance — How much time, and how many steps, are required for people to complete basic tasks? (For example, find something to buy, create a new account, and order the item.) Accuracy — How many mistakes did people make? (And were they fatal or recoverable with the right information?) Recall — How much does the person remember afterwards or after periods of non-use? Stickiness — How much time he/she spends Emotional response — How does the person feel about the tasks completed? Is the person confident, stressed? Would the user recommend this system to a friend?…wiki