--- Video Title: Testing Levels Description: Testing Levels Watch more Videos at https://www.tutorialspoint.com/videotutorials/index.htm Lecture By: Mr. Arnab Chakraborty, Tutorials Point India Private Limited --- We are going to cover a very important topic that is testing levels. So, testing itself may be defined at various levels of SDLC. It is not like that, that at the end of the development process, then only the testing phase will be beginning. At the different SDLC phases, we can go for the respective testing which is applicable. So, it is better to go the development and the testing process simultaneously. So, the testing process runs parallel to the software development and before jumping to the next stage, its stage should be tested and validated and respectively verified. And if you find that yes, everything is okay, then you shall go for the next phase of the SDLC. So, testing separately is done just to make sure that there are no hidden bugs and issues left in the software. So, software is tested on various levels. So, here we are having the list of these levels. So, unit testing, integration testing, system testing. System testing is having functionality testing, performance testing, security and portability testing. We are having the acceptance testing. That is, we are having two variations here. One is the alpha testing, another one is the beta testing and then we are having the regression testing. So, let me discuss all of them in this particular sequence. So, at first we are going for the unit testing. So, what is unit testing? While coding, the programmer performs some tests on that unit of program to know if it is error free or not. And testing is performed under white box testing approach. We know that in case of white box testing approach, the tester is having the access over the codes and mostly in this cases, the developer is to carry out such testing programs. So, in this case, if we find that there is some errors are there, the test results are not okay. In that case, we can change the code, we can access the code accordingly. Unit testing helps developers decide that individual units of the program are working as per requirement and they are error free. So, that is the purpose of the unit testing. So, here we will be selecting each and every module or the unit of the program. And then we shall go on or carry on testing on each one of them to check whether they are independently working well, error free or not. So, in case of unit testing, what will happen? Here we are having the list of test cases and this is the module to be tested. So, this test cases, on this test cases, this module will be executing and what are the features we are going to test? That is the interface, the local data structure which has been used in the module, the boundary conditions and then independent paths and error handling paths. So, all these things will get tested in the unit testing which will be carried out in the most of the cases by the developers. Next one is our integration testing. So, even if the units of softwares are working fine individually, there is a need to find out if the units if integrated together would also work without errors or not. We are having multiple units are there, they are individually tested. Now, we are finding that yes, all these units are working fine, but if they go on integrating, if they go on integrating to develop a certain subsystem or the system, in that case, are they working jointly? Are they cooperating each other? Is there any errors are occurring there or not? So, that will be tested in our integration testing. So, from the very name integration, you are getting this idea. So, now, there is a need to find out if the units if integrated together would also work without errors. For example, argument passing and data updations etcetera should be tested. So, from one unit I am calling another unit, I am passing some arguments, whether those arguments are properly getting interpreted by the receiving units or not. So, all these things, all these issues will be tested in our integration testing. Next one, we are going for the system testing. The software is compiled as product and then it is tested as a whole. So, this can be accomplished using one or more of the following tests. So, here we are not going for unit device testing, not going for integration testing, but here we are going for the system testing. Now, When the software has been compiled, now it is running, now the test cases are to be applied on them. So, first one under this system testing, we are having this functionality testing. So, tests all functionalities of the software against the recommend list. So, there is a functionality testing. Next one is a performance testing. This test proves how efficient the software is. It tests the effectiveness and the average time taken by the software to do the required or the desired task. So, in case of performance testing, it is not enough whether the task is getting executed or not. That is not enough, but also we want to check that how much time it is taking to perform a certain task. Performance testing is done by means of load testing and trace testing, where the software is put under high user and high data load under various environment conditions. So, it is not only to test whether one user can access the software and what is the performance, what is the accessing time. That is not the main thing. Also, we are going for this load testing when the software is supposed to deal with huge amount of data, trace testing, where multiple users will be working on the software. At the same time, say millions of users are working on the software at the same time. Now, at that moment, is the software working fine? Is the software giving the response within the expected duration of time? So, all these things will be done in the performance testing. Next one is the security and portability. This tests are done when the software is meant to work on various platforms and accessed by number of persons at the same time. So, that is the security and the portability. But the software will be working on the different platforms. Next one is our acceptance testing. So, when the software is ready to hand over to the customer, it has to go through last phase of testing where it is tested for user interaction and the respective response. So, this is important because even if the software matches all user recommends, if the user does not like the way it appears or works, then obviously it may get rejected. So, this acceptance testing is actually checking whether the software would be getting accepted by the user or not. The software is working fine. The performance is ok. The desired results are coming. But the way in which it works or the appearance of the software, if the client, if the user, if they do not like that one, the software may get rejected at the final stage. So, here we are considering two types of testing. One is the alpha testing, another one is beta testing. The team of developer themselves perform alpha testing by using the system as if it is being used in work environment. So, now we shall make one environment within the developer's site. So, we shall check that if this particular software is being used in the work environment, then what is the feedback? They try to find out how users would react to some actions in the software and how the system should respond to the respective inputs. So, they are making one environment, some working environment where this particular software will be tested by the respective users. But remember this one in case of alpha testing, the testing will be done at the developer's site. So, that is very important and that is causing the difference between this alpha testing and beta testing. In case of beta testing, after the user is tested internally, it is handed over to the user to use it under their production environment. And only for the testing purpose, not for the real life use but for the testing purpose. This is not as yet the delivered product. So, developers expect that user at this stage will bring minute problems which were skipped to attend. So, now here this testing will be done at the customer's site, at the user's site. So, there this particular software will be given for their respective testing purpose only and they will be using this one in the production environment. And what about the feedbacks we are going to get? So, that will be analyzed and accordingly the actions will be taken. We are having this regression testing. So, whenever a software product is updated with some new code, features or functionalities, it is tested thoroughly to detect if there is any negative impact on of the added code and this is known as regression testing. So, whenever we add some new code, whenever we are adding some new features or functionality, whether the software is working fine, it is getting accepted by the users or not. So, that is the testing whatever you are going to do is known as the regression testing. Now, let us go for this particular diagram which I have made for you. And in this diagram, I am trying to show you that testing activities can have this sort of different categories. For each one of them, I have gone for the respective subcategories. So, you can remember this picture. If you can remember this one, then if you can produce this one in your exam copy, then obviously that will be good enough for you. So, in this way, we have discussed in this video that what are the different testing levels that are possible and when to apply which one. Thanks for watching this video. TutorialsPoint.com. Simply easy learning.