Software Testing Tutorial
- Introduction to Software Testing
- Principles of Software Testing
- Software Development Life Cycle (SDLC)
- Software Testing Life Cycle (STLC)
- Levels of Testing
- Database Testing
- Ad-hoc Testing
- Testing Types
- Test Closure Report Preparation
- Test Report Preparation
- ISTQB Organization and Certification Overviews
1.1 What is Software?
1.1.1 Software Overview
Software is a set of instructions that enables a computer to perform certain tasks. Computer software may include data, instructions, programs, libraries etc. A computer system processes the set of instructions or programs to execute various tasks. In fact, it is the software on your computer, smartphone or tablet that makes it possible for you to interact with it.
Common examples of software include Microsoft Windows, Microsoft Word, Internet Explorer, Video games, Apps etc.
1.1.2 Types of Software
Broadly, software can be categorized into two types:
System software forms a middle layer between the computer hardware and user applications. It interacts directly with the computer hardware and provides functionality to run software applications.
Common examples of system software include:
- Operating systems e.g. Windows, Linux
- Device drivers e.g. Printer driver
- Utility programs e.g. Virus scanners
Application software executes only specific functions on the computer system. Due to the varied range of applications that computers perform nowadays, there are numerous types of application software available.
- Common types of application software include:
- Word processor e.g. Microsoft Word
- Database software e.g. Oracle
- Graphic software e.g. Adobe Photoshop
- Browser software e.g. Internet Explorer
1.2 What is Testing?
Testing is a method to find defects, errors or gaps in a process, program or even a product. In other words, testing determines that the overall process is functioning based on the actual requirements.
For example, a car is tested for speed, efficiency and safety requirements.
1.3 What is Software Testing?
Software testing is the process of finding defects or errors in a software system. It evaluates the software and determines whether it meets specific requirements. The errors and defects can then be corrected according to the specifications. Software testing, therefore, ensures that the system is bug-free. Testing can be done either manually or by using automation tools.
Importance of Software Testing
- Testing software for correctness and quality is important as software bugs can prove to be expensive leading to huge financial losses. Sometimes software glitches may even result in the loss of human lives.
- For instance, a software bug in the Bloomberg terminal in London in 2015 crashed the entire system. This led to a huge crisis impacting the financial markets worldwide.
- A software glitch in the airbag sensory detectors of Nissan cars forced it to recall one million cars, as accidents were reported due to the defect.
- Airbus 300 of China Airlines crashed killing around 260 passengers. The reason for the crash was a software bug in the airbus’s software system.
1.4 Testing Scope
Software testing is carried out within specific timeframes. Usually, most of the time available for software development and testing is utilised in creating the software and its various features.
Therefore the time left for testing is typically limited. Hence it is critical that the scope of testing is established carefully.
The following tips will help you focus on the important items while creating the testing scope:
- Create a test plan that is clear and accurate.
- Clearly mention the testing processes (load, performance, experimental testing) in the plan.
- Mention the elements that will be tested manually or with automation tools in the test plan.
- Create test cases that add value to the project.
- Determine the testing technique that will be used to test each feature.
- Test only those software elements that need to be tested, that is concentrate on those features that have been specifically requested by the stakeholders. It is important that you don’t go overboard here.
- Take into account the continuous testing perspective, when creating the testing scope. It is always worthwhile to test the entire application thoroughly to minimize future risks.
1.5 Responsibilities of a Software Tester
A software tester is responsible for testing the software, analysing the defects and submitting the observations to the software development team for rectification.
Some of the important responsibilities of testers are given below:
- In the test planning phase, testers assess the testing requirements and specifications. They are required to read all the documents and understand what needs to be tested.
- Testers develop test cases and test data and prioritize the testing activities.
- In the test execution phase, testers execute the tests, log the problems, evaluate and document the results.
- At the time of reporting the defects, testers have to define the priority and severity of each defect.
- Testers continually monitor the test environment using tools if required. They collect the performance metrics and document the same.
- Whenever changes are made to the software to fix the bugs, testers have to carry out a regression testing on the software every time.
- Another important task of a tester is to review the work (test specifications, test results and defect reports) of fellow testers.
1.6 Products vs. Projects
When a company develops a software application with its own budget, the application is called a software product. The application is then sold in the market as a ‘ready to use product’.
Customers can buy the product off- the-shelf with licenses.
Common examples of software products include Windows (Microsoft), Tally (TCS), Acrobat reader/writer (Adobe) etc.
When a company develops a software application with a customer’s budget, it is called a software project. The application is customised basis the customer’s requirements and specifications.
An example of a software project would be a software application ordered by an automobile company to maintain its office inventory, purchase details, supplier details etc. It is important to note that this application would be used only by this company and no one else.
1.7 Testing a Product vs. Testing a Project
From the testing perspective, there is not much difference between the testing of a software product or a software project. However, given below are a few of the notable differences.
- In a software project, once the test plan and test cases are created, they need to be sent to the customer for approval and sign-off. In software products this is not necessary.
- In a software project, during the testing phase the tester may need to directly interact with the customer. However, in software products, the tester may only need to communicate with the business analysts.
- The testing timelines are usually stringent in software projects as compared to software products where they are more flexible.
- In software projects, the ultimate authority of the developed program lies with the customer. This is not so in case of software products.
- In software projects, the customer gives the budget for the development, whereas in software products the budget is given by the company that develops it.
- Every software project is unique with new features and functionality. But the basic functionality always remains the same in a software product. Existing features are updated or modified.
- In software products, licensing is a very important feature. The license registration dates, expiry dates, types of licenses etc. need to be tested for a particular product. However, licensing is not required for software projects.
1.8 Psychology of a Tester
1.8.1 Why is Testing Necessary?
As we have seen, testing is critical for a software application or product. Testing is necessary to minimise errors or faults in the software during the development phases itself. It improves the overall quality of the software. Testing ensures that the application will not result in bugs or failures in future causing financial losses. It is expensive to rectify errors in the software in the later development stages.
1.8.2 Who Tests?
- Those who wrote the code.
- Members of the same development team.
- Members of a different group (independent test team).
- Members of a different company (a testing consultancy/outsourced).
1.8.3 How Often to Test?
The testing scope determines how often testing should be done for a particular application or product. Constraints such as delivery dates, and project schedule impact the testing time. The size and complexity of the application determines the amount of test execution.
Always remember that additional testing does not always mean new defects will be found compared to the testing effort already exhausted. However, spending more time in testing may be useful when more defects are found that may lead to the likelihood that there may be more bugs in the system for which more testing time is required.
1.8.4 When to Start Testing?
Testing should be started early in the software development life cycle. An early start will not only minimise the time spent in rework but also reduce the cost manifold and help in delivering an defect-free software to the customer.
1.8.5 When to Stop Testing?
Testing is usually stopped based on three factors:
- Delivery dates
- Reduction in defects
- Increase in overall testing costs
- Software is a set of instructions that enables a computer to perform certain tasks.
- Types of Software:
- System Software
- Application Software
- Testing is a method to find defects, errors or gaps in a process, program or even a product.
- Software testing is the process of finding defects or errors in a software system. It evaluates the software and determines whether it meets specific requirements.
- A software tester is responsible for testing the software, analysing the defects and submitting the observations to the software development team for rectification.
- When a company develops a software application with its own budget, the application is called a software product.
- When a company develops a software application with a customer’s budget, it is called a software project.
- Testing is necessary to minimise errors or faults in the software during the development phases itself. It improves the overall quality of the software.