No software can ever be completely perfect. But is that a license to create garbage? The missing ingredient is our reluctance to quantify the quality. In order to increase the quality, it is very important to ensure the effective performance of software application. Software testing is required to ensure that the application runs without any failures. In this Software Testing tutorial, I will tell you everything you need to know about testing aspects. In continuation to the previous blog on what is software testing, here I will dive deeper and cover the below-mentioned topics.

You may also go through the recording of software testing tutorial where our Software Testing Training experts have explained the concepts in depth.

Introduction to Software Testing

Today’s world of technology is completely dominated by machines, and their behavior is controlled by the software powering it. Software testing provides a cost-effective solution to all our worries. What is Software Testing? Software Testing is a process of evaluating the functionality of a software application to find any software bugs. It checks whether the developed software met the specified requirements and identifies any defect in the software to achieve a quality product. It is basically executing a system to identify any gaps, errors, or missing requirements contrary to the actual requirements.

It is also stated as the process of verifying and validating a software product. It checks whether the software product:

Meets the business and technical requirements that guided its design and development

Works as per the requirement

Can be implemented with the same characteristics

Now, let’s move further in the Software Testing tutorial article and gain some insights on the basics of Software Testing.

Software Testing Basics

First, I will tell you What is the software development life cycle?

Software Development Life Cycle

(SDLC) abbreviated as Software Development Life Cycle is a process used by the software industry to design, develop and test high-quality software. It aims to produce high-quality software that meets or exceeds customer expectations, reaches completion within time and cost estimates. Below diagram depicts various phases involved in SDLC.

Fig: Software Development Life Cycle – Software Testing Tutorial

Requirement Phase

Requirement gathering and analysis is the most important phase in the software development lifecycle. Business analyst collects the requirement from the customer/client as per the clients business needs and documents the requirements in the business requirement specification (document name varies depends upon the Organization).

Analysis Phase

Once the requirements are gathered and analysed, the next step is to define and document the product requirements and get them approved by the customer. This is recorded through the SRS (Software Requirement Specification) document. It consists of all the product requirements to be designed and developed during the project life cycle

Design Phase

This phase has two steps:

HLD – High-Level Design – It gives the architecture of the software product to be developed and is done by architects and senior developers

LLD – Low-Level Design – It is carried out by senior developers. Here, it gives you insights about how each and every feature in the product should work and how every component should work.

The outcome from this phase is the High-Level Document and Low-Level Document which works as an input to the next phase.

Development Phase

Developers of all levels (seniors, juniors, freshers) are involved in this phase. This is the phase where you start building the code for the software.

Testing Phase

When the software is ready, it is sent to the testing department where they test it thoroughly for different defects. Testing of a software is carried out either manually or using automated testing tools and ensure that each and every component of the software works fine. Once the software is error-free, it goes to the next stage, which is Implementation.

Deployment & Maintenance Phase

Once the product is error free, it is delivered/deployed to the customer for their use. Deployment is done by the Deployment/Implementation engineers. As the customers start using the developed system, then the actual problems come up and needs to be solved from time to time. Detecting and solving these issues found by the customer comes in the maintenance phase.

This was all about the Software Development Life Cycle. If you wish to know about different stages involved in software testing process, then you can read this blog on Software Testing Life Cycle. Having understood this, let’s move further with this software testing tutorial and see what is the V & V model.

V model is now one of the most widely used software development processes. Introduction of the V model has actually proved the implementation of testing right from the requirement phase. It is also called as Verification and Validation model

What is Verification and Validation in Software Testing?

Verification: Verification is a static analysis technique. Here, testing is done without executing the code. Examples include – reviews, inspection, and walk through.

Validation: Validation is a process of dynamic analysis where we perform testing by executing the code. Examples include functional and non-functional testing techniques.

In the V model, the development and QA activities are done simultaneously. Here, testing starts right from the requirement phase. The verification and validation activities occur simultaneously. Let’s look at the figure below to understand V model

