The process of software testing is an essential process in the development of a software and is a sub-branch of Software Development Life Cycle (SDLC). The main motivation behind testing a software application is to find errors in the application and to ensure that the software performs as designed without any defects and to enhance the experience of the user by providing them with a flawless experience when using the software (Jindal 2016).
The delivery of a buggy software can have various serious repercussions for a company in terms of financial loss, ethical issues, loss of brand value, and several other issues. The company can incur heavy financial losses when trying to fix the software by methods of debugging due to the requirement of enormous resources in terms of labour (Sinha and Das 2021). If a bug is caught late into development, then it is extremely difficult to resolve the bug. Several large companies across the globe incur heavy financial damages in trying to fix bugs. In case of a software in health care sector, bugs could lead to misdiagnosis of a patient which can not only lead to serious damages to the patient but also may lead to litigation which would seriously damage the business of a software company.
In software development a defect or a bug is a flaw in the software which hampers the performance of the software and leads to an unsatisfactory experience for the user of the software. A bug is an informal name for a defect which hinders the application and makes it not work as per the requirement (Nayyar 2019). A bug can be one of several issues such as a minor error, or a complete failure in execution. A bug occurs in development of the software due to mistakes of the developers in program design or during the implementation of the design. A software bug or a defect can be broadly classified in one of seven categories. These categories include functional bugs, performance bugs, usability bugs, compatibility bugs, logical bugs, syntactical bugs, and security bugs (Fraser and Rojas 2019).
Debugging is a multistep process which consists of finding and fixing bugs or defects in a computer application. As discussed earlier, the existence of bugs in a program hampers the its functionality; debugging is done in such cases and the bugs are found, analysed, and corrected to ensure that the program performs as designed (Lowe 2019). Debugging consists of several steps, these steps are: –
There are various difficulties to debugging a software; for proper debugging a software the bug must be reproduced accurately as it was identified. The process of debugging usually involves a lot of pressure, as bugs must be fixed as soon as found o limit the incur of losses due to the bugs. A debugger is a piece of software that helps developers identify bugs in a piece of code and to correct these bugs. Through a debugger, the control flow of a software is handed to the user, where the user can check each line of code and the effect the code has.
0: Start
1: GET heart_rate_of_patient
2: Breakpoint
3: IF heart_rate_of_patient > 150
4: Breakpoint
5: PROMPT “Alert: Patient may be experiencing tachycardia as heart rate is 150 or greater!”
6: IF heart_rate_of_patient <= 60
7: Breakpoint
8: PROMPT “Alert: Patient may be experiencing tachycardia as heart rate is 60 or lower!”
9: Stop
In the above algorithm, breakpoints have been set after step 1, step 3, and step 6. The first breakpoint stops the program after the heart rate of the patient is determined, and the two latter breakpoints stop the flow of the program before an alert is sent.
Line: 12
Bug Type: Logical bug
Effect: Instead of reporting patients with blood pressure greater than 90, the pseudocode reports when patients have a pressure of lesser than or equal to 90.
Fix: if (blood_pressure <= 90)
Line: 16
Bug Type: Logical bug
Effect: Instead of reporting blood pressure below or equal to 140 in a patient, the pseudocode reports when patients have a pressure greater than 140.
Fix: if (blood_pressure >= 140)
The smallest testable component of a program is called a unit, and unit testing refers to the type of testing carried out on these units or components of a software application. A unit of a program can be a module or a function. The primary objective of unit testing is to ensure that each individual unit of a software application is free from bugs and performs as designed by the developers (Crudez 2020). A unit test is usually carried out by a developer during the process of development and this type of test is typically the first level of testing (Prado and Vincenzi 2018). This type of testing is a part of the whitebox testing techniques.
Typically, a software application is developed as a collection of modules that integrate with one another to provide the required functionality. An integration test is a type of test carried out where the integrated modules of a program are tested as a group. The main objective of this type of testing is to ensure that there are no bugs when different modules of a program are integrated and communicate with one another. There are several reasons why an integration test is necessary, this test can identify if there are errors in the interface of the different software modules, whether adequate exception handling has been carried out, to check if the changes made to the code are bug free.
This type of testing is typically done by real life users of an application, and is part of user acceptance testing of a program. A beta testing is done before the final software product is released to the users and is the final form of software testing an application goes through in its lifecycle. Through a beta test the development team can get direct feedback from real life users of the system which can be an immense help in realizing the true ability of the software application in the environment where real life users will use the program (Hai-Jew 2019). Before the final product is released to all users, a beta version of the application is released to a few select users to realize the quality of the application.
Flowcharts and pseudocodes are two techniques which helps developers achieve the same function. These techniques are used to design the basic structure of a program and how the control of the program will flow from one line to another. Flowcharts provide a pictorial representation of the program while pseudocode provides a representation of a program using mathematical operations. It has been noted that several employees prefer to model a program using flowcharts while other prefer pseudocode to achieve the same (Subero 2020). Owning to this preference of employees, the company has introduced a new policy where for every algorithm in the company will be accompanied by a flowchart and a pseudocode making it easier for all employees.
A defect life cycle which is also known as bug life is the states that a defect encounters in its lifecycle. There are six states of defect life cycle, these are new, assigned, in progress, completed, won’t fix and closed (Agrawal, Choudhary and Sharma 2019)
Figure 1: Bug Lifecycle
New – This state is assigned to a bug when it is introduced to the system.
Assigned – After a bug has been found, the bug is either allocated to the development team for debugging or the bug is rejected. The bug is assigned in this stage.
In progress – After a bug has been allocated to the development team for debugging, the state of the bug moves to in progress.
Completed – After the development team fixes the bug, the bug is moved to the completed state.
Won’t fix – After a bug has been assigned, there may be several reasons for which the bug won’t be fixed. This may be due to design or the bug may be fixed in the next iteration of development. These kind bugs are moved to this won’t fix state.
Closed – When the bug is resolved, it moves to the completed state.
This metric defines the quantity of bugs established in the system divided by the total size of the software in a specified timespan (Dalla Palma et al. 2020). The size of the software is defined in terms of KLOC (thousand lines of code).
This metric is calculated in time and signifies the amount of time taken to fix a particular bug (Kassie and Singh 2020). The formula of defect age is the variance in time from when the defect was confirmed to the time when the defect was resolved.
MTBF or Mean time between failures is calculated as the mean time taken between failures. This metric helps in calculating the reliability of an asset (Alavian et al. 2019). The formula for calculating MTBF is the total working time subtracted by the accumulated breakdown time and the whole of this is divided by the quantity of breakdowns.
MTTR or mean time to recovery is the average time taken to recover a system from failures. The formula to calculate MTTR is total maintenance time divided by the total number of repairs (Ruiz et al. 2021). This metric signifies the time taken by the development team to resolve the defects in the software.
System availability is a degree of the possibility that a program has aborted or needs to be repaired when it needs to be used. The percentage of system availability is the total time the system was active by the total operational time.
In this report, the importance of testing for a software company has been discussed. Bugs in a software can result to heavy losses for any company and wastage of manpower. In this report, a bug has been defined and why it is necessary to debug software application during development. A basic test plan has been described by discussing three important types of testing. After a bug is found in a software, the lifecycle that a bug goes through in SDLC has been discussed in brief along with several important metrics to evaluate the quality of a software.
References
Jindal, T., 2016. Importance of Testing in SDLC. International Journal of Engineering and Applied Computer Science, 1(2), pp.54-56.
Nayyar, A., 2019. Instant approach to software testing: Principles, applications, techniques, and practices. BPB Publications.
Fraser, G. and Rojas, J.M., 2019. Software testing. In Handbook of Software Engineering (pp. 123-192). Springer, Cham.
Prado, M.P. and Vincenzi, A.M.R., 2018. Towards cognitive support for unit testing: A qualitative study with practitioners. Journal of Systems and Software, 141, pp.66-84.
Crudez, D.S., 2020. System Integration Testing in Large Scale Agile: dealing with challenges and pitfalls.
Hai-Jew, S., 2019. Alpha Testing, Beta Testing, and Customized Testing. In Designing Instruction For Open Sharing (pp. 381-428). Springer, Cham.
Subero, A., 2020. Algorithm Planning and Design. In Codeless Data Structures and Algorithms (pp. 123-137). Apress, Berkeley, CA.
Dalla Palma, S., Di Nucci, D., Palomba, F. and Tamburri, D.A., 2020. Toward a catalog of software quality metrics for infrastructure code. Journal of Systems and Software, 170, p.110726.
Kassie, N.B. and Singh, J., 2020. A study on software quality factors and metrics to enhance software quality assurance. International Journal of Productivity and Quality Management, 29(1), pp.24-44.
Alavian, P., Eun, Y., Liu, K., Meerkov, S.M. and Zhang, L., 2019. The (α, β)-precise estimates of MTBF and MTTR: Definitions, calculations, and induced effect on machine efficiency evaluation. IFAC-PapersOnLine, 52(13), pp.1004-1009.
Ruiz, N., Winter, R., Rosa, F.D.F., Shukla, P. and Kazemian, H., 2021, July. Method and tool for generating table of relevance in literature review (MTTR). In Proceedings of the 22nd European Conference on Knowledge Management ECKM 2021 (pp. 648-656). Academic Bookshop.
Agrawal, A.P., Choudhary, A. and Sharma, H., 2019, March. An Empirical Study on the Issues of Traditional Defect Life Cycle in Agile Model. In International Conference on Advances in Engineering Science Management & Technology (ICAESMT)-2019, Uttaranchal University, Dehradun, India.
Lowe, T., 2019, October. Debugging: The key to unlocking the mind of a novice programmer?. In 2019 IEEE Frontiers in Education Conference (FIE) (pp. 1-9). IEEE.
Sinha, A. and Das, P., 2021, September. Agile Methodology Vs. Traditional Waterfall SDLC: A case study on Quality Assurance process in Software Industry. In 2021 5th International Conference on Electronics, Materials Engineering & Nano-Technology (IEMENTech) (pp. 1-4). IEEE.
Essay Writing Service Features
Our Experience
No matter how complex your assignment is, we can find the right professional for your specific task. Contact Essay is an essay writing company that hires only the smartest minds to help you with your projects. Our expertise allows us to provide students with high-quality academic writing, editing & proofreading services.Free Features
Free revision policy
$10Free bibliography & reference
$8Free title page
$8Free formatting
$8How Our Essay Writing Service Works
First, you will need to complete an order form. It's not difficult but, in case there is anything you find not to be clear, you may always call us so that we can guide you through it. On the order form, you will need to include some basic information concerning your order: subject, topic, number of pages, etc. We also encourage our clients to upload any relevant information or sources that will help.
Complete the order formOnce we have all the information and instructions that we need, we select the most suitable writer for your assignment. While everything seems to be clear, the writer, who has complete knowledge of the subject, may need clarification from you. It is at that point that you would receive a call or email from us.
Writer’s assignmentAs soon as the writer has finished, it will be delivered both to the website and to your email address so that you will not miss it. If your deadline is close at hand, we will place a call to you to make sure that you receive the paper on time.
Completing the order and download