4.52M

Regressiondykh-zhaene-integraciyalykh-testileu-Negizgi-tuesinikter-men-taezhiribe.pptx (1)

1.

Регрессиондық және интеграциялық
тестілеу: Негізгі түсініктер мен тәжірибе
Бұл презентацияда біз бағдарламалық қамтамасыз етуді әзірлеудің маңызды
кезеңдері болып табылатын регрессиялық және интеграциялық тестілеудің
негізгі аспектілерін қарастырамыз. Сапаны қамтамасыз ету (QA) процесіндегі
олардың рөлі мен тиімді тәжірибелерін талдаймыз.
Біз маңызды әдебиеттер мен зерттеулерге сүйене отырып, осы тестілеу түрлерін енгізудің
теориялық негіздері мен практикалық әдістерін ашып көрсетеміз. Мақсат — QA инженерлеріне,
әзірлеушілерге және жоба менеджерлеріне осы процестерді тиімді басқаруға көмектесетін терең
түсінік беру.
Регрессиялық Тестілеу
Жаңа өзгерістердің немесе түзетулердің бұрынғы жұмыс істеп тұрған функционалды
бұзбауын қамтамасыз ету.
Интеграциялық Тестілеу
Жүйенің әртүрлі модульдері немесе компоненттерінің бірге дұрыс жұмыс істеуін тексеру.

2.

Кітап шолуы: Владимир Хориковтың “Unit Testing: Principles, Practices and
Patterns”
Автор: Владимир Хориков
Атауы: «Принципы юнит-тестирования» (Unit Testing: Principles,
Practices and Patterns)
Владимир Хориковтың бұл еңбегі бағдарламалық жасақтаманың сапасын арттыруға
бағытталған юнит-тестілеудің негіздерін, озық тәжірибелерін және үлгілерін (patterns)
тереңінен зерттейді. Кітап тек тестілеуді қалай жүргізу керектігін ғана емес, сонымен қатар
тестілеуді жеңілдететін, оқылуы оңай және тұрақты кодты қалай жазу керектігін үйретеді.
Хориков мырза юнит-тестілеуді толық қамтуды, оның тиімділігін арттыруды және тестілеуге
кететін уақытты азайтуды мақсат ететін нақты принциптерді ұсынады. Кітапта
интеграциялық және регрессиялық тестілеу де юнит-тестілеу контекстінде қарастырылады,
өйткені бұл тестілеу түрлері әзірлеу циклінің ажырамас бөлігі болып табылады.
Кітаптың негізгі фокусы: Тұрақты, қызмет көрсетуге оңай және сенімді
бағдарламалық жасақтама жасау үшін тестілеуді әзірлеу процесіне қалай біріктіру
керек.

3.

Хориков кітабындағы юнит-тестілеу принциптері
Бұл бөлімде Хориков кітабындағы юнит-тестілеуге қатысты негізгі идеялар мен тұжырымдамалар қарастырылады, олар тікелей интеграциялық және
регрессиялық тестілеудің тиімділігіне әсер етеді.
Изоляция Принципі
Тестілеу Пирамидасы
Тұрақты Тесттер
Әрбір юнит-тесттің басқа тесттерден
Тестілеудің әртүрлі деңгейлерінің (юнит,
Тесттердің қолданыстағы логика өзгермесе,
немесе сыртқы факторлардан (мысалы,
интеграциялық, UI) арасындағы қатынасты
сәтсіздікке ұшырамауын қамтамасыз ету.
дерекқор, файлдық жүйе) тәуелсіз болуын
көрсететін үлгі. Пирамиданың негізінде ең
"Құбылмалы" (flaky) тесттерден аулақ болу,
қамтамасыз ету. Бұл тесттерді жылдам
көп юнит-тесттер болуы керек, өйткені олар
өйткені олар әзірлеушілердің тестілеу
орындауға және олардың сенімділігін
ең жылдам және ең арзан. Бұл
жүйесіне деген сенімін төмендетеді.
арттыруға мүмкіндік береді.
регрессиялық қателерді ерте анықтауға
Тұрақты тесттер регрессиялық тестілеудің
көмектеседі.
негізін құрайды.
Хориковтың көзқарасы бойынша, дұрыс құрылған юнит-тесттер интеграциялық тестілеудің ауыртпалығын азайтады
және регрессиялық тестілеудің негізгі бөлігін автоматтандыруға мүмкіндік береді. Ол нақты интеграциялық тесттерді тек
модульдердің өзара әрекеттесуін (мысалы, дерекқорға қосылу) тексеру үшін ғана пайдалануды ұсынады, ал бизнес
логика юнит-тесттер арқылы қамтылуы керек.

