 So, for any software development testing is very important and I will start with what is software testing. So the two most important parts of testing are verification and validation. So if a software is bug free that is something we decide with the process of verification and validation, validating the software. Now another important thing is that if the software actually meets what the user needs. So the technical requirements as per the design or as per the requirements of the user that is another thing that needs to be taken care of. And also while developing a software we need to take into consideration some exceptions and also some boundary cases. So these are something which can be taken care of the developer while he or she is developing and also by the testers who do not develop but later on tests the entire system. So software testing can be divided into two steps. The first one is verification that is if the method is right, are we building the product right? If the method of building the product is right and the next one is validation that is if we are building the right product at all, if the requirement on everything has been met properly. Now there are two types of software testing, one is manual that is there is a person sitting behind the computer and actually imitating all the steps that can be followed for a software. And another one is automation, why is automation required? Because a particular software can be tested in various different ways and this needs to be done multiple number of times. So if we automate the entire system then there is no manual intervention and automatically the software is tested from end to end. Now next I will talk about black box testing and white box testing, black box testing from the word itself we can understand that the tester has no idea what is going on inside the system. He just knows what he is doing from outside and whatever output he is getting. So the tester just clicks on buttons or follows some steps and records the results what he is getting and if the results are right or not they find that out. And white box testing is something which is done by the developer who has complete knowledge of whatever is happening behind the code and what the code is doing, what the workflow is from where the code which code is doing what part everything. So white box testing is done mostly by the developers who has whole idea of the source code and the application and black box testing by a tester who is not aware of the code but knows what the correct result will be for a particular action. Next I will talk about the levels of software testing. The first one is unit testing, it is small unit software. For example if we talk about a discussion forum commenting is a module, flagging a comment is a module, all these modules should be individually working properly. This is unit testing, every unit is tested while we code. Integration testing for integration testing a good example will be if there is a post in a discussion forum and someone is commenting on that post. So the comment is a unit module and the post is another module, but the comment needs to be connected to a particular post. So this is integration testing and we need to find out whether while a user is commenting the comment is properly mapped to the correct post. The third one is system testing, for system testing we have the complete system should be working properly with all the unit testing and with all the modules interacting with each other the workflow from one module to another going properly. And finally we talk about acceptance testing, this is whether whatever the requirement was it is acceptable for delivery, whatever the user has wanted or the requirements specification document had everything has been done properly and it is accepted for release. Now for unit testing it is performed during development only, while the developer develops or codes he himself unit tests each module and finds out if there is a bug or not and finds out whether that module is independently working correctly or not. So it is a section of the code and also most important part is we need not take care of the other unit modules to interact with it. This should independently work from the other modules. How do we perform unit testing? A developer needs to write a section of code just to test only that part of the code, the other codes are not touched. For that we need to make some dummy objects because when the final application is working there is a particular workflow and from one unit module some data goes interacts with another module. So when we are only considering one module we need some dummy data to check whether if the data comes from a different module how it will work. These are called mock objects. For example in the right side of this slide you can see that there is a class animal test case where there are two objects one is lion whose sound is roar another is cat whose sound is meow. Now every function which starts with the word test is a test case that is the function which gets called. So now we are taking the lion object by getting the object with name. We are telling if the name is lion then extract the object into this variable lion similarly for cat. Now we have the object lion and we have another object cat. Now we find out whether lion dot speak function is returning the sentence the lion says roar if so then it's correct otherwise it's not. This is how we do the unit testing. Now lion and cat these are dummy objects which we are creating right now only for testing. During application it's not necessary that the objects will be created here it might happen that the objects are created in some other modules and sent to this function. Now I will talk about end to end testing with selenium. So this is automated testing this is a very interesting part because manual testing takes a lot of time we need to do the same thing 100 times to understand whether it's working properly for all kinds of data. So once we have it automated the browser automatically opens up and whatever buttons need to be clicked they are clicked and it's something very interesting you will get to know if you actually do hands on on it. So what is selenium selenium automates the browser Firefox Chrome or whatever so it opens the browser as soon as we run the code it opens the browser and whatever a tester would have done by opening a browser putting in a URL and clicking on a button everything will be done automatically by the code. So we use python for selenium why because it's very simpler as we all know python is very simpler than any other language right now and also it has got a lot of simple API which is very helpful for conducting this. Gecko driver is a browser engine which links the test cases that we write in selenium with the browser Gecko driver is for Firefox browser and it is also needed to be put in the system path. If you need to install and everything this slides will be shared with you you can follow the exact steps and you can see we have put in an example also here you can just copy paste and see how it works and now I'll just talk about how this automated testing is happening because we know when we see on the screen that this button needs to be clicked this text box needs to be filled in with my name and then I put I clicks on the submit button but how does the code understand that with different if you have been familiar with HTML then there are attributes in HTML for every object every element. So with the attributes like ID class name we can extract an element and say what the user wants to do with that element whether the user wants to put in a text in that box whether the user wants to click on a button this can be done by the different attributes of elements. Now if you want to get the text values and send it via the URL then for that we have different attributes also for switching from one window to another there are there is this switch to function there are many more and you can find in the internet how to run these codes and often we have some alert boxes popping up that is also taken care of by Selenium we can navigate we can go back to the previous page we can go forward to the next page and everything that a user can do on a browser it is doable by the Selenium automated test cases. So these are the references when you get the slides just go through them all kinds of examples have been given here and you can try out try it out yourself it will be you can it will have more you can you can experience better thank you any doubt