10 Testing Techniques

TEST METHODOLOGIES

 

Testing methodologies are the strategies and approaches used to test a particular product to ensure it is fit for purpose. Testing methodologies usually involve testing that the product works in accordance with its specification, has no undesirable side effects when used in ways outside of its design parameters and worst case will fail-safely (e.g. a nuclear reactor will shut down on failure).

 

SOFTWARE TESTING METHODOLOGIES

 

Software testing methodologies are the different approaches and ways of ensuring that a software application in particular is fully tested. Software testing methodologies encompass everything from Black Box Testing, Stress Testing, Regression Testing, System Testing. Moreover, Black Box Testing which is used to test the behavior, Stress Testing for testing the load, Regression Testing is useful for Incremental Testing, System Testing is Alpha, Beta and Gamma Testing.

 

BLACK BOX TESTING

 

Black Box testing is carried out to test functionality of the program. It is also called ‘Behavioral’ testing. The tester in this case, has a set of input values and respective desired results. On providing input, if the output matches with the desired results, the program is tested ‘ok’, and problematic otherwise. In this testing method, the design and structure of the code are not known to the tester, and testing engineers and end users conduct this test on the software. Black-box testing techniques are Equivalence class partitioning, Boundary value analysis and cause effect testing.

 

Equivalence Class Partitioning

 

Input values to a program are partitioned into equivalence classes. Partitioning is done such that: Program behaves in similar ways to every input value belonging to an equivalence class. If one element of a class passes the test, it is assumed that all the class is passed. Test the code with just one representative value from each equivalence class as good as testing using any other values from the equivalence classes. Determining the equivalence classes to examine the input data and few general guidelines for determining the equivalence classes can be used. If the input data to the program is specified by a range of values: for example numbers between 1 to 5000. One valid and two invalid equivalence classes are defined.

If input is an enumerated set of values for example {a,b,c}, one equivalence class for valid input values, another equivalence class for invalid input values should be defined.

 

Examples:

  1. A program reads an input value in the range of 1 and 5000 and computes the square root of the input number
  2. There are three equivalence classes: the set of negative integers, set of integers in the range of 1 and 5000, integers larger than 5000.
  3. The test suite must include: Representatives from each of the three equivalence classes:a possible test suite can be: {-5,500,6000}.

Boundary Value Analysis

 

Some typical programming errors occur at boundaries of equivalence classes might be purely due to psychological factors. Programmers often fail to see the special processing required at the boundaries of equivalence classes. programmers may improperly use < instead of <=. Boundary value analysis selects test cases at the boundaries of different equivalence classes. For example a function that computes the square root of an integer in the range of 1 and 5000: Test cases must include the values: {0,1,5000,5001}.

Cause-effect graphing

 

In both previous methods, only one input value at a time is tested. Cause (input) – Effect (output) is a testing technique where combinations of input values are tested in a systematic way.

 

Cause-Effect Graph graphically shows the connection between a given outcome and all issues that manipulate the outcome. Cause Effect Graph is a black box testing technique. It is also known as Ishikawa diagram because of the way it looks, invented by Kaoru Ishikawa or fish bone diagram. It is generally uses for hardware testing but now adapted to software testing, usually tests external behavior of a system. It is a testing technique that aids in choosing test cases that logically relate Causes (inputs) to Effects (outputs) to produce test cases. A “Cause” stands for a separate input condition that fetches about an internal change in the system. An “Effect” represents an output condition, a system transformation or a state resulting from a combination of causes.

Figure 1: Cause effect flow diagram

 

   The Cause-Effect Diagram can be used under these Circumstances:

 

To determine the current problem so that right decision can be taken very fast.

To narrate the connections of the system with the factors affecting a particular process or effect.

To recognize the probable root causes, the cause for a exact effect, problem, or outcome.

 

Benefits of making cause-Effect Diagram

  • It finds out the areas where data is collected for additional study.
  • It motivates team contribution and uses the team data of the process.
    • Uses synchronize and easy to read format to diagram cause-and-effect relationships. Point out probable       reasons of difference in a process.
    • It enhances facts of the procedure by helping everyone to learn more about the factors at work and how they relate.
    • It assists us to decide the root reasons of a problem or quality using a structured approach.

PERFORMANCE TESTING

 

Performance Testing addresses non-functional requirements that may sometimes involve testing hardware and software together there are several categories of performance testing. Stress testing is a type of performance testing.

 

Stress Testing

 

Stress Testing also known as endurance testing to impose abnormal input to stress the capabilities of the software. Input data volume, input data rate, processing time, utilization of memory, etc. are tested beyond the designed capacity. Stress Testing evaluates system performance when stressed for short periods of time.

Stress tests are black box tests which is designed to impose a range of abnormal and even illegal input conditions so as to stress the capabilities of the software. If the requirements is to handle a specified number of users, or devices, stress testing evaluates system performance when all users or devices are busy simultaneously. If an operating system is supposed to support 15 multi-programmed jobs, the system is stressed by attempting to run 15 or more jobs simultaneously. A real-time system might be tested to determine the effect of simultaneous arrival of several high-priority interrupts. Stress testing usually involves an element of time or size, such as the number of records transferred per unit time, the maximum number of users active at any time, input data size, etc. Therefore stress testing may not be applicable to many types of systems.

 

VOLUME TESTING

 