4.

Хориков еңбегінде қарастырылған тестілеу әдістері
Кітапта негізінен юнит-тестілеуге баса назар аударылғанымен, ол екі маңызды тестілеу түрін де қозғайды, өйткені олар юнит-тестілеумен тығыз
байланысты.
Юнит-Тестілеу (Unit Testing)
Интеграциялық Тестілеу (Integration Testing)
Ең кіші, оқшауланған код бөліктерін (функциялар, кластар) тексеру.
Екі немесе одан да көп модульдердің бірге дұрыс жұмыс істеуін
Жылдам, сенімді және қайталанатын тесттер, олар әзірлеушіге
тексереді. Мысалы, қосымшаның дерекқорға қосылуы немесе екі
қателерді ерте кезеңде табуға мүмкіндік береді.
микроқызметтің өзара әрекеттесуі. Хориков бұл тесттердің санын
шектеуді ұсынады, өйткені олар баяу және қымбат.
Регрессиялық Тестілеу (Regression Testing) контексті
Регрессиялық тестілеу - бұл жеке тестілеу деңгейі емес, барлық тестілеу деңгейлерінің (юнит, интеграциялық, сондай-ақ қабылдау) жиынтығы
ретінде қарастырылады, ол жаңа өзгерістердің бұрынғы функционалды бұзбауын қамтамасыз етеді. Автоматтандырылған юнит- және
интеграциялық тесттер регрессиялық қателерді жылдам және тиімді анықтаудың негізгі құралы болып табылады.
Хориковтың негізгі хабарламасы — сапалы бағдарламалық жасақтамаға қол жеткізу үшін тестілеу пирамидасын ұстану және тестілеуді әзірлеу
процесіне ерте енгізу қажет.

5.

Мақалаға шолу: Регрессиялық тестілеу стратегиялары
Бұл бөлімде регрессиялық тестілеуді жүзеге асырудың арнайы әдістеріне арналған ғылыми мақала қарастырылады.
Авторлар:
Епифанов Н.А., Кириков Е.А. және т.б.
Атауы:
«Кеңейтілген тест жинақтары бойынша регрессиялық тестілеуді жүзеге асыру әдістері / Регрессиялық тестілеу стратегиялары»
Бұл мақала өндірістік жүйелердегі регрессиялық тестілеудің күрделі мәселесіне назар аударады. Жүйелер үнемі кеңейіп,
өзгеріп отырғандықтан, барлық бұрынғы тест жинағын қайта іске қосу (қайта тестілеу) уақыт пен ресурстарды көп қажет
етеді. Авторлар бұл процесті оңтайландыру үшін тиімді стратегиялар мен әдістерді ұсынады.
Мақаланың негізгі ұсынысы — регрессиялық тестілеуді толығымен емес, ішінара жүргізу үшін кеңейтілген
(модификацияланған) тест жинақтарын қалыптастыруға мүмкіндік беретін әдістемелерді енгізу.

6.

