Кіріспе
Бағдарламалық жасақтаманы сынау әдісі. Мутациялық сынау (немесе мутациялық талдау немесе бағдарламалық мутация) жаңа бағдарламалық жасақтаманы сынауды жобалау және қолданыстағы бағдарламалық жасақтаманы сынау сапасын бағалау үшін пайдаланылады. Мутациялық сынауда бағдарламаға шағын өзгерістер енгізіледі.
Mutation testing (or mutation analysis or program mutation) is used to design new software tests and evaluate the quality of existing software tests. Mutation testing involves modifying a program in small ways.
Кіріспе
Бұл мақаланың көп бөлігі "бағдарламаның мутациясы" туралы, онда бағдарлама өзгертіледі. Мутациялық талдаудың кеңейтілген анықтамасы – бағдарламалық өнімдерге жүйелі өзгерістер енгізу үшін синтаксистік құрылымдар негізінде анықталған белгілі бір ережелерді қолдану. Мутациялық талдау басқа да мәселелерге қолданылған, бірақ көбінесе сынақтарға қолданылады. Осылайша, мутациялық тестілеу – жаңа бағдарламалық өнімдерді жобалау немесе қолданыстағы бағдарламалық өнімдерді бағалау үшін мутациялық талдауды пайдалану болып табылады.
Шолу
Берілген бағдарламалық жүйенің іске асыру дұрыстығын тексеру үшін сынақтар жасалуы мүмкін, бірақ сынақтар жасау кезінде олардың дұрыстығы және іске асыруға негіз болған талаптарды жеткілікті қамтуы туралы сұрақ туындайды. (Бұл технологиялық мәселе өзі "Quis custodiet ipsos custodes?" деп аталатын терең философиялық мәселенің бір көрінісі, яғни "Қорғаушыларды кім қорғайды?") Мутациялық тестілеудің мәні – егер мутант енгізілсе, ол бағдарламаның функционалдығында қате тудыруы керек, ал оны сынақтар табуы тиіс. Осылайша, сынақтардың өзі тексеріледі. Егер мутантты сынақ жиынтығы анықтамаса, бұл әдетте сынақ жиынтығының мутант көрсететін қателерді анықтауға қабілетсіз екенін көрсетеді, бірақ мутация ешқандай қателерді тудырмауы мүмкін, яғни ол функционалдыққа әсер етпейтін жарамды өзгеріс болуы мүмкін. Мутанттың жарамды болуының бір (жиі кездесетін) себебі – өзгертілген кодтың ешқашан орындалмауы, ол "өлі код" болып табылады. Мутациялық тестілеуді кең ауқымда жүргізу үшін әдетте көптеген мутанттар енгізіледі, бұл бағдарламаның өте көп көшірмелерін құрастыруға және орындауға алып келеді. Мутациялық тестілеудің қымбаттылығының бұл мәселесі оны бағдарламалық қамтамасыз етуді тестілеу әдісі ретінде қолдануды шектеді. Дегенмен, объектіге бағытталған бағдарламалау тілдері мен модульдік тестілеу аяларының кеңінен қолданылуы қосымшаның жеке бөліктерін тексеруге арналған мутациялық тестілеу құралдарын жасауға мүмкіндік берді.