Analytics Vidhya
Published in

Analytics Vidhya

Software Validation — Testing Techniques

The validation and verification are two things to be checked, once you want to verify your end product Nagendra Singh Yadav

*Adoption of the particular testing technique depends upon the size of the organization (mid, large, or small tier) including project scope.

When it comes to software validation or testing, it is never enough until you test the application in AUT (Application Under Test) beyond limits. So do we use several testing techniques to ensure that all the paths in terms of Test cases and testings are covered?

Photo by Carl Heyerdahl on Unsplash

Goodwill is something that no organization wants to risk. The quality of your testing is determined by No Defects in UAT -Nagendra Singh Yadav

  • UAT -User Acceptance Testing.
  • AUT — Application Under Test.

Broadly We can classify software techniques into Two categories as mentioned below —

Software testing techniques

Static Testing —

When testing is performed without getting a help of a system or electronic device such as a computer, such testing is said to be static testing. -Nagendra Singh Yadav

Photo by Ferenc Almasi on Unsplash

When it Comes to static testing, it’s the cheapest method of testing in terms of cost as cost drives a project in the real world, which can sometimes impact a project to an extent.

Static testing focuses on the verification process and aims to prevention from defects. There are checklist and processes which one has to follow as part of static testing. It is performed before compilation analysis of code (programs). You don’t have to execute a program in this type of testing. Documentation is the prime outcome of static testing and defects found in static testing are less expensive to fix.

Techniques -

Below are the techniques used as part of the static test:

  1. Informal Review -Implementation of static testing can be seen in the form of an SRS document(Software requirement specification), where all the requirements are listed with their behavior. behavior defines the expected output of an application or piece of code. Once the requirement analysis phase is completed, you'll have an SRS document and review is performed on the SRS document upon which informal review comments are provided.
  2. Code Walkthrough -In this phase, the developer explains how a piece of code works and the overall functionality of the application is explained to the testing team. The whole product is explained to the team and comments are noted down.
  3. Inspection -A formal review is performed to find the defects. The reviewer will attempt to find the defects and communicates the defects to the development team so that required changes are made on time, if valid.
  4. Technical Review -There are multiple analysis performed when it's specific to technical reviews such as reviewing the technical specification document and Standard of software. The Standard of software furthermore includes various steps in project implementation in terms of testing named as test strategy, Test plan, etc..
  5. Static code review -Consist of checking the code syntax standards, which is performed by the development team.

Dynamic Testing -

When testing is performed with the help of a system or electronic device such as a computer, such testing is said to be Dynamic testing. -Nagendra Singh Yadav

Photo by David Travis on Unsplash

In the dynamic testing, a code is executed, validated, and verified using the expected output. If the actual result matches the expected result, it is said that the code is passed in testing. This testing is performed at all the stages in or out of software development when the build is created for the code and drop is made for the same in the testing environment. Dynamic testing is the final mark for validations. The defects are fixed in this testing and tested again to ensure code stability in a test environment, the same is verified in production testing, while UAT Users are testing the live application. In other words, when a code has complied with no errors, thereon dynamic testing begins.

Blackbox Testing

In this testing, The functionality of the AUT is verified and validated without having any lookup at the internal code structure. This testing is based upon what's specified in the SRS Document. Testers don't have to know the data structure, internal code, language used in order to test the application.

Advantage

  • A good help when to test the larger code
  • code access not required
  • a Tester can test the code without having any knowledge of programming language

Drawbacks

  • code access not required
  • Designing Test cases could be a challenge.
  • Limited knowledge of the tester
  1. System Testing -System testing is performed by the testers team. It is performed on a fully functional application which is a live version of the actual application obtained after the code integration.
  2. User Acceptance Testing -UAT testing is performed by the tester, usually, the stakeholder end tester performs this testing to ensure if the software meets the user’s requirement and performs as per the user experience. There are two types of UAT Testing -
  • Alpha Testing -Alpha Testing a pre-check-in software application before it’s the live version of the application is ready-made available to a specific set of end-users. It is performed by the set of the tester of that organization who’ve actually developed the application. This testing is performed to ensure no more errors or defects exist in the code if so, it should be fixed before the beta release of the software.
  • Beta Testing -In beta testing, a live version of the product is made available to a specific set of users. Doing so will get the remaining defects detection and correction before the final release of the application. Feedbacks provided in this testing are noted down and later used to enhance the user experience. The use of beta testing can differ from one organization to another. In a small organization, where cost is the constraint, and as they couldn’t have a separate testing team to test the product, prefers the option in which the beta version is made available to a set of users, results in no cost for the test.