Мақаланың негізгі идеялары: Регрессиялық тест жинағын оңтайландыру
Авторлар регрессиялық тестілеудің екі негізгі проблемасын бөліп көрсетеді: көп уақытты қажет ету және ресурстарды көп жұмсау. Олар бұл мәселелерді
шешу үшін тест жинақтарымен жұмыс істеудің бірнеше әдісін ұсынады.
Тест жинағын іріктеу
Тест жинағын басымдық беру
Модификацияланған кодқа немесе өзгертілген
Тесттерді олардың маңыздылығына, қателерді
функционалдыққа қатысты тесттерді ғана іске
табу ықтималдығына немесе бизнес-
қосу. Бұл процесті автоматтандыру үшін кодтың
тәуелділіктерін талдау қажет.
Тәуелділіктерді талдау
Өзгертілген код бөлігі мен бұл өзгерістен әсер
етуі мүмкін тесттер арасындағы байланысты
анықтау. Бұл «кеңейтілген тест жинағын» дәл
құруға мүмкіндік береді.
критикалығына қарай реттеу. Ең маңызды
тесттер алдымен іске қосылады.
Тест жинағын қысқарту
Қайталанатын немесе артық тесттерді жою. Бұл
тест жинағының жалпы өлшемін азайтады, бірақ
тестілеудің толықтығын сақтау керек.
Авторлар бұл әдістерді қолдану регрессиялық циклды айтарлықтай қысқартатынын және бағдарламалық жасақтаманы шығару уақытын жеделдететінін
көрсетеді. Бұл, әсіресе, жылдам дамып келе жатқан және үздіксіз жеткізу (CD) тәжірибесін қолданатын жобалар үшін өте маңызды.

7.

Мақалада қарастырылған әдіс: Кеңейтілген тест жинақтарын қалыптастыру
Мақаланың негізгі фокусы регрессиялық тестілеуді оңтайландыру мақсатында кеңейтілген тест жинақтарын (extended test suites) пайдалану болып табылады. Бұл әдіс барлық тесттерді қайта іске
қосудың орнына, тек қажетті тесттерді ғана іске қосуды білдіреді.
Код өзгерісі
Өзгеріс әсері
Тест таңдау
Таңдалған тесттерді
орындау
Епифанов және оның әріптестері ұсынған әдіс алгоритмдік тәсілге негізделген. Ол үшін жүйенің әрбір кодының өзгерісінің (жаңа мүмкіндік, қателік түзету) бар
тесттерге тигізетін ықтималды әсерін анықтайтын құралдар қажет.
• Әрбір өзгеріс үшін әсер ету аймағы (impact area) анықталады.
• Бұл аймақты қамтитын тесттердің жинағы іріктеледі.
• Қажет болған жағдайда, ең жоғары басымдылыққа ие (критикалық) тесттер бірінші орында орындалады.
Бұл тәсіл әсіресе үлкен және монолитті емес, модульдік архитектурасы бар жүйелер үшін тиімді, өйткені өзгерістердің әсер ету аймағын дәлірек шектеуге болады.

8.

Үздіксіз Тестілеу (Continuous Testing) CI/CD методологиясында
CI/CD (Үздіксіз Интеграция/Үздіксіз Жеткізу) қазіргі бағдарламалық жасақтама әзірлеудің негізі болып табылады. Үздіксіз тестілеу (Continuous Testing) — бұл сапаны арттыруға мүмкіндік беретін CI/CD
конвейерінің ажырамас бөлігі.
Доклад Тақырыбы: CI/CD методологиясындағы үздіксіз тестілеу
• Үздіксіз Тестілеу Анықтамасы: Бұл тек кодды интеграциялау кезінде ғана емес, әзірлеу
циклінің әрбір кезеңінде тестілеуді автоматтандыруды білдіреді. Мақсат — бизнес тәуекелдерді
мүмкіндігінше ерте және үздіксіз бағалау.
• Регрессиялық Тестілеу Рөлі: CI/CD жағдайында регрессиялық тестілеу міндетті түрде толық
автоматтандырылған болуы керек және әрбір код өзгерісі немесе интеграциясы кезінде
автоматты түрде іске қосылуы қажет. Бұл "сапалық қақпа" рөлін атқарады.
• Интеграциялық Тестілеу Рөлі: Компоненттердің өзара әрекеттесуін тексеру үшін CI
конвейерінде жүзеге асырылады. Микроқызметтер архитектурасында бұл әсіресе маңызды,
өйткені әртүрлі қызметтердің API-лерінің үйлесімділігін тексеру қажет.

9.

