Code Урок за покритие: Тестване на клонове, оператори и решения

Какво е Code покритие?

Code Покритието е мярка, която описва степента, в която е тестван изходният код на програмата. Това е една от формите на тестване с бяла кутия, която открива областите на програмата, които не са тествани от набор от тестови случаи. Също така създава някои тестови случаи за увеличаване на покритието и определяне на количествена мярка за покритие на кода.

В повечето случаи системата за покритие на кода събира информация за работещата програма. Той също така комбинира това с информация за изходния код, за да генерира отчет за покритието на кода на тестовия пакет.

Защо ползване Code Тестване на покритието?

Ето някои основни причини за използване на кодово покритие:

  • Помага ви да измерите ефективността на изпълнението на теста
  • Предлага количествено измерване.
  • Той определя степента, до която изходният код е тестван.

Code Методи на покритие

Следват основните методи за покритие на кода

  • Покритие на изявлението
  • Покритие на решението
  • Покритие на клонове
  • Toggle Покритие
  • FSM покритие

Покритие на изявлението

Покритие на изявлението е техника за тестване на бяла кутия, при която всички изпълними изрази в изходния код се изпълняват поне веднъж. Използва се за изчисляване на броя на изразите в изходния код, които са били изпълнени. Основната цел на Statement Coverage е да покрие всички възможни пътища, редове и изрази в изходния код.

Покритието на изявление се използва за извличане на сценарий въз основа на структурата на тествания код.

Покритие на изявлението

In Бял Box Тестване, тестерът се концентрира върху това как работи софтуерът. С други думи, тестерът ще се съсредоточи върху вътрешната работа на изходния код по отношение на контролни графики на потока или диаграми на потока.

Обикновено във всеки софтуер, ако погледнем изходния код, ще има голямо разнообразие от елементи като оператори, функции, looping, изключителни обработчици и др. В зависимост от входните данни към програмата, някои от кодовите оператори може да не бъдат изпълнени. Целта на покритието на операторите е да обхване всички възможни пътища, редове и оператори в кода.

Нека разберем това с пример, как да изчислим покритието на отчета.

Сценарий за изчисляване на покритието на отчета за даден изходен код. Тук вземаме два различни сценария, за да проверим процента на покритие на отчета за всеки сценарий.

източник Code:

Prints (int a, int b) {                       ------------  Printsum is a function 
    int result = a+ b; 
    If (result> 0)
    	Print ("Positive", result)
    Else
    	Print ("Negative", result)
    }                                        -----------   End of the source code 

Сценарий 1:

Ако A = 3, B = 9

Покритие на изявлението

Изявленията, отбелязани с жълт цвят, са тези, които се изпълняват по сценарий

Брой изпълнени оператори = 5, Общ брой оператори = 7

Покритие на изявлението: 5/7 = 71%

Покритие на изявлението

По същия начин ще видим сценарий 2,

Сценарий 2:

Ако A = -3, B = -9

Покритие на изявлението

Изявленията, отбелязани с жълт цвят, са тези, които се изпълняват по сценарий.

Брой изпълнени изрази = 6

Общ брой твърдения = 7

Покритие на изявлението

Покритие на изявлението: 6/7 = 85%

Покритие на изявлението

Но като цяло, ако видите, всички твърдения се покриват и от двата сценария. Така че можем да заключим, че общото покритие на изявленията е 100%.

Покритие на изявлението

Какво покрива покритието на изявленията?

  1. Неизползвани отчети
  2. Мъртъв Code
  3. Неизползвани клонове
  4. Липсващи твърдения

Тестване на покритието на решенията

Покритие на решението е техника за тестване на бяла кутия, която отчита верните или грешните резултати на всеки булев израз на изходния код. Целта на тестването на покритието на решението е да покрие и валидира целия достъпен изходен код, като провери и гарантира, че всяко разклонение на всяка възможна точка на решение се изпълнява поне веднъж.