Fig: Verification & Validation model – Software Testing Tutorial

In a typical development process, the left-hand side shows the development activities and the right-hand side shows the testing activities. It should not be wrong if I say that in the development phase both verification and validation are performed along with the actual development activities.

LHS

As mentioned earlier, left-hand side activities are development activities. Normally we feel, what testing can we do in the development phase? But this is the essence of this model which illustrates that testing can be done in all phase of development activities as well.

RHS

The testing activities or the Validation Phase is carried out in the Right-hand side of the model.

As you have gained some insights on this, let’s move further with this software testing tutorial and see what are the different methods in which the software can be tested.

Software Testing Methods

There are three methods for testing software and they are as follows:

Black Box Testing

White Box Testing

Grey Box Testing

Black Box Testing: It is a method of software testing in which the internal structure/ design/ implementation of the item being tested is NOT known to the tester.

White Box Testing: It is a method of software testing in which the internal structure/ design/ implementation of the item being tested is known to the tester.

Grey Box Testing: It is a testing technique performed with limited information about the internal functionality of the system.

I hope you understood key pointers on different methods of software testing. Now, let’s move further in this Software Testing Tutorial article and understand Software Testing Levels.

Software Testing Levels

A level in software testing is a process where every unit or component of a software/system is being tested. There are various testing levels which help to check behavior and performance for software testing. These testing levels are designed to recognize missing areas and reconciliation between the development of lifecycle states. In software development life cycle model, there are characterized phases such as requirement gathering, analysis, design, coding or execution, testing, and deployment.

All these phases go through the process of software testing levels. There are mainly four testing levels and they are:

Unit Testing

Integration Testing

System Testing

Acceptance Testing

Basically, it starts with the Unit Testing phase and ends with Acceptance Testing.

In the next section of this software testing tutorial, I will be diving deeper into the next topic and explain what are the various documentation artifacts in software testing.

Software Testing Documentation Artifacts

Documenting the test cases will facilitate you to estimate the testing effort you will need along with test coverage and tracking and tracing requirement. Some commonly applied documentation artifacts associated with software testing are:

Test Plan

Test Scenario

Test Case

Traceability Matrix

Let’s discuss each of them in brief.

Test Plan: It provides you with the outline strategy which will be implemented for testing the application.

Test Scenario: Test scenario can be considered as a single line statement that notifies the area in which your application will be experimented. This artifact is needed for ensuring the overall procedure tested from the very start to end.

Test Case: Test Case is nothing but a set of conditions or variables under which a tester will determine whether a system under test satisfies requirements or works correctly. Below mentioned test cases are being checked during testing.

Functional test cases

Negative-error test cases

Logical test cases

Physical test cases

UI test cases

Traceability Matrix: It is also known as a Requirement Traceability Matrix (RTM). It contains a table which sketches the requirements when your product’s SDLC model is being created. These documenting artifacts can be applied for forward tracing which is to go from designing to coding or can be implemented for backward tracing as well which is the reverse of the forward tracing.

This brings us to end of Software Testing Documentation Artifacts. Now, let’s move further in this Software testing tutorial article and learn what is Defect Management?

What is the Defect Management process?

Defect management is a process of detecting bugs and fixing them. As bugs are a part of software industry, they occur constantly in the process of software development. The team members must write large pieces of code every day, and they usually don’t have time to think about how to avoid bugs. Hence, every software development project requires a process that helps to detect the defects and fix them.

Defect management process is conducted at the stage of product testing. Without realizing this, it would be hard to understand the nature of defect management.. Usually, the developers test their product themselves. Also, there is also a type of testing that is based on user involvement. The final users are often provided with an ability to report on the bugs they have identified. Nevertheless, this is not the best way of testing, because the users might not be capable of finding all the bugs.

The defect management process usually includes four steps.

The first step is the stage of the defect detecting

The second step is dedicated to the formulation of bug reports