WhiteBox Testing

when your prime focus is on security, the flow of input and outputs in the application, with an aim to improve design and usability, white box testing is a pick. — Nagendra Singh Yadav

Photo by Shahadat Rahman on Unsplash

White box testing focuses on internal structure and coding. One can think of this particular testing technique as glass box or open box testing. This testing technique is based on the internal working of application with predefined programming skills required. Using this, a set of pre-defined inputs are validated against expected outputs.

Run a white box test includes:

Get to know the code and functionality and Create a test case and execute

Advantage:

  • Efficient
  • Code optimization

Drawback:

  • requires skilled testers with programming knowledge
  • High cost
  • leaves the bugs sometimes without lookups

They are of two types:

  1. Unit Testing -In Unit testing, each module is validated irrespective of their integration with another module. Unit testing eliminates the module based bugs up to an extent but not effective as SIT (System integration testing). Each part of a program is validated to ensure that there is no gap in the application functionality. Everything hereon is validated against what is specified as per the requirements.
  2. Integration Testing -When a module has passed the unit test Thereon, it enters into Integration testing. In Integration, all the unit based modules are linked to each other forming a flow of the actual application. Integration testing focuses on validating the overall functionality of the application ensuring its stability in Test Environment, so it behaves the same way in Production testing. This testing is applicable to distributed and client-server based systems.

* Integration testing is used in white and black box testing.

Other testing techniques which are independent of their types but don’t fall under a specific type:

Smoke Testing

It is the Testing performed on AUT before the starting of testing on an actual application. Smoke testing is performed just to ensure that the required and important functionalities of the application works well. -Nagendra Singh Yadav

If testing has to be started for an application, it should pass the Smoke test at the first stage.

As an example of smoke testing, one can think of an example where:

You’ve to power up your computer before testing the application

Regression Testing

Regression Testing is performed to ensure that the newly placed code on existing code works properly without effecting the application functionality. -Nagendra Singh Yadav

The regression testing has to be performed on an application when the code build and drop is made against the bugs fixes which were encountered during the previous testing cycle. Whenever any code changes are made, or new code is created to fix the bugs, Regression testing is performed, just to keep a check on overall application functionality.

*When an application fails a higher number of test cases in Regression testing, it means that not an extensive testing was performed during the System Integration Testing.

Sanity Testing

Sanity Testing is performed to ensures that all the existing defects are fixed, and no more defects should be encountered due to any minor code changes. -Nagendra Singh Yadav

Performance Testing

Performance Testing is performed to check all the non — functional requirements with ensuring what has been specified in the Product service level agreement.

* non-functional requirements can be throughput or response time of an application

Types of Performance Testing -

  1. Load Testing -Load testing is performed on a server that handles the requests made using the application. It is performed to ensure that how many requests a server can handle at a time.
  2. Stress Testing -Stress Testing is performed to test the server burst point or break point whereon a server cannot handle any more requests from a user.
  3. Endurance Testing -Endurance Testing is performed to test the server's capacity in order to see how long a server can carry the load. This also verifies the application's capability to hold and handle the load for a long amount of time.
  4. Volume Testing -Volume Testing is performed to verify the performance of an application under different database volumes. Typically a larger database is created and the application is monitored during the test.
  5. Scalability Testing -Scalability testing is performed to ensure that the existing component of the system should be able to update for future releases. An example of scalability testing can be our mobile phones, whose components are able to run even if the software is updated from time to time.

Disclaimer -

For any suggestions, one can write back to the author, if required. This article is prepared based on the author’s full knowledge.

This blog doesn’t contain the old-style book methods, instead, you’ll find what’s really happening in the industry in terms of real projects.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store