Үздіксіз тестілеудің негізгі компоненттері
CI/CD-да үздіксіз тестілеуді тиімді жүзеге асыру үшін бірнеше маңызды элементтерді біріктіру қажет.
Жоғары Автоматтандыру
"Солға Ығысу" Принципі
Жылдам Кері Байланыс
Тестілеуді әзірлеу процесінің
Тестілеу нәтижелері
Барлық тестілеу деңгейлері
мүмкіндігінше ерте кезеңдеріне
әзірлеушілерге бірнеше минут
(юнит, интеграциялық,
жылжыту. Қателерді ерте табу
ішінде қолжетімді болуы керек.
регрессиялық, қауіпсіздік) CI/CD
оларды түзету құнын
Бұл тестілеу жинақтарын
конвейеріне толықтай
айтарлықтай төмендетеді. Юнит-
оңтайландыруды және жылдам
интеграцияланған және адамның
тесттер мен интеграциялық
іске қосуды талап етеді (5-
араласуынсыз орындалуы керек.
тесттерді әзірлеумен бірге жазу.
бөлімдегідей).
Бұл жылдам кері байланыс алуға
мүмкіндік береді.
Үздіксіз тестілеуде регрессиялық тестілеу автоматтандырылған тесттердің үлкен жиынтығы арқылы үздіксіз жүргізіледі. Әрбір
коммит, әрбір жаңа құрастыру (build) регрессиялық қателердің жоқтығына дереу тексеріледі, бұл жүйенің тұрақтылығын
қамтамасыз етеді.

10.

Қорытынды: Регрессиялық және Интеграциялық Тестілеуді
Біріктіру
Регрессиялық және интеграциялық тестілеу — бағдарламалық жасақтаманың сапасы мен тұрақтылығын қамтамасыз етудегі
өзара байланысты және шешуші процестер.
90%
60%
100%
Автоматтандыру
Тестілеу Қамтуы
CI/CD Интеграциясы
Регрессиялық тесттердің кем дегенде
Критикалық бизнес-логика юнит-
Барлық интеграциялық және
90%-ы автоматтандырылуы қажет.
тесттермен, ал негізгі интеграциялық
регрессиялық тесттер CI/CD конвейерінің
Қолмен тестілеуді ең аз деңгейге дейін
нүктелер интеграциялық тесттермен
әрбір орындалуы кезінде автоматты
азайту.
қамтылуы тиіс.
түрде іске қосылуы керек.
Тиімді QA стратегиясы әрқашан тестілеудің әртүрлі деңгейлерін біріктіруге негізделеді, мұнда жылдам юнит-тесттер (Хориков)
алғашқы регрессиялық қақпаны қамтамасыз етеді, ал оңтайландырылған интеграциялық және регрессиялық тест жинақтары
(Епифанов) үздіксіз жеткізу (Continuous Testing) талаптарына жауап береді.

11.

Қорытынды
Сапа мен Жеткізу Тұтастығының Бірлігі
Регрессиялық және интеграциялық тестілеу — бұл бағдарламалық жасақтаманың тұрақтылығы мен сапасын қамтамасыз етудегі негізгі тіректер. Заманауи
әзірлеуде, әсіресе CI/CD ортасында, бұл тестілеу түрлері әрбір код өзгерісінің сенімділігін тексеру үшін толық автоматтандырылуы және оңтайландырылуы
тиіс.
Тестілеуді Автоматтандыру
Регрессиялық Оңтайландыру
CI/CD-де үздіксіз тестілеуді іске қосу үшін қажетті
Уақытты үнемдеу үшін тесттерді таңдау және
негізгі қадам.
басымдылыққа бөлу стратегияларын қолдану.
Тест Пирамидасы
Интеграциялық Фокус
Көптеген жылдам юнит-тесттерден бастап, аз
Модульдердің өзара әрекеттесуін, әсіресе
баяу интеграциялық тесттерге ауысу.
сыртқы жүйелермен байланысты тексеру.
Сапа Мәдениеті
Сапаға деген жауапкершілікті бүкіл командаға
тарату.
Ерте Кері Байланыс
Қателерді әзірлеу циклінің басында табу және
түзету.
Тестілеу – бұл бағдарламалық жасақтаманың сапасына салынған инвестиция, ал үздіксіз тестілеу – бұл инвестицияның үнемі өсіп отыруының кепілі.
English     Русский Rules