Importance of Software Testing
Software testing is checking that the developed software is compliant with all required requirements of all stakeholders (e.g., customers and users). These requirements include functional requirements and non-functional requirements. Generally speaking, all sorts of requirements construct the building block of the quality of the developed software. Therefore, effective testing gives feedback to practitioners regarding what is compliant with the requirements and what deviates from those requirements for the sake of the successful delivery of software and the ultimate satisfaction of customers and users.
Basic Elements of Software Testing Template
In order to conduct software testing, a software tester needs to follow a template that informs testers what actions need to be done and how testing results are conveyed to other practitioners (e.g., designer, front-end developer, and back-end developer) who will address any observation, complaint or deviation from the required requirements of customers and users.
The basic elements of the software testing template are as follows: Number of scenarios, Scenario, expected outcome, actual outcome, result, and notes. Firstly, several scenarios are important to provide unique identified scenarios that facilitate the recognition of every scenario. Secondly, scenario refers to the actions and events a software user has to do to perform a task in software. For instance, clicking the install button is an event that is done by the user in the very beginning for installing software. Similarly, clicking a button to insert a set of information in a form is another scenario. Also, clicking on a hyperlink to navigate to another webpage is another scenario.
However, the word “scenario” is tricky and needs to be understood well. A scenario is not just an action or event but also the circumstances associated with this event. For example, the form “login” that addresses the functionality of logging contains a “click” event when a user clicks on a button to insert logging information such as e-mail and password. But this event is associated with some circumstances, such as a user entering an invalid e-mail and invalid password, entering a valid e-mail and valid password, or avoiding entering an e-mail or password. Every circumstance associated with the scenario needs to be considered individually because it has to be handled separately by the software system.
Thirdly, expected outcome refers to the ideal outcome that is logically expected and compliant with what customers and users agree upon when they discuss and write requirements. For instance, the expected outcome for the scenario of clicking the “insert” button in the login form when a user enters a valid e-mail and valid password is enabling the user to access the software services based on the privilege of the user and changing the login icon to the user name. Of course, the expected outcome can be more comprehensive to address every required outcome based on the event and its associated circumstances in every scenario.
Fourthly, the actual outcome is the resultant outcome after doing an event with its associated circumstances that represent the scenario. A tester must document exactly what he observes or notices during every scenario. For instance, an actual outcome can be showing an error message to the user beside an invalid password or a successful insertion of data in case of valid inputs. It is important to take into consideration that noticing and recording all details of expected outcomes and actual outcomes is highly important for effective testing. In real life, the tester can ignore or forget to write sufficient information, which may prevent achieving high-quality software.
Fifthly, the result is important to document the status of the scenario. Actually, the result consists of three different statuses: pass, fail and pass with modifications. While pass refers to the success of a scenario where the actual outcome matches the expected outcome completely without any deviation, fail refers to a great deal of deviation from the expected outcome. Moreover, passing with modifications refers to the success of the scenario, but there is a need for minor modifications.
Lastly, notes represent direct guidance for practitioners to consider deviations from the expected outcome. For instance, notes can be as follows: “Developer needs to notify the user via a warning message in red when he misses entering a valid password”. In essence, notes provide explicit instructions on what a software developer or designer does to avoid deviations from the expected outcome. Notably, the notes have to address a specific role in the software project. This means that if the deviation is related to the designer, a tester has to mention the designer in the notes, and if the deviation is related to the software developer, whether front-end or back-end, a tester needs to mention one of them based on the nature of the deviation.
Figure 1: The basic elements in the software testing template
Guidelines for Effective Software Testing
- The expected outcome includes sufficient details about all quality attributes of every function, which must be written comprehensively in the requirements specification document. However, in real life, not all requirements are written precisely and completely; requirements engineer or business analyst tends to write abstract description of functions and, in most cases, forget or does not have the knowledge to write requirements specification document precisely. Accordingly, the software tester needs to exert much effort to write the expected outcome based on his knowledge of the software domain, cognitive ability, and common practices of software quality to overcome the limited details in the requirements specification document.
- It is important to divide and organize the information of every element in the software testing template to increase the readability of the information. For instance, every quality attribute in the expected outcome needs to be written in a separate line. Similarly, every note has to be written in a separate line.
- It is important to include all possible scenarios to cover all possibilities of events that happen in software and can encounter all types of users (e.g., novice or expert) during their use of the software. Sometimes, software testers fail to take into consideration some scenarios that may happen out of lack of concentration, lack of technical knowledge, or lack of awareness that there are multiple types of users who have the different technical capacity that affects their behavior when they use software systems.
- Software testing is conducted continuously with every added feature and with every change to ensure that nothing affects the previous testing results. It is possible that software developers commit mistakes when they implement any new feature or when they correct any previous deviation from the expected outcome.
- In an ideal situation, software testers must understand programming languages, website development, desktop application development, and mobile application development. This understanding facilitates writing test cases in an effective manner.
- Software testing tools are of crucial importance in software testing to automate testing tasks and to record multiple numbers related to software quality, which may be difficult in manual testing. However, the cognitive ability of the software tester and logical thinking construct the silver bullet that will save the software tester in his career.
- What cannot be measured cannot be controlled; therefore software tester needs to read requirements documents, discuss requirements with the requirements engineer, customers, and users whenever there is missing information or imprecise details, and explore all accepted measures of software quality in the common standards in the case of missing information about these measures in requirements documents.
- Software tester acts like a detective, so be suspicious, suspicious, and suspicious about the success of every included scenario during software testing.