Get your 6-month No-Cost Opt-Out offer for Unlimited Software Automation?

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

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

 

Table of Contents

Какво представлява инкременталното тестване?

Какво представлява инкременталното тестване при тестването на софтуер?

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

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

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

Модулите се тестват самостоятелно по време на тестването на единици. След това, по време на интеграционните тестове, всеки модул се интегрира парче по парче – или на етапи. Този процес гарантира, че всеки модул работи добре заедно. Въпреки това, за да проверят напълно всеки модул, тестерите трябва да симулират компоненти, които все още не са внедрени, или външни системи. За тази цел те се нуждаят от помощта на шаблони и драйвери.

 

Какво представляват стъбовете и драйверите в инкременталното тестване?

Заместителите и драйверите са важни инструменти за тестване на софтуер. Тези временни части от кода се използват по време на интеграционното тестване, тъй като предлагат на екипите възможността да имитират поведението и интерфейсите на различни модули или компоненти.

1. Останки:

Модулите, които все още не са разработени, не са достъпни за тестване. Те позволяват на тествания модул (MUT) да се свързва с непълни модули. Резултатът от това е, че MUT може да бъде тестван самостоятелно, дори когато не са налични свързани модули.

2. Шофьори:

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

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

 

Различни видове инкрементални

интеграционно тестване

Различни видове инкрементално тестване на интеграцията

Видовете инкрементално тестване могат да бъдат разделени на три категории. Нека разгледаме всяка от тях.

 

1. Постепенна интеграция отгоре надолу

 

Инкременталната интеграция отгоре надолу започва с тестване на модулите от най-висок порядък в системата. Оттам постепенно се интегрират и тестват модули от по-нисък порядък.Съществуват два основни сценария, при които се използва инкрементална интеграция отгоре надолу. Те са:

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

Стъпки за постепенна интеграция отгоре надолу

  • Идентифициране на критични модули
  • Създаване на модули за имитация на модули от по-нисък ред
  • Разработване на драйвери за взаимодействие с модулите от по-висок порядък за изпращане на данни и интерпретиране на резултатите от модула.
  • Тестване на критични модули с драйвери и заместващи модули
  • Интегриране на модули от по-нисък порядък и постепенно заместване на модулите с реални реализации
  • Преработване на драйверите, за да се адаптират към новите модули
  • Повторете, докато всички модули от по-нисък ред бъдат интегрирани и тествани.

 

2. Постепенна интеграция отдолу нагоре

 

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

  • Когато работите с по-малки системи.
  • Когато една система е модулирана
  • Когато имате опасения относно точността или пълнотата на данните.

Стъпки за възходяща инкрементална интеграция

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

 

3. Функционална инкрементална интеграция

 

Функционалното интеграционно тестване е следващият често срещан тип интеграционно тестване при тестването на софтуер. Докато предишните два вида се фокусираха върху модули от по-висок и по-нисък порядък, функционалното инкрементално тестване се основава на функционалността на конкретен модул.

Функционалната инкрементална интеграция се използва в
методологии Agile/DevOps
, и е отличен избор за приложения със сложни зависимости между модули или компоненти.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

Стъпки за функционална инкрементална интеграция

  • Идентифициране на отделни модули и компоненти с добре дефинирани интерфейси
  • Проверка на функционалността на всеки модул чрез тестване на модула
  • Интегриране на най-минималните основни модули на системата и осигуряване на нейното функциониране
  • Постепенно добавяйте отделни модули, като тествате функционалността на всяка стъпка
  • Преработване на кода при добавяне на всеки модул
  • Когато всички модули са добавени, тествайте функционалността и производителността.

 

Плюсове и минуси на подхода за инкрементално тестване

тестване на натоварването и RPA

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

 

Плюсове на подхода за инкрементално тестване

 

1. Гъвкавост

Както всички разработчици на софтуер и тестери знаят твърде добре, изискванията могат да се променят и развиват по време на SDLC, понякога доста драматично. Инкременталното тестване е достатъчно динамично, за да позволи на екипите да се адаптират по време на процеса на тестване и да включат нови планове и насоки.

 

2. Ранно откриване на грешки

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

 

3. Простота

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

 

