Code Инструмент за покритие: Тестване на оператори, разклонения и решения
⚡ Умно обобщение
Code Покритието е измерване на „бяла кутия“, което отчита степента, до която изходният код е бил използван от тестов пакет, helping Екипите намират непроверени оператори, разклонения, условия и пътища, които може да заемат скрити дефекти.

Какво е Code Покритие?
Code обхват е мярка, която описва степента, до която е тестван изходният код на дадена програма. Това е една от формите на тестване на бяла кутия който намира областите на програмата, които не са обхванати от набор от тестови случаи. Той също така помага за създаването на допълнителни тестови случаи за увеличаване на покритието и за определяне на количествена мярка за покритие на кода.
В повечето случаи системата за покритие на кода събира информация за работещата програма. След това тя комбинира тази информация с информация за изходния код, за да генерира отчет за покритието на кода на тестовия пакет.
Защо да използвате Code Тестване на покритието?
Ето някои основни причини за използване на кодово покритие:
- Това ви помага да измерите ефективността на внедряването на тестове.
- Той предлага количествено измерване на тестването.
- Той определя степента, до която изходният код е тестван.
Code Методи на покритие
Следните са основните методи за покритие на кода:
- Покритие на изявлението
- Покритие на решението
- Покритие на клонове
- Toggle Покритие
- FSM покритие
Покритие на изявлението
Покритие на изявлението е техника за тестване с бяла кутия, при която всички изпълними оператори в изходния код се изпълняват поне веднъж. Използва се за изчисляване на броя на изпълнените оператори в изходния код. Основната цел на покритието на оператори е да обхване всички възможни пътища, редове и оператори в изходния код.
Покритието на операторите се използва за извличане на сценарии, базирани на структурата на тествания код.
При тестването с бяла кутия, тестерът се концентрира върху това как работи софтуерът. С други думи, тестерът се концентрира върху вътрешната работа на изходния код, отнасяща се до графики на контролния поток или блок-схеми.
Обикновено във всеки софтуер, ако по��леднете изходния код, ще има голямо разнообразие от елементи като оператори, функции, 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: Ако A = -3, B = -9
Изразите, маркирани в жълто, са тези, които се изпълняват съгласно сценария. Брой изпълнени изрази = 6, Общ брой изрази = 7, следователно Покритие на изразите = 6/7 = 85%.
Но като цяло, ако видите, всички твърдения са покрити и от двата сценария. Така че можем да заключим, че общото покритие на твърденията е 100%.
Какво покрива покритието на изявленията?
- Неизползвани отчети
- Мъртъв Code
- Неизползвани клонове
- Липсващи твърдения
Тестване на покритието на решенията
Покритие на решението е техника за тестване с бяла кутия, която отчита верните или неверните резултати за всеки булев израз в изходния код. Целта на тестването за покритие на решения е да обхване и валидира целия достъпен изходен код, като провери и гарантира, че всеки клон на всяка възможна точка на вземане на решение се изпълнява поне веднъж.
При този тип покритие изразите могат да станат сложни, което затруднява постигането на 100% покритие. Ето защо се използват различни методи за отчитане на този показател. Тези методи приоритизират най-критичните комбинации. Въпреки че е подобен на покритието на разклоненията, той осигурява по-голяма чувствителност към контролния поток.
Пример за покритие на решенията
Разгледайте следния код:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Сценарий 1: Стойността на a е 2. Резултатът „Не“ от решението. Ако е отметнато (a>5), тогава Покритие на решенията = 50%.
Сценарий 2: Стойността на a е 6. Резултатът от решението е „Да“. Ако е отметнато (a>5), тогава Покритие на решението = 50%.
| Тестов случай | Стойността на А | Продукция | Покритие на решението |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Тестване на покритието на клонове
Покритие на клонове е метод за тестване „бяла кутия“, при който се тества всеки резултат от кодов модул (изпълнител или цикъл). Целта на покритието на клонове е да се гарантира, че всяко условие за решение от всеки клон се изпълнява поне веднъж. Това помага за измерване на дялове от независими сегменти на кода и откриване на секции, които нямат клонове.
Например, ако резултатите са двоични, трябва да тествате както True, така и False резултати.
Формулата за изчисляване на покритието на клона:
Пример за покритие на клон
За да научите покритието на разклоненията, разгледайте същия пример, използван по-рано. Покритието на разклоненията ще вземе предвид и безусловното разклонение.
| Тестов случай | Стойността на А | Продукция | Покритие на решението | Покритие на клонове |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Предимства на клоново покритие:
- Позволява ви да валидирате всички клонове в кода.
- Помага ви да се уверите, че никое разклонение не води до аномалии в работата на програмата.
- Премахва проблеми, които възникват поради тестване на покритието на операторите.
- Позволява ви да намерите области, които не са тествани с други методи за тестване.
- Позволява ви да намерите количествена мярка за покритие на кода.
- Покритието на клоновете игнорира клоновете в булеви изрази.
Тестване на покритието на състоянието
Покритие на състояниетоПокритието на изрази, или , е метод за тестване, използван за проверка и оценка на променливите или подизразите в условен оператор. Целта на покритието на условията е да се проверят отделните резултати за всяко логическо условие. Покритието на условията предлага по-добра чувствителност към потока на управление, отколкото покритието на решенията. При това покритие се разглеждат само изрази с логически операнди.
Например, ако даден израз има булеви операции като AND, OR или XOR, това показва общия брой възможности. Покритието на условията не гарантира пълно покритие на решенията.
Формулата за изчисляване на покритието на условията:
За израз с два операнда има четири възможни комбинации: TT, FF, TF и FT. Да разгледаме входните данни X=3, Y=4 (x б) НЕВЯРНО, което дава Покритие на състоянието от 1/4 = 25%.
Покритие на краен автомат
Покритието с крайни машини със сигурност е най-сложният вид метод за покритие на код. Това е така, защото работи върху поведението на дизайна. При този метод на покритие трябва да се провери колко пъти се посещават или преминават определени състояния. Той също така проверява колко последователности са включени в крайни машини.
Кой тип на Code Покритие по избор
Това със сигурност е най-трудният отговор. За да избере метод за покритие, тестерът трябва да провери дали:
- тестваният код има един или множество неоткрити дефекти,
- цената на потенциалната санкция,
- цената на загубената репутация,
- разходите за загубени продажби и т.н.
Колкото по-голяма е вероятността дефектите да причинят скъпи производствени повреди, толкова по-тежко е нивото на покритие, което трябва да изберете.
Code Покритие срещу функционално покритие
| Code Обхват | Функционално покритие |
|---|---|
| Показва ви колко добре е бил тестван изходният код от вашия тестов стенд. | Измерва доколко функционалността на дизайна е била покрита от вашия тестов стенд. |
| Никога не използва спецификация на дизайна. | Използва спецификация на дизайна. |
| Извършено от разработчици. | Извършено от тестери. |
Code Инструменти за покритие
Ето списък с важни инструменти за покритие на кода:
| Име на инструмента | Descriptйон |
|---|---|
| Cobertura | Инструмент за покритие на код с отворен код. Той измерва покритието на тестовете, като инструментира кодова база и анализира кои редове код се изпълняват и кои не, когато тестовият пакет се изпълнява. |
| Детелина | Детелина (OpenClover) също така намалява времето за тестване, като изпълнява само тестовете, които обхващат кода на приложението, променен след предишната компилация. |
| DevPartner | DevPartner позволява на разработчиците да анализират Java код за качество и сложност на кода. |
| Ема | EMMA поддържа покритие на класове, методи, редове и основни блокове, агрегирани на ниво изходен файл, клас и метод. |
| Калистик | Kalistick е приложение на трета страна, което анализира кода от различни гледни точки. |
| CoView и CoAnt | Инструмент за покритие на код за показатели, създаване на макетни обекти, тестваемост на код, покритие на пътища и клонове и други. |
| Булсай за C++ | BullseyeCoverage е инструмент за покритие на кода за C++ и В. |
| Хидролокатор | Sonar е инструмент за покритие с отворен код, който ви помага да управлявате качеството на кода. |
Предимства и недостатъци на използването Code Обхват
| Предимства | Недостатъци |
|---|---|
| Полезно за оценка на количествена мярка за покритие на кода. | Дори когато дадена функция не е имплементирана в дизайна, покритието на кода все още отчита 100% покритие. |
| Позволява ви да създавате допълнителни тестови случаи, за да увеличите покритието. | Не е възможно да се определи дали всички възможни стойности на дадена функция са тествани, използвайки покритие на кода. |
| Позволява ви да намерите областите на програмата, които не са били тествани от набор от тестове. | Code Покритието не показва колко и колко добре сте покрили логиката си. |






