Questions make us learn things. Every Question deserves a satisfying answer. So, let us pose a few questions more here.
Why is Software Testing necessary?
When we are testing something we are checking whether it is working well. So, why is testing needed? Testing is necessary because everyone makes mistakes. So we should assume that our work contains mistakes, and must check our own work. While some mistakes are small and can be ignored, some may be expensive.
As consumers of products (home appliances like washing machine, for instance) and services like e-payment systems at shopping malls, we would certainly get annoyed when they don’t work or work with reduced performance. Who would be happy if the washing machine tears our clothes? How do you feel when you’ve to wait for a long time to make payment at a shopping mall?
Sometimes defects like these occur in the software systems. Therefore, Software Testing is necessary to find and rectify defects, and to avoid system failure. Now comes our next question:
What is software testing?
Wikipedia defines ‘Software Testing’ as “an investigation conducted to provide stakeholders with the information about the Quality of the product or service under Test”.
Quality: Testing helps us to find the Quality of software in terms of the number of defects that are found in Functional and Nonfunctional attributes. Quality of software can only be assured when the found defects are fixed. Software systems are designed to deliver customer specifications. Quality, in other words, also points to validating the functionality of software to the desired specification and should be assured in following terms of:
So, What does Software Testing exactly refer to?
Is software testing all about Quality alone? The answer is a resounding ‘No’. Software testing is about Simplicity, Ideas/Approach, Thinking like an end user, Coverage, Documentation, Finding defects, Time management.
Simplicity: Testing is about building simple applications as preferred by users. So testers should recommend ideas to simplify applications in terms of functional and nonfunctional attributes – like simplifying labels, buttons, alerts and appearance – to make them user-friendly.
Ideas/Approach: Testing is about the approach to find defect(s). No two persons can look at a issue in the same way and will have different ways of approaching a problem. Similarly, different applications need to be tested differently. An application operating with a large amount of data (ex: Railway tracking system) should be tested differently from an application which involves a large number of users.(ex: social networks).
Think like an End user: This is one common suggestion that we testers hear everyday. Applications should be designed in such a way that the user navigates the application with ease and convenience. Testers should check whether attributes like buttons, warnings or alerts are user-friendly. Thinking from the user perspective also involves handling negative scenarios which is equally important because we cannot expect every user to have perfect knowledge about the application. Thinking out of the box would help testers to find defects and enhance the quality of applications/software.
Coverage: More coverage ensures better quality of the application. Coverage involves listing of all the possible scenarios, negative conditions, and boundary conditions, prioritizing the test cases, and preparing the RTM (Requirement Traceability Matrix). Prior preparation of these ingredients results in better Testing recipe.
Documentation: Documentation not only guides testers to perform effectively but also helps in tracking test status and enhancing flexibility. Adapting good Coverage, and listing all the test cases, test scenarios, test data and defect logs along with screenshots & videos helps other resources to perform further testing in the absence of initial testing resource. However, different models of testing like V model and Agile model involve different types of documentation styles.
Finding defects: When we encounter a mismatch between the expected result and the actual result, we consider it a defect. Every defect fixed adds to the quality of the application. No defect should be ignored, however minor it is. Defects can be observed significantly while considering negative scenarios or when performing an adhoc testing. These can be raised effectively when the Tester is fully aware of every bit of functionality and requirements of the software.
Time Management: We already know that Quality of software is measured in terms of the number of defects found. But it is equally important to realize that Defects found after the test cycle has negative impact like increasing cost. Testers are prone to tight schedules, which makes us overlook a few defects sometimes. Appropriate Testing in available time should be the objective for every tester. Considering attributes such as Requirement analysis, Scope of testing, Defining test strategy, Estimating Test effort & test team, and Defining test schedule will definitely yield best testing results.
If there is something else which is of utmost importance for software testing, it is ‘Attitude’. No work makes sense when the base approach lacks its objective. Testers need the right attitude to do the right job in the right place.
Collaboration within the team and with other teams would be of great help. Testers should approach findings on the application/software positively, in a fact-focused manner, rather than criticizing the person who made the app. Finally, Testers’ attitude should be about working towards a common goal of “delivering better Quality systems”.
(Subha kanth is a Software QA Trainee at [x]cubeLABS. He graduated in Electronics and communications engineering from SASTRA University. When not chained to work, he loves exploring Software Testing practices and blogging on various aspects of QA.)