4. По-нисък риск от регресия

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

 

5. Възможности за обратна връзка

Често пренебрегвано предимство на инкременталното тестване е, че то позволява на екипите да създават прототипи и MVP. Оттам заинтересованите страни и инвеститорите могат да оценят основната функционалност на процеса и да предоставят безценна обратна връзка. Тази ситуация може да спести много време и пари и да доведе до по-стабилни продукти.

 

Недостатъци на подхода за инкрементално тестване

 

1. Въпроси на интеграцията

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

 

2. Сложност на тестовия пакет

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

 

3. Повече работа

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

 

4. Повишени изисквания към управлението

Инкременталното тестване изисква съвместна работа на няколко екипа. Например екипите за разработка, тестване и DevOps ще трябва да работят съгласувано. Тази ситуация създава допълнителни изисквания към управлението и изисква добра комуникация между тези екипи, за да се гарантира, че те са фокусирани и се стремят към едни и същи цели.

 

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

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

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

 

1. Пример за инкрементално тестване на приложение за мобилно банкиране

Сценарий: Екип създава приложение за мобилно банкиране. Приложението е съставено от няколко различни модула, които позволяват:

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

  • 2FA и биометрична проверка на потребителя
  • Обработка на транзакции
  • Табло за управление на финансови данни

 

Цел: Екипът иска да тества интеграцията на всеки модул и да определи дали работят добре заедно. В резултат на това те създават три тестови случая.

 

Тестов случай 1

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

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

 

Тестов случай 2

Следващият тестови случай има за цел да провери как приложението се справя с неразрешени транзакции.

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

 

Тестов случай 3

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

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

 

Подходът на инкрементално тестване ли е

същото като инкременталното тестване?

алфа тестване срещу бета тестване

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

Макар че интересът към този вид моделиране нарасна през последните години благодарение на “смъртта” на бисквитките и данните на трети страни, единствената му връзка с инкременталното тестване е една обща дума.

 

Топ 3 инструменти за инкрементално тестване

ZAPTEST RPA + пакет за автоматизация на тестването

#1. ZAPTEST

Освен че осигурява първокласни
RPA
възможности, ZAPTEST предлага набор от инструменти за автоматизация на софтуерното тестване, които са идеални за инкрементално тестване. Някои от функциите включват:


  • Управление на данните от тестовете
    : Намаляване на времето и усилията, свързани с инкременталното тестване, като се позволи на екипите да използват повторно тестовите данни.
  • Записване и възпроизвеждане на скриптове: Този инструмент без код позволява на екипите да записват и изпълняват скриптове и да спестяват много време по време на инкременталното тестване
  • Тестови модули за многократна употреба: ZAPTEST е силно модулен и позволява на екипите да създават и използват повторно тестови модули и да съкращават значително времето за тестване.

Като цяло ZAPTEST предлага мощен и разнообразен пакет за автоматизация на тестове, който е подходящ за всякакъв вид тестване, включително и за инкрементално тестване.

 

#2. Селен

Selenium е платформа за автоматизация на тестове с отворен код, която е създадена, за да улесни тестването на мобилни приложения. Инструментите поддържат няколко мобилни платформи (Android, iOS, Windows) и използват модули и драйвери за симулиране на модули.

 

#3. Тестове

Testsigma е базирана в облака платформа за автоматизация на тестове. Тя може да се използва за тестване на уеб и мобилни приложения и е подходяща за инкрементално тестване благодарение на създаването на тестове без код и интеграцията с CI/CD конвейери.

 

Заключителни мисли

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

Наред с нашите най-добри в класа си
RPA
инструменти, ZAPTEST предлага автоматизация на софтуерни тестове без код, която е междуплатформена и междуприложна. Освен това нашият пакет за тестване е снабден с функции като интеграция на CI/CD, надеждни отчети и анализи, както и първокласна поддръжка и обслужване на клиенти.

Download post as PDF

Alex Zap Chernyak

Alex Zap Chernyak

Founder and CEO of ZAPTEST, with 20 years of experience in Software Automation for Testing + RPA processes, and application development. Read Alex Zap Chernyak's full executive profile on Forbes.

Get PDF-file of this post