The third step is to fix the bug.

In the final step, the bug list is created

Now, let’s move further in Software testing tutorial article and understand the bug detection process with the help of the bug life cycle.

Bug life cycle

A defect life cycle is a process in which a defect goes through various phases during its entire lifetime. It starts when a defect is found and ends when a defect is closed, after ensuring it’s not reproduced. A defect life cycle is related to the bug found during testing.

Bug or defect life cycle includes the steps as illustrated in the below figure:

Fig: Bug life cycle – Software Testing Tutorial

New: In this step, if a defect is logged and posted for the first time, its state is given as new.

Assigned:After the tester has posted the bug, the lead of the tester approves that the bug is genuine and he assigns the bug to a corresponding developer and the developer team. It’s state given as assigned.

Open: Inthis state, the developer has started analyzing and working on the defect fix.

Fixed: As the developer makes necessary code changes and verifies the changes then he/she can make bug status as ‘Fixed’ and the bug is passed to the testing team.

Test:At this stage, the tester does the testing of the changed code which the developer has given back to him to check whether the defect has been fixed or not.

Verified: Here, the tester tests the bug again after it got fixed by the developer. If there is no bug in the software, he approves that the bug is fixed and changes the status to “verified”.

Reopen: In case if the bug still exists even after the bug is fixed by the developer, the tester changes the status to “reopened”. In this state, the bug goes through the life cycle once again.

Closed: As soon as the bug is fixed, it is tested by the tester. In case, if the tester feels that the bug no longer exists in the software, he changes the status of the bug to “closed”. It implies that the bug is fixed, tested and approved.

Duplicate:In the bug life cycle, if the bug is repeated twice or the two bugs mention the same concept of the bug, then one bug status is changed to “duplicate”.

Rejected:If in case the developer feels that the bug is not genuine, he rejects the bug. Then the state of the bug is changed to “rejected”.

Deferred:If the bug is changed to deferred state means the bug is expected to be fixed in next releases.

This was all about the Bug Life Cycle and Defect Management Process. Now, let’s see what are the challenges with Manual Testing.

Challenges With Manual Testing

Testing of an application manually by QA testers is known as Manual Testing. Here, all the tests need to be performed manually in every environment, using a different data set and the success/ failure rate of every transaction should be recorded.

In the above figure you can see a man who manually verifies the transactions recorded. You can easily notify the challenges that he is facing may cause fatigue, boredom, delay in work, mistakes and errors because of manual effort. This led to the emergence of Automation testing. Now, let’s delve into the last topic of software testing tutorial article and see how Automation testing beats manual testing.

Automation Testing vs Manual Testing

Automation testing overcomes manual testing every time. Why? Because it is superfast, requires very less investment in human resource, not prone to errors, frequent execution of tests is possible, supports regression testing and also functional testing.

Let’s take an example and understand this. Say you have a login page and you need to verify if all the login attempts are successful, then it will be really easy to write a piece of code which will validate if all the transaction/ login attempts are a success or not (automated test case execution).

All these tests can be configured in such a way that they are tested in different environments and web browsers. Not just that, also you can automate the generation of result file, by scheduling it for a particular time during the day. Then you can also automate the generation of reports based on those results and what not.

Important point here is that automation testing makes a tester’s job, a whole lot simpler. Refer the above image which shows a more relaxed environment in which the same tester is working. If you wish to know more about Automation Testing and the widely used Automation Testing tool Selenium, you can refer to this Selenium Tutorial.

This was all about how automation testing is sparkling its way in the field of software testing. It brings us to the end of the article on Software Testing Tutorial. I hope you found it informative and it has helped in adding value to your knowledge.

If you found this “Software Testing Tutorial” relevant, check out the live-online Selenium Certification Trainingby Edureka, a trusted online learning company with a network of more than 250,000 satisfied learners spread across the globe.

Got a question for us? Please mention it in the comments section of Software Testing tutorial blog and we will get back to you.