This is a complete guide to Software Testing.
In this guide you’ll learn everything there is to know about this Software Testing, including:
- Life Cycle
- Lots more
So if you want to get the most out of Software Testing, this guide is for you.
Let’s jump right in.
Chapter 1: Introduction to Software Testing
Software Testing is a process in which an application under test is validated against the defined requirements. Software testing is considered as an important activity in the software development lifecycle.
Importance of Software Testing
Software testing is very important because it reflects the brand value of the company directly. Let’s assume this scenario, you are trying to buy a product from a new e-commerce website. When you are searching for the product you come across this new website which has a price that is deeply discounted than other websites. The reason is that they are trying to attract new customers. You are trying to buy using this website. When you are trying to make your purchase let’s say you are facing a lot of technical challenges like you are not able to register as a new customer, when you add the product and move to the cart section you are not able to see the product that you added or when you’re trying to make the purchase your payment fails. You don’t need to face all these scenarios for you to abandon the website. Just one scenario that I mentioned is enough for you to avoid that website for your current purchase.
This should have happened to everyone in various scenarios. The main reason for this failure is because they did not undergo a proper and rigorous software testing of their application. Companies should understand the importance of abandoned sales and how they can be avoided which they have started doing in recent years. That’s the reason Software testing has started thriving as an independent and important activity in the software development lifecycle.
What do you need to be a successful Software Test Consultant
To be a successful software testing consultant you’ll need to understand the functionality of the application under test. Building something is always tough but breaking it is easier. As a software test consultant, you are paid to break something that was built by someone. The main trait of a Software Test consultant should be to look for errors. Apart from checking if the application meets the defined requirements, it is also your duty to look at it from an end-user perspective and try to identify errors.
Chapter 2: Software Testing Levels
- Unit Testing
- Integration Testing
- System Testing
- User Acceptance Testing
1. Unit Testing
Unit Testing is the first level of software testing that is done by the software developer. As soon as a piece of code is written by the developer for a particular module or functionality, it will be tested by the developer or a teammate.
Since this is the first level of testing on a unit level it helps to identify bugs in areas like inputs, outputs, program logic, etc. Fixing these kinds of bugs in this stage will save a lot of costs and rework when compared to finding these kinds of issues during the testing phase or in production if testing is not done
Some disadvantages of Unit testing are, most of the time unit testing is not done properly by the development team due to reasons like time constraints. Since this is done on a unit level it unearths only the defects of that particular unit. There are scenarios when a unit will perform well independently but when integrated with another unit, it will start failing.
List of Unit Testing Framework/Tools used to create accurate unit tests:
2. Integration Testing
Integration Testing is the phase in which individually built and tested units are integrated together and tested. The main objective of Integration testing is to validate if the integrated modules work properly as per the defined requirements without any issues.
After the Unit test is completed we can immediately start with the Integration testing. A few completed blocks or functionality of the application can be integrated together and tested. This will help uncover defects that were not found during the Unit test phase.
Since multiple modules of an application will be involved in Integration testing it becomes complex when testing out different sets of integrated modules. The combinations could be endless which makes it impossible to test the entire application.
- Citrus Integration Testing
- SMART INTEGRATION TEST ACCELERATOR (SITA)
- Rational Integration Tester
3. System Testing
System testing is defined as a test in which all the completed functionalities of the entire application is built into one single application and tested to verify if it meets the defined requirements.
This is the phase in which we start testing the end to end scenarios of the application which would help uncover the majority of defects that do not come under the radar during the unit or integration testing.
This is the most important testing which needs to be done properly so that it helps to identify the defects that do not meet the defined requirements. So if this is not done properly it will impact the entire project.
There are a lot of tools that can be used for system testing. Some examples are :
- UFT – Automation Testing
- LR – Performance Testing
- ALM – Test Management
- Appium – Mobile Testing
4. User Acceptance Testing
User acceptance testing is the final testing that is normally conducted by the end-user of that application. A subset of the real users are identified and they conduct this user acceptance testing.
Before the application goes into production this user acceptance testing helps to uncover defects from an end user perspective
Identifying and getting a team of end users is a challenge. There is no control on the test scenarios that will be tested during this phase which might lead to a lot of defects that might not be under the scope of this project.
Chapter 3 : Types of Software Testing
Software testing is classified into two main types: Functional and Non-Functional.
Functional testing involves testing the functionality of an application under test. Functional testing has many types like
Automation Testing :
Automation testing is testing which is performed by a software application that automates the functional flow of the test scenarios and executes them automatically. With the help of automation testing, we can execute multiple scenarios in a shorter period of time
Smoke Testing :
As soon as the application is delivered for testing a quick smoke testing is done to ensure that the application works properly by performing some basic validations on the application
Sanity Testing :
Sanity testing is high-level testing which is conducted to validate if a new application deployed in the testing environment can be accepted for the testing effort
Regression Testing :
Regression testing is testing which is done after a defect fix or when a new version of the existing application is deployed. This testing checks whether the defect fixes are working fine and also makes sure that those defect fixes did not break any other functionalities in the application
Usability Testing :
Usability testing is conducted to validate the user-friendliness of the application. This test is done to ensure that the users are able to navigate and perform all the available actions without any issues
Non-Functional testing involves testing the Non-functional areas of the application under test. Non-Functional testing has many types like
- Compliance Testing
- Documentation Testing
- Performance Testing
- Security Testing
- Recovery Testing
Compliance Testing :
Compliance testing is a type of testing which determines whether the application under test complies with the defined application functional and non-functional requirements
Documentation Testing :
Documentation testing is a type of testing which ensures that the documentation of the application conforms to the actual functionality of the application. Eg: User Guides
Performance Testing :
Performance testing is a type of testing which determines the application under test meets the defined performance requirements without any degradation in the response times
Security Testing :
Security Testing is a type of testing which is conducted to uncover the security issues and vulnerabilities in an application so that it does not impact the users
Chapter 4 : Software Testing Life Cycle
The Software Testing Life Cycle (STLC) is a testing process which is performed in an order while conducting the software testing for an application under test
The different phases of software testing life cycle are as follows:
- Requirements analysis
- Test Plan
- Test Design
- Test Environment Setup
- Test Execution
- Test Closure
This is the first phase of the STLC. The requirements document is shared with the testing team. The requirements are analyzed by the testing team from a testing perspective and a clarification log is created to record all the doubts that need clarification from the respective team which might include the project technical team, business team, stakeholders.
The next phase is the Test Planning in which the testing team prepares a detailed test plan document which will have details on the In-Scope, Out of Scope, Prerequisites, Dependencies which will be reviewed and approved by the project team before starting the Test Design phase
In the Test Design phase, the testing team prepares the detailed test cases for each of the requirements. The required test data and other dependencies are mentioned in the test cases. The test cases are then reviewed and approved by the project team before starting the Test Execution phase
Test Environment Setup
Test environment setup is the process of setting up all the resources like software, hardware for the testing team for execution. The test environment setup is done by the project environment management team.
In the Test Execution phase, the testing team starts executing the approved test cases and the results are updated in the test management tool. Based on the agreed communication plan the status reports are published to the stakeholders. Defect Triage meetings are scheduled on a regular basis to discuss the defects with the project team.
During the final phase of the project, the testing team prepares the final test closure document with details on the results of each test case and other findings during the test execution phase. This report is shared with the project team for their review and approval. Once the project team approves the final test report, the project is concluded.
Chapter 5: Software Testing Tools
There are different types of software testing and each one has a lot of tools that are available both as commercial and open source.
Functional Automation Testing Tools
Selenium is an open-source functional testing tool with absolutely no cost. It can be used to test web applications, written in any number of languages like Java, C#, Perl, Python, and Ruby.
Coded UI Test
Coded UI Test is a Microsoft product,using which we can automate our application tests. This is a commercial tool.
SoapUI is an exceptional open-source functional testing tool which can also be used for load, security and compliance testing.
IBM Rational Functional Tester
IBM Rational Functional Tester is another functional testing tool which can be used for automated testing.
Watir (web application testing in Ruby) is an open source automation tool which consists of Watir Classic, Watir Spec, and Watir WebDriver.
Unified Functional Testing
UFT (Unified Functional Testing) is a testing tool owned by MicroFocus which is widely used for function, regression and service testing of the applications.
Test Complete is a testing tool owned by SmartBear which is used to test mobile, web and desktop applications.
SOAP UI is a tool that is mainly used for API testing. This tool supports both SOAP and REST protocols.
Postman was a Google Chrome browser plugin initially which then transformed into a full-fledged application that can be used as an API testing tool.
Performance Testing Tools
Micro Focus LoadRunner is the industry leader in performance testing which supports almost all protocols.
Apache JMeter is an open-source performance testing tool that is one of the best performance testing tools. JMeter is the most preferred tool for those who are ok to use open-source.
Silk Performer is another performance testing tool which also supports the majority of protocols.
LoadNinja by SmartBear helps us to create script-less and refined load tests which reduces the script creation time.
LoadView by Dotcom-Monitor can be used to demonstrate the actual user experience by showing the performance of the application under test
NeoLoad helps in automating the design, maintenance, and analysis of the test for the application under test
WebLOAD is a load testing which helps to generate actual load scenarios to replicate real time events
Rational Performance Tester
Rational Performance Tester (RPT) is a performance testing tool by IBM Corporation which is also used to evaluate the performance of an application under test.
Test Management Tools
ALM / Quality Center
Application Lifecycle Management is a quality management software by Micro Focus which can be used as an end to end tool for all the testing needs for a project.
Zephyr provides integrated quality metrics that provide real time data on the project status
Hiptest is a cloud test management platform that supports continuous delivery and bridges the gap from manual to automated testing. It provides a real-time environment for creating, executing and maintaining tests.
PractiTest is a cloud based test management tool which provides the best in class End-to-End system to meet the Testing and QA needs.
TestRail helps with test case management and make it easier to manage the overall testing activities of the project
Test Collab helps to manage and assist teams to execute testing efficiently and circumvent failures.
TestLink is a web-based tool which provides detailed reports and gets easily integrated with other tools.
Chapter 6: Software Testing Artifacts
Software Testing Artifacts are the documents that are prepared and delivered during each of the phases of the test life cycle. These documents capture the important details of the project which will be used to share with the project stakeholders.
- Test Plan / Test Strategy :
The Test Plan / Test Strategy is the first document that is prepared by the testing team which will have the details about the testing approach, scope, communication and contact details
- Test Case :
The Test Case is the document which defines the test steps of the action that needs to be performed to validate the test scenarios. This test case document will be shared with the project team for their review and approval
- Test Scripts :
The manual test cases that were created will be converted into automation test scripts using various automation tools
- Test Data :
Test data document contains the data that will be required for testing the scenarios. Depending on the types of test test data should be prepared so that there are no delays during the test execution
- Defect Reports :
Defect report is generated from test management tools which provides the necessary details about a defect so that it will help the developers to resolve those defects
- Requirements Traceability Matrix :
RTM is developed to ensure that all the requirements are converted into test cases and tested. This report will map each of the requirements with the test cases that were written for those requirements
- Test Closure Report :
This is the final document which is prepared by the team which contains the details about the test results, defect details, environment details etc. This document will be reviewed by the project team and approved which officially completes the testing activities for that project.
Chapter 7: Software Testing Tutorials
These are some of the resources that you could use to learn software testing
- Udemy – The Complete 2020 Software Testing Bootcamp (Paid Course)
- Ministry of Testing – Essentials Online Training (Free Course)
- Top 100 Software Testing Blogs and Websites To Follow in 2020
Chapter 8: Software Testing Influencers
These are some of the Software Testing Influencers who are promoting Software Testing across various platforms
- James Bach Author, speaker: Satisfice
- Michael Bolton: Author, speaker: DevelopSense
- James Whittaker: Author, speaker (Google, Microsoft): Blog
- Lisa Crispin Author, speaker: Blog
- Janet Gregory Author, speaker: Blog
- Joe CaColantonio (Test Guild) : Blog
- Bret Pettichord Author, speaker: Blog
- Angie Jones: Author, speaker (Applitools): Blog
- Paul Grizzaffi (Responsible Automation): Blog
- Eran Kinsbruner (Continuous Testing): Blog
- Chris Kenst : Blog
- Richard Bradshaw (The Friendly Tester): Blog
- Alan Richardson (Evil Tester): Blog
I hope you enjoyed my new guide to Software Testing. This should have helped you to learn about Software testing.