Transcript for:
Experience-Based Testing Techniques

hello everyone welcome to session 5 of module 4 experience based testing techniques in this session we will learn about two experience based testing techniques and see what are the advantages and disadvantages of those testing techniques so let's get started with experience-based testing techniques so we have seen that it's in in the testing we have seen in previous sessions that testing should be rigorous thorough and systematic uh we have seen quite a few systematic testing techniques as well but this is not all about software testing there are some non-systematic approaches which are very useful and beneficial while you are doing the testing so non-systematic testing for example the the testing done by the person's knowledge or experience also plays a very important role so if a person is working in certain domain for quite a long time he knows about the domain in and outs very thoroughly so that person will be uh a best person who who can do very uh kind of very nice experience based testing um rigorous experience based testing and find the defects which are difficult to find through the systematic testing approach so that is why experience based testing technique is very important so reason for this is that some defects are kind of very hard to find by systematic approach and a person who has good domain expertise who has good experience with testing the softwares and knows the basic architecture how the software is deployed in in the in the environment how the communication happens if it he knows all those details then he is a kind of good bug hunter who can find defects with his previous experience so we'll discuss two experience based techniques in this session what are those techniques first one is error guessing and the second one is exploratory testing so let's get started with the error error guessing first so this is a test is a test design technique where the experience of a tester is used to find the components of software where defects might be present so in error guessing it's just the experience of a tester which is used to find the components where the errors might be present in the software so it is mostly done by experienced testers who can use their past experience skills and intuition to find defects in software so this is mostly um done by the experienced testers who has who have already tested similar kind of applications in past and can utilize that prior experience to test the current software because since they have already tested that kind of software previously they know where they found the most errors in previous releases or previous versions of the software so they they have a fair bit of idea which modules to focus more on and where the defects would be present based on their skills intuitions or the or the prior experience error guessing has no rules for testing it only uses testers previous skills so error guessing is just um has has no rules it just uses tester's previous experience and he the sole responsible person for designing the test or finding the modules which he wants to test and where where he wants to focus more because it is because of his experience he knows where to work more or which module to focus more and where the defects might be present in the software error guessing is not a replacement of formal testing it should be used to complement other formal testing so informal testing is not a replacement to a formal testing so error guessing is an informal technique it should not be replaced by the formal testing techniques it's just it's just done to complement uh formal testing so error guessing is not a replacement of formal testing you should not be doing just error guessing and saying that quality of the software is fine so after a formal phase of testing informal phase of testing needs to be done to complement the formal phase that to make sure that everything that an experienced user experienced tester can figure out as the vulnerable modules or areas where defects might occur if he finds that there are no defects around those areas then you can say yes the quality of software is good so formal and informal testing both should complement each other so what are the advantages and disadvantages of error guessing so let's go ahead and see the advantages first so error guessing is used to complement systematic testing techniques uh it is not a replacement of systematic testing techniques it's just to complement uh systematic testing techniques then it is used to identify special tests which can be easily found by um other testing which cannot be easily found by other formal testing techniques so um the other advantage of uh error guessing is that it it identifies those tests which cannot be easily found by other formal testing techniques so because with other formal testing techniques you have so certain test design techniques which you apply to to find out the test cases that you can execute on the module or the software but with the error guessing it's the experienced tester's knowledge skill and his prior experience on the software and modules where he found most number of defects that is used to identify uh the test cases so these test cases come out from the users experience tester use experience tester experience and not from any specific technique so these test cases are just an add-on or an advantage on the formal test cases formal test design test cases that are developed initially what are the disadvantages of error guessing so error guessing is not structured and not systematic that's the first disadvantage so it's not a structured approach or not systematic approach um and the success and effectiveness of error guessing depends on the person's skills and expertise who is doing the error guessing technique or error guessing testing so it will be more successful when a person who has prior experience of working in similar kind of software uh and and has kind of domain expertise in that area so a person who has experience in that that domain or in those kind of software will would be able to do more effective error guessing rather than a person who doesn't have any understanding um or prior experience in that domain so success is basically depends on the skills and experience of the tester so let's see some of the error guessing test cases what what kind of test cases can be um thought of in error guessing techniques so these are just general test cases so for example division by by zero so anywhere if there is a mathematical calculation you can check the division by zero in error guessing test cases then pressing submit button on the form without filling any entries that's another kind of test which comes from the experienced user and if he has you know prior experience in the domain he he might be aware of the different modules and areas where he can do such kind of tests then entering um um wrong data sorry about the typo here entering wrong data in the fields and checking software behavior so you can check the module where you can enter the wrong data and see the negative um what the outcome of the uh what the behavior of the software is then um having null in the mandatory fields or entering reserve characters in web forms if you enter the reserve characters special characters in the web forms and hit submit what's what's the outcome whether it breaks or its exception is handled properly what's the outcome there then entering quotes in data input fields so these are some of the error guessing test that that a user whose server is doing error guessing testing can use it as an input so approach to design error guessing tests so if somebody says for the software that could never happen always consider that scenario in error guessing test so whenever there is an argument or there is a discussion um in the team which says that this scenario is rarely going to happen or end user might never do this kind of stuff for example end user might never submit a blank form might never click on submit button without entering his uh details or end user will never enter special characters or never try to inject some script in the web form that you have uh displayed that is displayed on the on the website or on the application website so in that kind of discussion or in that type of scenarios you should always consider those scenarios as your test cases in error guessing somebody says this is never going gonna happen end user will never do this that's your test case so you should always consider those scenarios in error guessing tests so if it is discussed nobody is going to enter special characters in the text boxes in his personal details and hit submit that's your test case somebody says nobody will hit submit without entering his personal details that's another test case so you should consider these kind of scenarios in error guessing then structured approach of error guessing can be followed which is to create a list of possible errors and then design test cases to reproduce those errors so it's not always true that you cannot follow a structured approach for error guessing you can follow a structured approach but it it will not be in you know much detail you can just create a list of possible errors and then design test cases to reproduce those errors so for example the errors that can happen on this web form on on this form that is displayed on application website and then you can you know go ahead and design the test cases to reproduce those errors and and see what the outcome is if the outcome is right okay then your test passes if the outcome is um wrong and your test fails so tester can use his experience and skills to build list of possible errors so tester can use his experience or skills to build the possible errors for example submitting form with all customer data field blank or entering future data as dob data birth for customers so customers data birth cannot be a future date so you can try entering future date as date of birth for customer and see what happens so let's understand the second testing um that is exploratory testing so exploratory um testing is another experience based testing and is a hands-on approach in which testers are involved in minimum planning and maximum test execution so in experience based testing there is minimum or no planning at all so it's the maximum test execution that happens in exploratory testing or in air guessing as testers do minimum planning and maximum execution of the software they get in-depth idea about the software functionality once the tester starts getting inside into the software he can make decisions on what to test next as in error guessing we we were having very experienced users so similarly in exploratory test testing as well a person with more experience is more effective in finding defects or if he has good domain expertise he'll be able to find more issues by doing exploratory testing and since exploratory testing has minimum planning and maximum execution so once the tester starts doing the execution he get starts getting an idea about the software he starts getting inside about the software and then once he is comfortable one once he has an idea about the software he can make decisions what to test next which module to test next in the software then in exploratory testing tester focuses more on how the software actually works so in exploratory testing the focus of the tester is to find how the software really works the test design and test execution activities are performed in parallel without creating must much test documentation so in exploratory testing very very less documentation is done just just kind of one-liner kind of test cases and these test design activities are performed in parallel while the tester is doing the testing or is learning about the software so test logging is untaken as test execution is done key aspects of testing any further um testing required and defects are documented so test logging um is done as as the test execution is going on so suppose tester is testing a certain module he finds some issues he just logs that issue in the in a notepad or any word document and then any key aspect of testing any further testing required in that module if he finds that this module is kind of vulnerable and has many defects so if he can plan um future uh future testing for the testing for specific specific to that that module and uh plan that so that all those aspects are listed and any defects are also documented as the test execution is going on so some nodes are made by testers during a exploratory testing to produce test report so once the exploitative testing is going on tester keeps a note it keeps making the notes of what he has done which model he has covered what defects were found um any further testing required so all these details are being documented while he is doing the testing in order to produce test execution report in after the end of exploratory testing and exploratory testing is mostly performed by skill testers who have good experience and expertise in the domain uh exploratory testing is mostly used if the requirements are incomplete and time to release the software is less so exploratory testing is most useful if the requirements um that are being given to um to the developers are kind of incomplete or time to release the software is very less you you have to release the software in 15 days and you don't have time to document to follow all that formal approach to test each and every module of the software so in that kind of situations exploratory testing is done to make to make sure that all the basic functionality and all the the important functionality that end user will always use is working fine and all the modules are intact so advantages and disadvantages of exploratory testing um it is very useful when there is little or no specification documentation so suppose um there is very less specification documentation or no specification documentation you cannot go ahead and document the formal test cases so if there is no documentation at all you are left with exploratory testing exploit explorative testing is the only way to do the testing in that case it is very useful when there are severe time pressures so if the time pressure is um high you want to release the software in 15 20 days and you don't have you don't have time and resources to do the formal testing and the test planning and execution then exploratory testing is very useful and then it complements other formal testing helping to establish more confidence in software so it should not mostly it should not be you know kind of um just a separate testing approach it should be you know like once you are done with the formal testing should complement that so exploratory testing complements other formal testing so if you also have followed formal testing approach exploratory testing will complement your previous formal testing approach to establish more confidence in your software then it assists tester to learn about software quickly so because of exploratory testing the tester learns about the software because he uses the software end to end he uses all the modules of the software so he is able to learn about the software end to end module very quickly because in formal approach there there is a team of software testers who who focus on their specific modules which are assigned to them to test them and then in integration phases they they focus on just the integration of modules which which they are responsible for so exploratory testing helps tester to learn the whole software quickly because they use the software end-to-end and all the modules of software rather than focusing on specific module of the software then it also helps ensure that most serious defects are found because exploit exploratory testing um figures out all the end user scenarios end-to-end scenarios and it its focus is to cover all the modules of the software so it ensures that most serious defects are being found and none of the defects uh none of the cusd effects exist and it is good to get rapid feedback about the software quality so once exploratory testing starts since all the software is integrated it's it's ready to go live then once you are doing exploratory testing it's it gives a fair bit of idea and feedback about the quality of software how the software looks like then what are the disadvantages it is not scripted or structured that's another disadvantage and it mostly relies on the skills of testers to carry out testing so that's another disadvantage that the tester has to have you know good skills good domain knowledge to carry out the testing and there is since there is no scripted approach so it is pretty unstructured so to conclude in this session we will learn about experience based testing techniques we learned about error guessing and exploratory testing then we saw advantages and disadvantages of error guessing then we saw approach to design error guessing tests what what should be your approach to design error guessing tests if somebody says that this will never happen always consider that as your test in error guessing technique then we saw advantages and disadvantages of exploratory testing thank you