При този тип покритие изразите могат да станат сложни, което прави постигането на 100% покритие трудно. Ето защо се използват различни методи за отчитане на този показател. Тези методи дават приоритет на най-критичните комбинации. Въпреки че е подобно на покритието на решенията, то осигурява по-голяма чувствителност към контролния поток.

Тестване на покритието на решенията

Пример за покритие на решение

Разгледайте следния код-

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }

Сценарий 1:

Стойността на a е 2

Тестване на покритието на решенията

Маркираният в жълто код ще бъде изпълнен. Тук резултатът „Не“ от решението If (a>5) се проверява.

Покритие на решение = 50%

Сценарий 2:

Стойността на a е 6

Тестване на покритието на решенията

Маркираният в жълто код ще бъде изпълнен. Тук резултатът „Да“ от решението If (a>5) е отметнат.

Покритие на решение = 50%

Тестов случай Стойността на А Продукция Покритие на решението
1 2 2 50%
2 6 18 50%

Тестване на покритието на клонове

Покритие на клонове е метод за тестване на бяла кутия, при който се тества всеки резултат от кодов модул (изявление или цикъл). Целта на покритието на клоновете е да се гарантира, че всяко условие за вземане на решение от всеки клон се изпълнява поне веднъж. Помага за измерване на части от независими кодови сегменти и за откриване на секции без разклонения.

Например, ако резултатите са двоични, трябва да тествате както True, така и False резултати.

Формулата за изчисляване на покритието на клона:

Тестване на покритието на клонове

Пример за покритие на клон

За да научим покритието на клоновете, нека разгледаме същия пример, използван по-рано

Разгледайте следния код-

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }                                       

Тестване на покритието на клонове

Покритието на клонове ще вземе предвид и безусловния клон

Тестов случай Стойността на А Продукция Покритие на решението Покритие на клонове
1 2 2 50% 33%
2 6 18 50% 67%

Предимства на клоново покритие:

Покритие на клон Тестването предлага следните предимства:

  • Позволява ви да валидирате всички разклонения в кода
  • Помага ви да се уверите, че нито едно разклонение не води до аномалии в работата на програмата
  • Методът за покритие на разклонения премахва проблеми, които се случват поради тестване на покритие на изявления
  • Позволява ви да намерите области, които не са тествани с други методи за тестване
  • Позволява ви да намерите количествена мярка за покритие на кода
  • Покритието на разклоненията игнорира разклоненията вътре в булевите изрази

Тестване на покритието на състоянието

Покритие на състоянието или покритието на израз е метод за тестване, използван за тестване и оценка на променливите или подизразите в условния израз. Целта на покритието на условието е да се проверят отделните резултати за всяко логическо условие. Покритието на условията предлага по-добра чувствителност към контролния поток, отколкото покритието на решенията. В това покритие се разглеждат само изрази с логически операнди.

Например, ако изразът има булеви операции като И, ИЛИ, XOR, което показва пълните възможности.

Покритието на условията не дава гаранция за пълно покритие на решението.

Формулата за изчисляване на покритието на условията:

Тестване на покритието на състоянието

Пример:

Тестване на покритието на състоянието

За горния израз имаме 4 възможни комбинации

  • TT
  • FF
  • TF
  • FT

Разгледайте следния вход

X = 3

Y = 4