Volume testing addresses handling large amounts of data in the system whether data structures (e.g. queues, stacks, arrays, etc.) are large enough to handle all possible situations, fields, records, and files are stressed to check if their size can accommodate all possible data volumes.

 

CONFIGURATION TESTING

 

Analyze system behaviour in various hardware and software configurations specified in the requirements. Sometimes systems are built in various configurations for different users. For instance, a minimal system may serve a single user, other configurations for additional users.

  COMPATIBILITY TESTING

 

Compatibility testing is a type of software testing used to ensure compatibility of the system/application/website built with various other objects such as other web browsers, hardware platforms, users (in case if it’s very specific type of requirement, such as a user who speaks and can read only a particular language), operating systems etc. This type of testing helps find out how well a system performs in a particular environment that includes hardware, network, operating system and other software etc. It is basically the testing of the application or the product built with the computing environment. It tests whether the application or the software product built is compatible with the hardware, operating system, database or other system software or not. These tests are needed when the system interfaces with other systems to check whether the interface functions as required. For Example if a system is to communicate with a large database system to retrieve information: a compatibility test examines speed and accuracy of retrieval. Types of Software compatibility testing are

 

Browser compatibility testing

Hardware

  • Networks
    •  Mobile Devices
    • Operating System
    • Versions

RECOVERY TESTING

 

Recovery Testing is performed to determine whether operations can be continued after a disaster or after the integrity of the system has been lost. It involves reverting to a point where the integrity of the system was known and then reprocessing transactions up to the point of failure. These tests check response to presence of faults or to the loss of data, power, devices, or services, Subject system to loss of resources and check if the system recovers properly.

 

MAINTENANCE TESTING

 

Maintenance Testing is done on the already deployed software. The deployed software needs to be enhanced, changed or migrated to other hardware. The Testing done during this enhancement, change and migration cycle is known as maintenance testing. Diagnostic tools and procedures helps to find source of problems. It may be required to supply memory maps, diagnostic programs, traces of transactions, circuit diagrams, etc. It verifies that all required artefacts for maintenance exist they function properly.

 

DOCUMENTATION TESTS

 

Documentation testing is a non-functional type of software testing. Any written or pictorial information describing, defining, specifying, reporting, or certifying activities, requirements, procedures, or results’. Documentation is as important to a product’s success as the product itself. If the documentation is poor, non-existent, or wrong, it reflects on the quality of the product and the vendor. Documentation testing check that required documents exist and are consistent to user guides, maintenance guides, technical documents.

  • Sometimes requirements specify format and audience of specific documents and documents are evaluated for compliance

   USABILITY TESTS

Usability testing, a non-functional testing technique that is a measure of how easily the system can be used by end users. It is difficult to evaluate and measure but can be evaluated based on the below parameters: Level of Skill required to learn/use the software. All aspects of user interfaces are tested to display screens, messages, report formats and navigation and selection problems.

 

ENVIRONMENT TEST

 

These tests check the system’s ability to perform at the installation site. The requirements might include tolerance for heat, humidity, chemical presence, portability, electrical or magnetic fields, disruption of power, etc.

 

REGRESSION TESTING

 

Regression testing is a type of software testing which verifies that software which was previously developed and tested still performs the same way after it was changed or interfaced with other software. Changes may include software enhancements, patches, configuration changes, etc. It does not belong to either unit test, integration test, or system test. Instead, it is a separate dimension to these three forms of testing. Regression testing is the running of test suite after each change to the system or after each bug fix and ensures that no new bug has been introduced due to the change or the bug fix.

 

Regression tests assure the new system’s performance is at least as good as the old system and always used during phased system development.

Usability testing, a non-functional testing technique that is a measure of how easily the system can be used by end users. It is difficult to evaluate and measure but can be evaluated based on the below parameters: Level of Skill required to learn/use the software. All aspects of user interfaces are tested to display screens, messages, report formats and navigation and selection problems.

 

ENVIRONMENT TEST

 

These tests check the system’s ability to perform at the installation site. The requirements might include tolerance for heat, humidity, chemical presence, portability, electrical or magnetic fields, disruption of power, etc.

 

REGRESSION TESTING

 

Regression testing is a type of software testing which verifies that software which was previously developed and tested still performs the same way after it was changed or interfaced with other software. Changes may include software enhancements, patches, configuration changes, etc. It does not belong to either unit test, integration test, or system test. Instead, it is a separate dimension to these three forms of testing. Regression testing is the running of test suite after each change to the system or after each bug fix and ensures that no new bug has been introduced due to the change or the bug fix.

 

Regression tests assure the new system’s performance is at least as good as the old system and always used during phased system development.

SYSTEM TESTING

 

System testing of software or hardware is testing conducted on a complete, integrated system to evaluate the system’s compliance with its specified requirements. System testing falls within the scope of black-box testing, and as such, should require no knowledge of the inner design of the code or logic.

 

Alpha Testing :

 

This testing is carried out by the test team within the developing organization.

 

Beta Testing:

 

This testing is performed by a select group of friendly    customers.

 

Acceptance Testing:

 

This testing is performed by the customer himself to determine whether the system should be accepted or rejected.

 

CONCLUSION

  • Testing improves the quality
  • Black box testing is used to check the functionality
  • System testing is used to test the finished software
  • Stress testing is used to improve the performance
  • Regression testing helps in testing the newly added modules