{"id":13580,"date":"2019-03-18T12:33:46","date_gmt":"2019-03-18T12:33:46","guid":{"rendered":"https:\/\/www.engineerbabu.com\/blog\/?p=13580"},"modified":"2025-11-10T10:54:14","modified_gmt":"2025-11-10T10:54:14","slug":"what-is-software-testing","status":"publish","type":"post","link":"https:\/\/engineerbabu.com\/blog\/what-is-software-testing\/","title":{"rendered":"What is Software Testing? Terminologies | Importance | Types"},"content":{"rendered":"<p>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.<br \/>\nIt\u2019s 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 &amp; exploring the product.<\/p>\n<p>Benjamin Franklin once stated,<\/p>\n<blockquote><p>&#8220;<em>The bitterness of poor quality remains long after the sweetness of low price is forgotten.\u201d<\/em><\/p><\/blockquote>\n<p>Testing is an easier job for those who don&#8217;t comprehend the significance of good quality.<br \/>\nStay tuned to our <b>series of blogs on Software Testing<\/b> where I will be covering each aspect, FROM SCRATCH! Nothing would be left out!<br \/>\nSo, if you wish to venture into this domain, stay tuned as these articles can serve as a holy grail for you.<br \/>\nIn our first blog on Testing, we will be covering the following points,<\/p>\n<ul>\n<li>Introduction to Software Testing<\/li>\n<li>Significance of Testing<\/li>\n<li>Common Terminologies used in Software Testing<\/li>\n<li>Types<\/li>\n<li>Concluding View<\/li>\n<\/ul>\n<hr \/>\n<h2><strong> What is Software Testing?<\/strong><\/h2>\n<p><em><strong>As per ISTQB definition,<\/strong><br \/>\n<\/em><strong>Software Testing<\/strong> 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.<br \/>\nSoftware 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&#8217;s requirements.<br \/>\nSoftware testing can be carried out manually or by using automated tools.<br \/>\n<span class=\"td_btn td_btn_lg td_outlined_btn\" style=\"background-color: #ffffff;\"><span style=\"color: #333399;\">Note:<\/span><span style=\"color: #000000;\">\u00a0ISTQB or The International Software Testing Qualifications Board is a software testing qualification certification.<\/span><\/span><\/p>\n<h2><strong>Importance of Software Testing<\/strong><\/h2>\n<blockquote class=\"td_pull_quote td_pull_center\">\n<p style=\"text-align: left;\">&#8220;Quality is not an accident, it&#8217;s an intelligent effort &#8220;<\/p>\n<p style=\"text-align: right;\"><span style=\"color: #000000;\">&#8211; John Ruskin<\/span><\/p>\n<\/blockquote>\n<p>You cannot understate the significance of testing if you wish to deliver a quality product to your customers.<br \/>\nCreating 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.<br \/>\nTesting is also essential to enrich <strong>User Experience<\/strong>. This is because a badly tested product will have bugs and other contingencies which will consequently hamper in providing a seamless UX.<br \/>\nNow, developing this lucrative and seamless product requires the tester to review the product on several parameters, like,<\/p>\n<ul>\n<li>Accessibility<\/li>\n<li>Compatibility<\/li>\n<li>Efficiency<\/li>\n<li>Functionality<\/li>\n<li>Scalability<\/li>\n<li>Performance<\/li>\n<li>Reliable<\/li>\n<li>Usability<\/li>\n<\/ul>\n<blockquote><p><em>The objective of testing isn&#8217;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.<\/em><\/p><\/blockquote>\n<h2><strong>TERMINOLOGIES<\/strong><\/h2>\n<ul>\n<li>Test Plan<\/li>\n<li>Test Scenarios<\/li>\n<li>Test Cases<\/li>\n<li>Priority<\/li>\n<li>Severity<\/li>\n<li>Verification<\/li>\n<li>Validation<\/li>\n<li>SDLC &amp; STLC<\/li>\n<\/ul>\n<h3>1. Test Plan<\/h3>\n<p><strong><em>As per ISTQB definition,<br \/>\n<\/em><\/strong>A test plan is a document outlining the <strong>scope, approach, resources,<\/strong> and <strong>schedule<\/strong> 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.<br \/>\nSimply put &#8211; 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.\u00a0It is a blueprint which summarizes how the testing activities will proceed for any project.<\/p>\n<h3>2. Test Scenarios vs Test Cases<\/h3>\n<p>A <strong>Test Case<\/strong> mentions the detailed inputs, execution conditions, steps to reproduce, test data, the actual &amp; 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.<br \/>\nTest cases can be broadly classified into <strong>Functional<\/strong> &amp; <strong>Non-functional<\/strong> or <strong>Positive<\/strong> &amp; <strong>Negative<\/strong>.<br \/>\nPeople often get confused amongst &#8211; Test Scenarios and Test Cases. Here is a simple example to quickly comprehend the difference between the two,<\/p>\n<ul>\n<li><strong>Test Case 1:<\/strong> Check results on entering valid User Id &amp; valid Password<\/li>\n<li><strong>Test Case 2:<\/strong> Check results on entering Invalid User ID &amp; valid Password<\/li>\n<li><strong>Test Case 3:<\/strong> Check results on entering valid User ID &amp; Invalid Password<\/li>\n<li><strong>Test Case 4:<\/strong> Check results on entering Invalid User ID &amp; Invalid Password<\/li>\n<li><strong>Test Case 5: <\/strong>Check response when fields are Empty &amp; Login Button is pressed.<\/li>\n<\/ul>\n<p>Test Scenario is to Test the login functionality whereas Test Cases that are included in this Test Scenario are,<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-13586 size-full\" src=\"https:\/\/engineerbabu.com\/blog\/wp-content\/uploads\/2019\/03\/Testing-1.png\" alt=\"Test Case \" width=\"1124\" height=\"470\" title=\"\"><\/p>\n<h3>3. Priority vs Severity<\/h3>\n<p>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,<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-13592 size-full\" src=\"https:\/\/engineerbabu.com\/blog\/wp-content\/uploads\/2019\/03\/Testing-2.png\" alt=\"Priority and Severity in Testing\" width=\"706\" height=\"227\" title=\"\"><\/p>\n<h3>4. Verification v\/s Validation:<\/h3>\n<p><strong>Verification<\/strong> 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.<br \/>\n<strong>Validation<\/strong> is assessing the last item to check whether the product meets the clients&#8217; desires and prerequisites. It is a dynamic tool of approving and testing the real item.<br \/>\nIt&#8217;s essential for a tester to\u00a0possess 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\u00a0<strong>STLC or Software Testing Life Cycle.<\/strong> Let&#8217;s catch some more details about these processes.<\/p>\n<figure id=\"attachment_13593\" aria-describedby=\"caption-attachment-13593\" style=\"width: 1024px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-13593 size-full\" src=\"https:\/\/engineerbabu.com\/blog\/wp-content\/uploads\/2019\/03\/Testing-3.jpg\" alt=\"Validation and Verification in Testing\" width=\"1024\" height=\"448\" title=\"\"><figcaption id=\"caption-attachment-13593\" class=\"wp-caption-text\">Image Courtesy: <a href=\"https:\/\/www.plutora.com\/blog\/verification-vs-validation\" target=\"_blank\" rel=\"noopener noreferrer\">plutora.com<\/a><\/figcaption><\/figure>\n<h3><strong>SDLC vs STLC<\/strong><\/h3>\n<ul>\n<li><strong><em>SDLC<br \/>\n<\/em><\/strong>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.<\/li>\n<li><strong><em>STLC<br \/>\n<\/em><\/strong>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 &#8211; software testing life cycle identifies how test cases will be implemented and how the testing would be conducted successfully.<\/li>\n<\/ul>\n<p>Now Let&#8217;s a brief look at the different phases of <strong>SDLC<\/strong> and <strong>STLC:<\/strong><\/p>\n<table style=\"height: 1801px;\" width=\"327\">\n<tbody>\n<tr>\n<td width=\"119\">\n<h3><strong>Phase<\/strong><\/h3>\n<\/td>\n<td width=\"250\">\n<h3><strong>SDLC<\/strong><\/h3>\n<\/td>\n<td width=\"352\">\n<h3><strong>STLC<\/strong><\/h3>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"119\"><strong>SDLC<br \/>\nRequirement Gathering<\/strong><strong>STLC<br \/>\nRequirement Analysis<\/strong><\/td>\n<td width=\"250\">\n<ul>\n<li>Business Analyst gathers requirements.<\/li>\n<li>Development team analyzes the requirements &amp; starts the brainstorming on architecture &amp; design<\/li>\n<\/ul>\n<\/td>\n<td width=\"352\">\n<ul>\n<li>The testing team analyzes and reviews the Software Requirement Document or SRD.<\/li>\n<li>Identifies the testing requirements &#8211; Scope, Verification, and Validation of key points.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"119\"><strong>SDLC<\/strong><br \/>\n<strong>Design<\/strong><br \/>\n<strong>STLC<\/strong><br \/>\n<strong>Test Planning<\/strong><\/td>\n<td width=\"250\">\n<ul>\n<li>SDLC architecture helps you develop high-level and low-level design plans based on the requirements.<\/li>\n<li>Business Analyst works on wireframe designing here, &amp; after design approval, it will hand over to stakeholders.<\/li>\n<\/ul>\n<\/td>\n<td width=\"352\">\n<ul>\n<li>In STLC, either the Test Lead or the Test Architect usually plan the test strategy.<\/li>\n<\/ul>\n<ul>\n<li>Test planning, Test Analysis, and Test Design took place here, along with Resource Allocation &amp; timeline fixation.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"119\"><strong>SDLC<\/strong><br \/>\n<strong>Development<\/strong><br \/>\n<strong>STLC<\/strong><br \/>\n<strong>Test Case Development<\/strong><\/td>\n<td width=\"250\">\n<ul>\n<li>The development team starts developing the software, Integrates it with different systems.<\/li>\n<li>Once all integration is achieved, a ready to test software or product is provided.<\/li>\n<\/ul>\n<\/td>\n<td width=\"352\">\n<ul>\n<li>The testing team writes the test scenarios in order to examine the quality of the product.<\/li>\n<\/ul>\n<ul>\n<li>Detailed test cases are planned out for all modules along with expected behavior.<\/li>\n<\/ul>\n<ul>\n<li>The prerequisites and the entry &amp; exit criteria of a test module are mentioned here,<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"119\"><strong>SDLC<\/strong><br \/>\n<strong>Environment Set-up<\/strong><br \/>\n<strong>STLC:<\/strong><br \/>\n<strong>Environment Set-Up<\/strong><\/td>\n<td width=\"250\">Development team sets-up a test environment with a developed product to validate.<\/td>\n<td width=\"352\">\n<ul>\n<li>The test team confirms the environment set-up based on the pre-requisites.<\/li>\n<li>Performs smoke testing to make sure the environment is stable for the product to be tested.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"119\"><strong>SDLC:<\/strong><br \/>\n<strong>Testing<\/strong><br \/>\n<strong>STLC:<\/strong><br \/>\n<strong>Test Execution<\/strong><\/td>\n<td width=\"250\">\n<ul>\n<li>The actual testing is carried out in this phase.\n<ul>It encompasses a wide variety of testings.<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Developers fixed the bugs &amp; assign to tester again to retest it.<\/li>\n<li>UAT testing is performed here<\/li>\n<\/ul>\n<\/td>\n<td width=\"352\">\n<ul>\n<li>System Integration testing starts based on test cases.<\/li>\n<li>Defects reported, if any, gets retested and fixed.<\/li>\n<\/ul>\n<ul>\n<li>Regression testing is performed here and the product is signed off once it meets the exit criteria.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"119\"><strong>SDLC:<\/strong><br \/>\n<strong>Deployment\/ Product Release<\/strong><br \/>\n<strong>STLC:<\/strong><br \/>\n<strong>Test Cycle-Closure<\/strong><\/td>\n<td width=\"250\">Once sign-off is received from the various testing team, the application is deployed in a production environment for real end users.<\/td>\n<td width=\"352\">\n<ul>\n<li>Smoke and sanity testing in a production environment is completed here, as soon as the product is deployed.<\/li>\n<li>Test reports and matrix preparation are done by the testing team to analyze the product.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"119\"><strong>Maintenance<\/strong><\/td>\n<td width=\"250\">It covers the post-deployment enhancement, supports, and updates if any.<\/td>\n<td width=\"352\">In this phase, the maintaining of test cases, regression suits has been done.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>It&#8217;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 <strong>SDLC &#8211; software <\/strong><strong>development<\/strong><strong> life cycle.<\/strong> Add on to this, a proper process is followed to perform software testing i.e <strong>STLC &#8211; software testing life cycle.<\/strong> Let&#8217;s catch some more details about these processes.<br \/>\nA tester has to perform numerous types of testing in his career. Let&#8217;s take a sneak peek at the different types of software testing out there,<\/p>\n<h4><strong>Functional Testing<br \/>\n<\/strong><\/h4>\n<p>Functional testing is a type of software testing where the system is tested against some functional requirements.<\/p>\n<ul>\n<li><strong>Unit Testing<br \/>\n<\/strong>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 &amp; requirement.It&#8217;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.<\/li>\n<li><strong>Integration Testing<br \/>\n<\/strong>Integration Testing is the second step of software testing, where individual modules are combined &amp; 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.<\/li>\n<li><strong>System Testing<br \/>\n<\/strong>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.<\/li>\n<li><strong>Sanity Testing<\/strong><br \/>\nSanity 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 &#8220;not&#8221; to verify the new functionality thoroughly but to determine that the developer has applied some rationality (sanity) while developing the software.<\/li>\n<li><strong>Smoke Testing<br \/>\n<\/strong>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 &#8220;stability&#8221; of the framework and execute &#8220;before&#8221; any detailed functional or regression tests are executed on the application.<\/li>\n<li><strong>Interface Testing<br \/>\n<\/strong>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.<\/li>\n<li><strong>Regression Testing<br \/>\n<\/strong>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.<\/li>\n<li><strong>Beta\/Acceptance Testing:<br \/>\n<\/strong>Beta or User Acceptance testing is carried out by &#8220;real users&#8221; of the developed product in &#8220;real environment.&#8221; 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&#8217;s environment.<\/li>\n<\/ul>\n<h4><strong>Non-functional testing types,<br \/>\n<\/strong><\/h4>\n<ul>\n<li><strong>Performance Testing<br \/>\n<\/strong>Performance testing is defined as the type of testing where we ensure proper functionality of our application under a heavy workload.<\/li>\n<li><strong>Load Testing<br \/>\n<\/strong>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.<\/li>\n<li><strong>Stress Testing<br \/>\n<\/strong>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.<\/li>\n<li><strong>Volume Testing<\/strong><br \/>\nVolume 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.<\/li>\n<li><strong>Security Testing<br \/>\n<\/strong>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.<\/li>\n<li><strong>Compatibility Testing<br \/>\n<\/strong>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&#8217;s a type of Non-functional testing.<\/li>\n<li><strong>Recovery Testing<br \/>\n<\/strong>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.<\/li>\n<li><strong>Usability Testing<br \/>\n<\/strong>Usability testing ensures &#8211; 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.<\/li>\n<li><strong>Compliance Testing :<br \/>\n<\/strong>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&#8217;s recommended guidelines or not. Determining that the development and maintenance process meets the endorsed procedure.<\/li>\n<li><strong>Localization Testing<br \/>\n<\/strong>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.<\/li>\n<\/ul>\n<hr \/>\n<h3><span style=\"color: #333399;\"><em><strong> Concluding View&#8230;<\/strong><\/em><\/span><\/h3>\n<p>Here we conclude the prerequisites of learning Software Testing. These are the basics that every quality analyst must be aware of. Now, if you are looking for a deeper insight into this domain subscribe to our blog posts. We keep coming out with innovative articles on technology and entrepreneurship every week.<\/p>\n<p><em>Feel free to <a href=\"https:\/\/engineerbabu.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">reach out to us<\/a> if you have any further questions. We&#8217;re always excited to serve our readers. In case you are looking for a FREE consultation for your tech product you can <a href=\"https:\/\/engineerbabu.com\/\">contact us<\/a> any time.\u00a0<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u2019s very important to understand what Software Testing actually is as there are lots of misconceptions surrounding this domain. Testing [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":20111,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1258],"tags":[],"class_list":["post-13580","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-app-development"],"_links":{"self":[{"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/posts\/13580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/comments?post=13580"}],"version-history":[{"count":9,"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/posts\/13580\/revisions"}],"predecessor-version":[{"id":20954,"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/posts\/13580\/revisions\/20954"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/media\/20111"}],"wp:attachment":[{"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/media?parent=13580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/categories?post=13580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/engineerbabu.com\/blog\/wp-json\/wp\/v2\/tags?post=13580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}