what is cyclomatic complexity learn with an example
Цикломатична сложеност је врло честа реч у развојној заједници. Ова техника се углавном користи за одређивање сложености дела кода или функционалности.
Технику је развио МаЦабе и помаже у идентификовању доња 3 питања за програме / функције
- Да ли је својство / програм могуће тестирати?
- Да ли функцију / програм разумеју сви?
- Да ли је функција / програм довољно поуздана?
Као КА можемо користити ову технику да идентификујемо „ниво“ нашег тестирања. Пракса је да, ако је резултат цикломатске сложености већи или већи број, сматрамо да је тај део функционалности сложене природе и стога закључујемо као испитивач; да део кода / функционалности захтева детаљно тестирање.
С друге стране, ако је резултат цикломатске сложености мањи број, као КА закључујемо да је функционалност мање сложена и у складу с тим одлучујемо о опсегу.
Пусти ме корак по корак: прво схватите како се израчунава, а затим ћемо прећи на разумевање како се одређује ниво тестирања.
Шта ћете научити:
- Како израчунати цикломатичну сложеност?
- Формула цикломатске сложености
- Пример цикломатске сложености
- Како тестери могу да га користе?
- Сада долази пречица-
- Препоручено читање
Како израчунати цикломатичну сложеност?
Израчун ЦЦ се врти око 2 концепта
- Чворови
- Ивице
Изјаве у програму представљене су као чворови, а контролне путање од једне до друге наредбе представљају ивице.
Формула цикломатске сложености
Формула за израчунавање ЦЦ је као:
ЦЦ = Е ~ Н + 2
Где:
Е = Број ивица
Н = Број чворова.
(Постоји пречица за израчунавање, али не сада ...... касније ...)
како се користи апк датотека
Пример цикломатске сложености
Узмимо доњи пример да бисмо га разумели.
Размотрите доњи графикон контролног тока:
Поставио сам НЕТ тачке за идентификацију чворова и ПЛАВИ линије за препознавање ивица:
Дакле, овде у овом примеру:
најлакши начин за додавање вредности у низ је употреба
Број чворова (црвене тачке) = 14
Број ивица (плаве линије) = 15
Дакле, цикломатична сложеност = Н ~ Е + 2 = (14-15) +2 = 3
Како тестери могу да га користе?
У стварном свету, тестери могу да седе са програмерима како би извели граф контролног тока за дати комад кода. А након што добијемо графикон, можемо извести сложеност помоћу ове формуле. Али прича за тестере овде се не завршава: - главна ствар овде је - каква је корист од овог броја за тим за тестирање?
Па, тестери могу да користе овај број да одреде ниво свог тестирања.
У пракси постоје 2 нивоа тестирања:
- Испитивање дужине
- Испитивање ширине
Размотрите доњу матрицу за различите карактеристике било ког модула: -
Испитивање дужине је начин на који покушавамо да покријемо читав опсег избором важних тест случајева за сваку од карактеристика. На пример , у овом случају, претпоставим да одаберем да подразумевам испитивање дужине, онда могу да одаберем -
- Подлепак 1.1 и Подлепак 1.3 за Особину 1
- Подфункција 2.2 из Феатуре 2
- Потпредмет 3. из 3.
- Пот-карактеристика 4.2 и пот-функција 4.3 из функције 4
- Подфункција 5.3 из 5. функције
Дакле, овде се дотичем целокупне функције не улазећи у исцрпне детаље под-карактеристика.
Сада, ако је резултат ЦЦ већи број, онда одлучим да идем на тестирање ширине, заправо ћу тестирати сваку особину заједно са сваком подзначајком.
Дакле, на основу вашег тренутног захтева пројекта, поузданости околине, тестери могу да сарађују заједно са развојним тимом и створе стандард за идентификацију нивоа и обима тестирања. На пример -
- Ако КЗ<=15 – Basic sanity test
- Ако је ЦЦ између 16 и 30 - Испитивање дужине
- Ако је ЦЦ између 31 и 50 - Испитивање ширине
- Ако је ЦЦ> 50 - То је хаотична функционалност и потребно је даље разлагање
Сада долази пречица-
Само пребројите број затворених региона и додајте му 1.
У нашем примеру изнад - број затворених подручја = 2 (попуњено жутом бојом), па је ЦЦ = 2 + 1 = 3
како отворити јсон датотеку
У стварном раду врло је тешко закључити резултат када дајемо изјаве попут -
- „... .. ову функционалност је врло тешко применити“
Шта подразумевате под тешким? Да ли је сложен, сложен или хаотичан?
Како сте закључили да је ово тешко?
- „... ово би требало бити доступно до краја дана“
Шта је крај дана? Ваш крај дана је 19.00, вероватно мој 18.00?
- „... морао бих да урадим детаљна испитивања за ово“
Шта је детаљно тестирање? Не постоји техника испитивања која се назива „детаљно испитивање“
- „… Код би требао бити доброг квалитета пре него што га применимо на КА“
Како мерите добар квалитет?
Уместо тога, ако преформулишем изјаве као -
Цикломатична сложеност за део кода израчунава се као 75 и према нашим стандардима; ова функционалност је хаос природе. Стога препоручујемо даље разлагање.
Готово
- „... .. ову функционалност је врло тешко применити“
Функционалност ће се применити у КА окружењу до 17:00 ЦСТ.
Готово
- „... .Ово би требало да буде доступно до краја дана“
Будући да се цикломатска сложеност израчунава као 48, према нашем стандарду радили бисмо тестирање система заједно са интеграционим и регресионим тестирањем за функцију.
Готово
- '..... Морао бих да урадим детаљна испитивања за ово'
Према Сонару, ЦЦ сада има 102. Стандардизирали смо да ЦЦ има до 10. Код ћемо распоредити када побољшамо код како би ЦЦ био мањи од 10.
Готово
- „..... Код би требао бити доброг квалитета пре него што га применимо на КА“
Која је разлика између две изјаве?
Па, овде је разлика у мерењу. Подржао сам сваку своју изјаву одговарајућим мерењима која би помогла мојим заинтересованим странама да тачно знају шта желим да кажем.
Слично томе, користите Цицломатиц сложеност у тестирању софтвера да бисте одредили тачну меру ваших напора на тестирању, а помоћу њега можете не само да идентификујете опсег вашег тестирања већ и врсте тестирања које бисте требали да обавите.
Препоручено читање
- Шта је испитивање компонената или испитивање модула (научите на примерима)
- Шта је упоредно тестирање (научите на примерима)
- Е-књига о пакету за тестирање софтверског пакета
- Шта је тестирање системске интеграције (СИТ): научите на примерима
- Најбољи алати за тестирање софтвера 2021. (Алати за аутоматизацију КА теста)
- Преузимање е-књиге за тестирање буквара
- 5 важних дијаграма које тестери морају да науче како да користе
- Водич за преглед ТестРаил-а: Научите управљање крајњим примером