what is mutation testing
Овај водич објашњава шта је тестирање мутације, како се то изводи и типови тестирања мутације са примерима:
Шта је тестирање мутације?
Испитивање мутација је техника испитивања заснована на грешкама, где се варијације софтверског програма подвргавају скупу тестова. Ово се ради да би се утврдила ефикасност скупа тестова у изоловању одступања.
Звучи мало компликовано, зар не?
Шта ћете научити:
Испитивање мутација
Испитивање мутација (МТ) иде дуг пут, све до 70-их, где је први пут предложено као школски пројекат. Отписан је јер је захтевао велике ресурсе. Међутим, како су људи наставили да развијају напредније рачунаре, полако се вратио и сада је једна од најпопуларнијих техника тестирања.
Дефиниција испитивања мутација
МТ је такође познат као тестирање засновано на грешкама, мутација програма, тестирање засновано на грешкама, или анализа мутација .
Као што и само име говори, тестирање мутација је врста софтверског тестирања која се заснива на променама или мутацијама. У изворни код се уводе мале промене како би се проверило да ли дефинисани тест случајеви могу открити грешке у коду.
Идеалан случај је да ниједан тест тест не треба да прође. Ако тест прође, то значи да постоји грешка у коду. Кажемо да је мутант (измењена верзија нашег кода) живео. Ако тест не успе, онда у шифри нема грешке, а мутант је убијен. Циљ нам је да убијемо све мутанте.
Тестирање мутација такође помаже у тестирању квалитета дефинисаних тест случајева или тест комплета са циљем да се напишу ефикаснији тест случајеви. Што више мутаната можемо убити, то је већи квалитет наших тестова.
Концепти испитивања мутација
Пре него што даље разговарамо о испитивању мутација, истражимо неке концепте на које ћемо наићи.
# 1) Мутанти: То је једноставно мутирана верзија изворног кода. То је код који садржи минутне промене. Када се тест подаци прођу кроз мутанта, идеално би било да нам дају различите резултате од оригиналног изворног кода. Зову се и мутанти програми мутаната .
Постоје различите врсте мутаната. То су следећи:
- Преживјели мутанти: Као што смо напоменули, ово су мутанти који су и даље живи након покретања тест података кроз оригиналну и мутирану варијанту изворног кода. Ови морају бити убијени. Познати су и као живи мутанти.
- Убијени мутанти: То су мутанти који се убијају након тестирања мутација. Добијамо их када добијемо различите резултате од оригиналне и мутиране верзије изворног кода.
- Еквивалентни мутанти: Они су уско повезани са живим мутантима, јер су они ‘живи’ чак и након проласка података о тестовима кроз њих. Оно што их разликује од осталих је што имају исто значење као и изворни изворни код, иако могу имати различиту синтаксу.
# 2) Мутатори / оператери мутације: То су оно што омогућава мутације, оне су на „возачком седишту“. Они у основи дефинишу врсту измене или промене ради увођења изворног кода у мутант верзију. Они се могу означити као грешке или правила мутације .
# 3) Оцена мутације: Ово је резултат заснован на броју мутаната.
Израчунава се према доњој формули:
Напоменути да, еквивалентни мутанти се не узимају у обзир приликом израчунавања резултата мутације. Резултат мутације познат је и као адекватност мутације . Наш циљ треба да буде постизање високог броја мутација.
Како се врши тестирање мутација
Корак 1: Напишимо наш Јасмин јединични тест.
Пробни пакет (јасмин)
describe('User', function() { it('should compare the two numbers from user input', function(){ expect(20).toBeGreaterThan(5); }) });
Корак 2: Напишите оригинални код.
Оригинални код (Јавасцрипт)
const user_info = () => { mother_age = parseInt(prompt('Enter mother's age')) daughter_age = parseInt(prompt('Enter daughter's age')) if (mother_age > daughter_age) { alert(`Daughter's age is ${daughter_age}. Mother's age is ${mother_age}. Welcome to the Mother-Daughter program`) } else { alert(`Daughter's age: ${daughter_age}, is more than mother's age: ${mother_age}. Please enter correct ages`) } } user_info();
Корак # 3: Затим ћемо тест покренути кроз оригинални код како бисмо били сигурни да од почетка нисмо имали неуспелих тестова. Требали бисмо имати излаз који саопштава да смо заиста написали тест са нула грешака.
На пример:
завршено за 0,019с 1 спецификација, 0 неуспеха, насумично одабрано са семеном 31435
Резултат оригиналног кода:
Daughter's age is 5. Mother's age is 20. Welcome to the Mother-Daughter program
Корак # 4: Представите мутанта. У овом случају мењамо веће од оператор (мајка_старост> ћерка_века) у а мање од оператор (мотхер_аге Мутант код (Јавасцрипт) Корак # 5: Затим проводимо тест кроз мутант код. Ево резултата теста: завршено за 0.017с 1 спецификација, 0 неуспеха, рандомизовано са семеном 89555 Резултат мутант кода: Корак # 6: Упоредите резултате оригиналне верзије и верзије мутанта. У овом случају, они се разликују, чак и ако је коришћен исти тестни пакет. Стога смо убили нашег мутанта. Наш тестни пакет је стога спреман за употребу. Постоји неколико врста мутација. Они су објашњени у наставку. Овде уводимо мутацију променом параметра и / или константних вредности, обично за +/- 1. Пример: оригинални код (Јавасцрипт) Ако је горњи код хтео да помножи парне бројеве где и<4 , тада би мутација вредности значила промену иницијализације у нека је и = 1 . Пример: Мутант код (Јавасцрипт) Овде бришемо или дуплицирамо изјаву у блоку кода. Такође бисмо могли преуредити изјаве у блок кода. На пример, у блоку иф-елсе могли бисмо избрисати део елсе или чак и цео иф-елсе блок. Пример: оригинални код (Јавасцрипт) Пример: Мутант код (Јавасцрипт) Овде је циљ код који доноси одлуке, на пример, поређења вредности. Можемо се променити > то< као у нашем примеру програма Мајка-ћерка. Остали оператери које можемо заменити укључују следеће: Предности испитивања мутација (МТ) укључују: Недостаци тестирања мутација (МТ) укључују: Алати су корисни за убрзавање процеса стварања мутаната. Ево неколико алата које можемо користити у МТ: Стрикер, Јумбле, ПИТ и Инсуре ++. Научимо на примеру: Рецимо, постоји болничка веб локација која омогућава новим корисницима да се региструју. Чита датум рођења или старост пацијента. Ако је већа од 14, главним лекаром додељује лекара опште праксе. Да би то урадио, позива функцију „општег лекара“ која проналази доступног лекара. Сада можда постоји и друга функционалност. Можда се пацијенти млађи од 13 година распоређују код педијатра и тако даље. Али ми ћемо узети само случај старији од 14 година. Ево како би могао изгледати код: 1) Реад Аге Имајте на уму да горњи редови кода нису специфични за било који програмски језик и неће се приказивати. То је само хипотетски. Као тестер, ако је мој скуп података 14, 15, 0, 13 - неки случајни бројеви. Циљ је да се провери да ли је скуп података од 4 вредности (14, 15, 0 и 3) довољан да идентификује све могуће проблеме са овим кодом. Такође прочитајте => Савети за дизајнирање тест података пре извршавања тест случајева Како се тестирањем мутација постиже ово? Прво и најважније, креирате мутанте - варијације програма. Мутант није ништа друго доли програм који је написан као одступање. Садржи самоникли квар. Примери су: Ове замене се такође називају „Оператори мутације“. Показаћу вам примере: Мутант # 1: Релациони оператерзамена 1) Старост читања Мутант # 2: 1) Старост читања Мутант # 3: 1) Старост читања Мутант # 4: 1) Старост читања Мутант # 5: Уклањање изјаве 1) Старост читања Мутант # 6: Апсолутно убацивање вредности 1) Старост читања Мутант # 7: Нетачна синтакса 1) Старост читања Мутант # 8: Ради исто као оригинални тест 1) Старост читања Једном су створени сви мутанти. Они су подвргнути тестном скупу података. Наш скуп је 14, 15, 0 и 13. Које ће од ових мутаната пронаћи наш скуп података? Сазнајте у доњој табели: (Кликните на слику за увећани приказ) Као што видите, наша вредност података 14 проналази неуспехе када се покрене против, Мутанта 2, 3 и 4. Или, 14 убија мутанте 2, 3 и 4. Али је неефикасна против, 1, 6 и 8. Ако ваш скуп података убије све мутанте, то је ефикасно. У супротном, укључите више или боље податке о тестовима. Није неопходно да свака вредност у скупу података убије све мутанте. Али заједно, требали би све побити.На пример:14 убија 2, 3 и 4. 15 убија 1, 2 и 4. И тако даље. Шта је са 5, 7 и 8? Мутант # 5 - је инстанца програма која неће успети без обзира на вредност података коју дате. То је зато што неће радити програмирање за важеће и неваљане вредности. Мутант # 7 - биће грешка при компајлирању. Или у случају скриптног језика грешка која ће спречити извршење. Мутант # 8 - је иста ствар као и главни програм. Као што видите, горе наведени мутанти уопште нису корисни. Стога су мутанти које треба избегавати: Да ли размишљате, ако треба толико напора, шта ће се догодити када морам да тестирам велике узорке кода? Испитивање мутација ослања се на две ствари: Тако, фокусира се на најмању јединицу кода и полаже своју веру у вештину програмера да тестирање мутације прилагоди већим програмима. Овај водич је са примерима детаљно обухватио дефиницију, типове и кораке за тестирање мутација. Надамо се да сте уживали читајући и учећи о овој занимљивој техници тестирања - тестирању мутација. О аутору: Овај чланак написао је члан СТХ тима Свати С. Молимо поделите своје коментаре, питања и размишљања у наставку. const user_info = () =>{ mother_age = parseInt(prompt('Enter mother's age')) daughter_age = parseInt(prompt('Enter daughter's age')) if (mother_age
Daughter's age: 5, is more than mother's age: 20. Please enter correct ages
Врсте испитивања мутација
# 1) Вредност мутације
let arr = (2,3,4,5) for(let i=0; i
let arr = (2,3,4,5) for(let i=1; i
# 2) Измена мутације
let arr = (2,3,4,5) for(let i=0; i
let arr = (2,3,4,5) for(let i=0; i
# 3) Мутација одлуке
Оригинални оператер Оператор мутанта 1 <= > = два > = == 3 === == 4 и или 5 || &&
Алати за тестирање мутација
Више о тестирању мутација
два) Ако је старост> 14
3) Лекар = Општи лекар ()
4) Крај ако
2) Ако старост са<’
3) Лекар = Општи лекар ()
4) Заврши ако
2) Ако је узраст 14 година, „Промена> са =“
3) Лекар = Општи лекар ()
4) Заврши ако
2) Ако је старост> = 14 'Промена> са> ='
3) Лекар = Општи лекар ()
4) Заврши ако
2) Ако старост са<=’
3) Лекар = Општи лекар ()
4) Заврши ако
2) Ако је старост = 14
3) „уклоните изјаву о распореду лекара“
4) Заврши ако
2) Ако је старост> 14
3) Лекар = Мр.Кс (Апсолутно уношење вредности - рецимо да је Кс педијатар)
4) Заврши ако
2) Ако је доб %% 14 (нетачна синтакса)
3) Лекар = Општи лекар ()
4) Заврши ако
2) Ако старост> 14 година> 14 година значи исто што и старост> 14 година
3) Лекар = Општи лекар ()
4) Заврши ако
Тачке које треба напоменути
како да постанем испитивач производа
Закључак
Препоручено читање