(x TRUE Покритието на състоянието е ¼ = 25%
A = 3

В = 4

(a>b) FALSE

Покритие на краен автомат

Покритието на крайната машина със сигурност е най-сложният тип метод за покритие на код. Това е така, защото работи върху поведението на дизайна. При този метод на покритие трябва да потърсите колко специфични за времето състояния са посетени, преминати. Той също така проверява колко последователности са включени в краен автомат.

Кой тип на Code Покритие по избор

Това със сигурност е най-трудният отговор. За да избере метод на покритие, тестерът трябва да провери дали

  • тестваният код има единични или множество неоткрити дефекти
  • цената на потенциалната неустойка
  • цената на загубената репутация
  • разходи за загубена продажба и др.

Колкото по-голяма е вероятността дефектите да причинят скъпи производствени повреди, толкова по-тежко е нивото на покритие, което трябва да изберете.

Code Покритие срещу функционално покритие

Code Обхват Функционално покритие
Code Покритието ви показва колко добре е бил тестван изходният код от вашия тестов стенд. Функционалното покритие измерва доколко функционалността на дизайна е покрита от вашия тестов стенд.
Никога не използвайте спецификация на дизайна Използвайте спецификация на дизайна
Направено от разработчици Изработено от тестери

Code Инструменти за покритие

Ето списък с важни инструменти за покритие на кода:

Име на инструмента Descriptйон
Cobertura Това е инструмент за покритие с отворен код. Той измерва тестовото покритие чрез инструментиране на кодова база и анализира кои редове от код се изпълняват и кои не се изпълняват, когато се изпълнява тестовият пакет.
Детелина Clover също така намалява времето за тестване, като изпълнява само тестовете, които покриват кода на приложението, който е бил модифициран след предишната компилация.
DevPartner DevPartner позволява на разработчиците да анализират Java код за Code Качество и сложност.
Ема EMMA поддържа ниво на покритие на клас, метод, линия и базов блок, агрегиран изходен файл, клас и метод.
Калистик Kalistick е приложение на трета страна, което анализира кодовете от различни гледни точки.
CoView и CoAnt Софтуерът за кодиране е инструмент за покриване на код за показатели, създаване на фиктивни обекти, възможност за тестване на код, покритие на пътя и разклонения и т.н.
Булсай за C++ BulseyeCoverage е инструмент за покритие на код за C++ и В.
Хидролокатор Sonar е инструмент за покритие с отворен код, който ви помага да управлявате качеството на кода.

Предимства и недостатъци на използването Code Обхват

Code Предимства на покритието Code Недостатъци на покритието
Полезно за оценка на количествена мярка за покритие на кода Дори когато някаква специфична функция не е внедрена в дизайна, покритието на кода все още отчита 100% покритие.
Тя ви позволява да създавате допълнителни тестови случаи, за да увеличите покритието Не е възможно да се определи дали сме тествали всички възможни стойности на функция с помощта на покритие на кода
Тя ви позволява да намерите областите на програма, които не се упражняват от набор от тестови случаи Code Покритието също не показва колко и колко добре сте покрили логиката си
В случай, че определената функция не е внедрена или не е включена от спецификацията, тогава базираните на структура техники не могат да открият този проблем.

Oбобщение

  • Code Покритието е мярка, която описва степента, в която е тестван изходният код на програмата.
  • Помага ви да измерите ефективността на изпълнението на теста
  • Пет Code Методите за покритие са 1.) Покритие на извлечения 2.) Покритие на условия 3) Покритие на клонове 4) Toggle Покритие 5) Покритие на FSM
  • Покритието на изрази включва изпълнение на всички изпълними изрази в изходния код поне веднъж
  • Покритието на решението отчита верните или грешните резултати от всеки булев израз
  • В покритието на клона всеки резултат от кодов модул се тества
  • Conditional ще разкрие как се оценяват променливите или подизразите в условния израз
  • Покритието на крайната машина със сигурност е най-сложният тип метод за покритие на код
  • За да избере метод на покритие, тестерът трябва да провери цената на потенциалната неустойка, загубена репутация, загубена продажба и т.н.
  • Code Покритието ви показва колко добре е бил тестван изходният код от вашия тестов стенд, докато функционалното покритие измерва колко добре е покрита функционалността на дизайна.
  • Cobertura, JTest, Clover, Emma, ​​Kalistick са няколко важни инструмента за покритие на кода
  • Code Покритието ви позволява да създавате допълнителни тестови случаи, за да увеличите покритието
  • Code Покритието не ви помага да определите дали сме тествали всички възможни стойности на дадена характеристика

Обобщете тази публикация с: