Testing and Quality Assurance, QA Test Methodologies
Ad hoc Testing (Buddy Testing)
A type of testing where a developer and tester work together in identifying bugs/defects in the same module. This type of testing helps testers make better test cases and helps developers make necessary changes early.
Unit Testing
Also known as Program Testing, it is a type of testing where the analyst tests or focuses on each program or module independently. It is carried out with the intention of executing each statement of the module at least once. In unit testing, accuracy of program cannot be assured and it is difficult to conduct testing of various input combination in detail. It identifies maximum errors in a program as compared to other testing techniques.
Continuous Integration, Continuous Quality
Continuous Integration is the key for Agile Development success. Integrate frequently, at least daily such that you are ready for a release as and when required. Testing in Agile becomes an essential component of all the phases of the development, ensuring continuous quality of the product. Constant feedback from everyone involved in the project adds to the quality of the product. In Agile, communication is given utmost importance and the customer requests are received as and when necessary. This gives the satisfaction to the customer that all the inputs are considered and working quality product is available throughout the development
Continuous delivery
Continuous delivery is an extension of continuous integration to make sure that you can release new changes to your customers quickly in a sustainable way. This means that on top of having automated your testing, you also have automated your release process and you can deploy your application at any point of time by clicking on a button.
Continuous integration
Developers practicing continuous integration merge their changes back to the main branch as often as possible. The developer's changes are validated by creating a build and running automated tests against the build. By doing so, you avoid the integration hell that usually happens when people wait for release day to merge their changes into the release branch. Continuous integration puts a great emphasis on testing automation to check that the application is not broken whenever new commits are integrated into the main branch.
Functional Testing
Function testing determines whether the system is functioning correctly according to its specifications and relevant standards documentation. Functional testing typically starts with the implementation of the system, which is very critical for the success of the system. Functional testing is divided into two categories − Positive Functional Testing − It involves testing the system with valid inputs to verify that the outputs produced are correct. Negative Functional Testing − It involves testing the software with invalid inputs and undesired operating conditions.
Integration Testing
In Integration Testing, the analyst tests multiple module working together. It is used to find discrepancies between the system and its original objective, current specifications, and systems documentation. Here the analysts are try to find areas where modules have been designed with different specifications for data length, type, and data element name. It verifies that file sizes are adequate and that indices have been built properly.
Smoke and Sanity Testing
Informal type of testing to make sure application is operational (the main features are working). This is usually done after a new update or modification.
Regression Testing
Re-testing after modification/update of an application. The purpose of this test is to make sure whatever update or modification was made to the existing system actually resolved issues and did not introduce new errors.
Scrum
Scrum is an Agile development method that emphasizes on team-centric approach. It advocates participation of the entire team in all the project development activities.
Characteristics of System Testing
System testing begins at the module level and proceeds towards the integration of the entire software system. Different testing techniques are used at different times while testing the system. It is conducted by the developer for small projects and by independent testing groups for large projects.
Stages of System Testing
Test Strategy Test Plan Test Case Design Test Procedures Test Result Documentation
Volume Testing
Testing a system with more users/data/load.
Baseline Testing
Testing a system with the minimum users/data/load.
Black Box Testing
Testing an application or any system without knowing the internal code/logic.
Robustness Testing
Testing an application or software with invalid data to ensure error messages are displayed.
Negative Testing
Testing an application or software with invalid data.
Positive Testing
Testing an application or software with valid data.
Functional Testing
Testing application functionality (includes links, GUI, buttons, edit fields, calculations, and check box).
System Testing
Testing both the front-end and backend together to ensure both are exchanging data together correctly.
Backend Testing
Testing database to make sure data is correct and data is populated in the right table.
User Acceptance Testing (UAT)
Testing done as end users to ensure the application meets requirements and business goals. This testing is usually done by the client (end user).
Performance Testing
Testing done to determine how fast a system can process user requests.
Stress Testing
Testing done to determine the maximum users/data/load a system can handle. It is used to find breaking points of a system.
Integration Testing
Testing done to ensure two or more software modules communicate data correctly when they are integrated (combined).
White Box Testing
Testing internal logic/code of unit or module of a system. It is usually performed by developers.
Testing
Testing is the process or activity that checks the functionality and correctness of software according to specified user requirements in order to improve the quality and reliability of system.
Ad hoc Testing
Testing performed in an unstructured way without proper planning and documentation. This is an informal type of testing. Bugs or defects found using this method are hard to replicate because there are no test cases for these scenarios (no reproducible steps are recorded).
Load Testing
Testing performed to determine a system's behavior under both normal and anticipated peak load conditions. Three types of this test: baseline testing, volume testing, and stress testing.
Ad hoc Testing (Monkey Testing)
Testing that is performed randomly without any test cases in order to try to break the system.
Rules for System Testing
To carry out system testing successfully, you need to follow the given rules − Testing should be based on the requirements of user. Before writing testing scripts, understand the business logic should be understood thoroughly. Test plan should be done as soon as possible. Testing should be done by the third party. It should be performed on static software. Testing should be done for valid and invalid input conditions. Testing should be reviewed and examined to reduce the costs. Both static and dynamic testing should be conducted on the software. Documentation of test cases and test results should be done.
Ad hoc Testing (Pair Testing)
Two testers are assigned to the same modules. They share ideas and work together on the same system to find bugs/defects. One tester executes the test while another tester records the notes on their findings.
Types of Testing
Unit Testing Integration Testing Functional Testing