104

ISBN : 978-81-963532-2-3 (E-Book) S(S)={X/statementScontainsause ofX} For the statement S:a=b+c;, DEF(S) = {a}. USES(S) = {b,c}. The definition of variable X atstatement S is said to be live at statement S1, if there exists a path from statement S to statement S1whichdoesnot contain anydefinition ofX. The definition-use chain (or DU chain) of a variable X is of form [X, S, S1], where S and S1 arestatement numbers, such that X Є DEF(S) and X Є USES(S1), and the definition of X in thestatement S is live at statement S1. One simple data flow testing strategy is to require that every DUchain be covered at least once. Data flow testing strategies are useful for selecting test paths of aprogramcontainingnestedifand loop statements. MutationTesting In mutation testing, the software is first tested by using an initial test suite built up from the differentwhitebox testing strategies. After theinitial testing is complete, mutation testing is taken up. Theidea behind mutation testing is to make few arbitrary changes to a program at a time. Each time theprogram is changed, it is called as a mutated program and the change effected is called as a mutant. Amutated programis tested againstthefull testsuite of theprogram.If there exists atleast one testcase in the test suite for which a mutant gives an incorrect result, then the mutant is said to be dead. Ifa mutant remains alive even after all the test cases have been exhausted, the test data is enhanced tokill the mutant. The process of generation and killing of mutants can be automated by predefining asetofprimitivechangesthatcanbeappliedtotheprogram.Theseprimitivechangescanbealterations such as changing an arithmetic operator, changing the value of a constant, changing a datatype, etc. A major disadvantage of the mutation-based testing approach is that it is computationallyveryexpensive, since alarge number ofpossible mutantscanbe generated. Sincemutationtestinggeneratesalargenumberofmutantsandrequiresustocheckeachmutantwith the full test suite, it is not suitable for manual testing. Mutation testing should be used inconjunctionofsome testingtoolwhich wouldrun allthetest casesautomatically. DEBUGGING,INTEGRATION ANDSYSTEMTESTING NeedforDebugging Once errors are identified in a program code, it is necessary to first identify the precise programstatements responsible for the errors and then to fix them. Identifying errors in a program codeandthen fixthem up are known as debugging. DebuggingApproaches 99 Software Engineering Keerthana P, Manasa KN, Ganga D Bengal

105 Publizr Home


You need flash player to view this online publication