Software Testing is not as easy as it is often presumed to be! One needs to possess a knack for analytical and logical thinking to formulate different test-case scenarios and present an appropriate solution accordingly.
It’s very important to understand what Software Testing actually is as there are lots of misconceptions surrounding this domain. Testing is all about out-of-the-box thinking and verifying, validating, investigating & exploring the product.
Benjamin Franklin once stated, “The bitterness of poor quality remains long after the sweetness of low price is forgotten” – Testing is an easier job for those who don’t comprehend the significance of good quality.
Stay tuned to our series of blogs on Software Testing where I will be covering each aspect, FROM SCRATCH! Nothing would be left out!
So, if you wish to venture into this domain, stay tuned as these articles can serve as a holy grail for you.
In our first blog on Testing, we will be covering the following points,
- Introduction to Software Testing
- Significance of Testing
- Common Terminologies used in Software Testing
- Concluding View
What is Software Testing?
As per ISTQB definition,
Software Testing is the process of verifying and validating whether a software application or product meets the business and technical requirements that guide its design and development. In simpler terms, it is the process of executing a program or application with the intent of finding defects in it.
Software Testing is performed to check whether the outcome matches the expected result and also to ensure that the developed product has minimal anomalies. It includes the execution of different test cases over different functionalities. A tester, often referred to as a Quality Analyst, needs to ensure that the developed product meets the client’s requirements.
Software testing can be carried out manually or by using automated tools.
Note: ISTQB or The International Software Testing Qualifications Board is a software testing qualification certification.
Importance of Software Testing
“Quality is not an accident, it’s an intelligent effort “
– John Ruskin
You cannot understate the significance of testing if you wish to deliver a quality product to your customers.
Creating a good quality product which is bug-free, delivers great user experience and runs seamlessly across multiple channels requires the product to undergo through a rigorous testing process. The right kind of testing guarantees that your product is seamless and delivers on the expectations of the client.
Testing is also essential to enrich User Experience. This is because a badly tested product will have bugs and other contingencies which will consequently hamper in providing a seamless UX.
Now, developing this lucrative and seamless product requires the tester to review the product on several parameters, like,
The objective of testing isn’t limited to discovering bugs or to advance programming. It is to minimize hazard by proactively detecting and dispensing issues which could sway the customers from efficiently utilizing the product.
- Test Plan
- Test Scenarios
- Test Cases
- SDLC & STLC
1. Test Plan
As per ISTQB definition,
A test plan is a document outlining the scope, approach, resources, and schedule of the intended test activities. It identifies amongst others, the test items, the features to be tested, tasks, person assigned to each task, the test environment, test design techniques, entry and exit criteria as well as contingency planning.
Simply put – A test plan defines the strategy to be used to test an application and elucidates the objective, resources used and the information about the test environment. It is a blueprint which summarizes how the testing activities will proceed for any project.
2. Test Scenarios vs Test Cases
A Test Case mentions the detailed inputs, execution conditions, steps to reproduce, test data, the actual & expected results. Different test cases are designed and noted-down during the Test Case Development phase of STLC which the testers later refer to, to check the application performance.
Test cases can be broadly classified into Functional & Non-functional or Positive & Negative.
People often get confused amongst – Test Scenarios and Test Cases. Here is a simple example to quickly comprehend the difference between the two,
- Test Case 1: Check results on entering valid User Id & valid Password
- Test Case 2: Check results on entering Invalid User ID & valid Password
- Test Case 3: Check results on entering valid User ID & Invalid Password
- Test Case 4: Check results on entering Invalid User ID & Invalid Password
- Test Case 5: Check response when fields are Empty & Login Button is pressed.
Test Scenario is to Test the login functionality whereas Test Cases that are included in this Test Scenario are,
3. Priority vs Severity
Priority specifies the level of urgency under which the bug needs to get resolved. Whereas severity illustrates how critical the bug is, it basically describes the magnitude of impact if the bug is not resolved. There are different levels of priority and severity, which are depicted in the image below,
4. Verification v/s Validation:
Verification is a static routine involving checking documents, structure, code, and program. It incorporates activities involved in creating fantastic programming, including, assessment, structure investigation, and detail examination. It is a moderate target process.
Validation is assessing the last item to check whether the product meets the clients’ desires and prerequisites. It is a dynamic tool of approving and testing the real item.
It’s essential for a tester to possess a clear understanding of the process followed to develop the product in their organization. Similar to SDLC, a proper process is followed to perform software testing which is called STLC or Software Testing Life Cycle. Let’s catch some more details about these processes.
SDLC vs STLC
Software Development Life Cycle (SDLC) explains the journey of Software Development. According to Wikipedia, SDLC is a process followed for software development. It consists of a detailed strategy outlining how to develop, maintain, replace, alter and enhance a specific software.
STLC illustrates a systematic and well-planned testing process which includes different stages to make the testing process quick, effective and accountable. Unlike SDLC, STLC – software testing life cycle identifies how test cases will be implemented and how the testing would be conducted successfully.
Now Let’s a brief look at the different phases of SDLC and STLC:
It’s important that a tester must have knowledge of the process followed to develop any product in any IT company. This process is named as SDLC – software development life cycle. Add on to this, a proper process is followed to perform software testing i.e STLC – software testing life cycle. Let’s catch some more details about these processes.
A tester has to perform numerous types of testing in his career. Let’s take a sneak peek at the different types of software testing out there,
Functional testing is a type of software testing where the system is tested against some functional requirements.
- Unit Testing
Unit testing consists of the testing of individual modules or components. Its objective is to test each unit of the software, validate whether the functionality implemented is stable or not and most importantly it should work as per the design & requirement.It’s the first and foremost step to perform Software testing and is generally carried out by software developers themselves. Unit Testing builds confidence in changing or maintaining the codes. Reusability of code also increases.
- Integration Testing
Integration Testing is the second step of software testing, where individual modules are combined & integrated modules are tested. It started after completion of Unit Testing. The objective is to test the defects to discover while integrating any modules. This type of testing verifies the functionality, performance, and reliability between the integrated modules.
- System Testing
System testing is the testing of complete and integrated software. It ensures that the developed product meets the specific requirements.System Testing involves the examination of completely integrated applications incorporating outer peripherals to check how modules interact with each other and with the framework, all in all.
- Sanity Testing
Sanity testing is carried out to quickly evaluate and determine whether functionalities are working as expected or not. Sanity Testing is also referred to as surface-level-testing.Sanity testing is a type of Software Testing performed after receiving a software build, with minor changes in code, or functionalities, to learn that the bugs have been fixed and no further issues are acquainted due with these progressions.The objective is “not” to verify the new functionality thoroughly but to determine that the developer has applied some rationality (sanity) while developing the software.
- Smoke Testing
Smoke Testing is performed to discover that the critical functionalities of the program are working fine. The motto of this testing is to check the “stability” of the framework and execute “before” any detailed functional or regression tests are executed on the application.
- Interface Testing
An interface is a medium between two different software systems, whereas interface Testing is a software testing type which verifies whether the correspondence between two distinctive programming frameworks is done accurately.
- Regression Testing
Regression testing is the type of testing in which QA verifies whether changes made in the old functionality still works with the newly implemented changes.
- Beta/Acceptance Testing:
Beta or User Acceptance testing is carried out by “real users” of the developed product in “real environment.” A Beta version of the application is released for a limited number of users to gather feedback on product quality.Beta testing decreases item disappointment hazards and provides an expanded nature of the product through client approval.It is the final test before delivery product to the clients. Direct criticism from clients is a noteworthy preferred standpoint of Beta Testing. This testing serves to tests the item in the client’s environment.
Non-functional testing types,
- Performance Testing
Performance testing is defined as the type of testing where we ensure proper functionality of our application under a heavy workload.
- Load Testing
Load testing is a sub-classification of Performance Testing. During load testing, we evaluate the behavior of our application when N number of users simultaneously access it.
- Stress Testing
The objective of stress testing is to analyze the response of the system following a failure. In this type of testing system should give an error message if it is operating under dire conditions. This type of testing tries to break the system by testing with overwhelming data or resources.
- Volume Testing
Volume testing is a sort of Software Testing in which the product is subjected to an enormous volume of information. This testing is carried out to test system performance by expanding the amount of data in the database.
- Security Testing
Security Testing ensures that our applications are free from any vulnerabilities, dangers, risks that could cause a major misfortune. It additionally helps in identifying all conceivable security issues in the system and assist users in fixing these issues through coding.
- Compatibility Testing
Compatibility Testing is a sort of Software testing to check whether your product is fit for running on multiple hardware, different OS, Applications and mobile gadgets. It’s a type of Non-functional testing.
- Recovery Testing
Recovery testing is the process of testing how well an application can recoup from accidents, hardware failures, and other comparable issues. This testing is the constrained disappointment of the product in an assortment of approaches to confirm that recovery is appropriately performed.
- Usability Testing
Usability testing ensures – Usefulness, Discoverability, Accessibility, Usability, and Desirability.The objective is to see how clients interact with your product and to improve the item dependent on the outcomes. The main focus of a Usability test is to improve a design.
- Compliance Testing :
Compliance testing also referred to as conformance testing, regulation testing, standards testing, is a sort of testing to decide the consistency of a framework. Most importantly it is the nonfunctional testing procedure which is done to approve, regardless of whether the framework created satisfies the association’s recommended guidelines or not. Determining that the development and maintenance process meets the endorsed procedure.
- Localization Testing
Localization testing is a software testing strategy, where the product is checked to guarantee that it carries on as indicated by the nearby culture or settings.