 In the previous video, we talked about how the design and the development of our software systems are done. So, it looks like we are finally ready to release our software to our clients. We might have an implementation ready, but we are not yet ready to release the software. In this video, we will talk about two other important phases in software development, testing and maintenance. Testing. So, we have to test our software before we release it to the clients. So, learners, here is a question for you. Why do you think testing is necessary? What can go wrong if you release the software directly? You can pause this video and write responses to this question in your notebook. After the software system is built, it is necessary that this software behaves according to the requirements. At this stage, testing of the system is done. Testing is important because many bugs or defects can still exist in the system. In a study done almost 20 years back, in 2002, it was found that software bugs caused the US economy around 60 billion in losses. In 2016, this number jumped to 1.1 trillion. A failure to address even simple bugs can cause severe catastrophes. You can find more details about this in the additional resources. Do check them out. So, how is testing actually done? There are several testing methodologies. For example, alpha testing is done by internal employees of a company in a lab or a staging environment. The goal of the alpha test is to catch as many issues as possible before the product has been finally released to the public. Then there is beta testing. Beta tests are conducted by actual users in a real-life setting. We have additional resources which give more information regarding alpha and beta testing. After adequate testing, the feature is rolled out. But it is necessary to actually monitor how users are using the feature and keep examining the difficulties and errors they encounter. This is done during the maintenance phase. The purposes of maintenance phase can be to monitor what users are doing and how they are using the software. It can also be to change the code for any upgrades and updates. You may also want to add features to the existing software. Let me illustrate this with an example. Let's go back to the Amazon Pay example. Even after releasing this feature, what difficulties do you think the users might face? Okay, so there can be issues like some conditions might have been missed, resulting in failures. Or it can even be simple UI issues in a very specific browser. Yes, all these issues can arise. The team identifies these issues in the maintenance phase and continues to fix such issues.