-
Notifications
You must be signed in to change notification settings - Fork 0
/
testing.html
91 lines (85 loc) · 14.3 KB
/
testing.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome file</title>
<link rel="stylesheet" href="https://stackedit.io/style.css" />
</head>
<body class="stackedit">
<div class="stackedit__left">
<div class="stackedit__toc">
<ul>
<li><a href="#тексеру">Тексеру</a>
<ul>
<li><a href="#тестіленген-даму">Тестіленген Даму</a></li>
<li><a href="#әрекет-тіркесінің-дамуы">Әрекет Тіркесінің Дамуы</a></li>
<li><a href="#көмекші-тестілеу-құралдары">Көмекші Тестілеу Құралдары</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="stackedit__right">
<div class="stackedit__html">
<h1 id="тексеру">Тексеру</h1>
<p>PHP коды үшін автоматты тексеру жазуы жақындастырудағы ең жақсы әдістердің бірі екені қабылданады және сайттарды дайындау үшін өте ыңғайлы болар. Автоматты тексерулер, сіздің өзгерістерді жасау немесе жаңа функционалды қосу кезінде қолданушы тарапынан көздірілмеден жататтықтарды анықтау үшін қолданатын жанды тараппар.</p>
<p>PHP үшін көптеген різгі тексеру құралдары (немесе фреймворктер) бар, олар алаңды байланыстарды пайдаланады - барлығы да көмек көрсететін, жаңа өзгерістер өтініштері мен алдымен бар бағдарламаларды жасау үшін қоса тұрмау бойынша қолдау көрсететін жанды көмекші бары.</p>
<h2 id="тестіленген-даму">Тестіленген Даму</h2>
<p><a href="https://wikipedia.org/wiki/Test-driven_development">Wikipedia</a> дереккөзінен:</p>
<blockquote>
<p>Тестіленген даму (TDD) - бұл бағдарлама дайындалу процесі, оған сипаттаманы жасау немесе жаңа функцияны білдіруші тест кейсін жазады. Содан кейін дайындама кодты тестті өткізеді және соңында жаңа кодты келісімді стандарттарға айналдырады. Техникалық көмекші Кент Бек, бұл техниканы дайындау немесе ‘қайта табу’ деп бағаландыруды міндетті болатын әдісті 2003 жылы айтқанда, TDD-нің сымпай ұстану мен сенімділік пайдаланушыны сенімдету үшін қостамайды десек еді.</p>
</blockquote>
<p>Сіздің бағдарламаңыңыз үшін көптеген різгі тесттеу түрлері бар:</p>
<h3 id="бірлескен-тексеру">Бірлескен Тексеру</h3>
<p>Бірлескен тексеру - бұл программалау әдісі, көмектесіп, функциялар, класстар және әдістерді дайындалу кезінде үстемделуін тексеру үшін пайдаланылатын жол. Көптеген әдіс және методтарға кіретін мәндерді тексеру арқылы, ішкі логикалықты дұрыс жұмыс істеуінен көтерілгендігін тексере аласыз. Зависимділіктерді дайындалу үшін қалпына “мок” кластар мен қамтыларды құрау және “стаб” жасау арқылы, өте жақсы тесттер кесімінің оралуын тексере аласыз.</p>
<p>Сіз класс немесе функция құру кезінде оның барлық міндеттері үшін бір бірлескен тест жасауыңыз керек. Өте жақсы деңгейде, сіз оған жарамсыз аргументтерді жіберсеңіз, ол қатесіз ұшырайды, жарамды аргументтерді жіберсеңіз, ол жұмыс істейді сенімді. Бұл сізге көмек көрсетеді, сонымен қатар, даму циклінде осы класс немесе функция үшін жасалған өмірінің күшіні тексере отырып, ескі қабілеттерінің көзінін ұстамауын көмек көрсетеді. Басқа альтернатива болары <code>var_dump()</code> тест.php файлында, бұл өте әшкерелі жасау әдісі емес - кіші пен көпті.</p>
<p>Бірлескен тесттерді қолдануға алуға басым болар да бар. Сіз бұл жариялау меншігінде күшті жеткізу үшін тест жаза аласыз (мысалы, сөз беретін жатасыз), содан кейін оны түзетіп, жасау туралы тестті көрсетіп болады, тесттер өте дайын күшті жеткізілгенде, патчтар қабылдану үшін өте дайындық паузаларды бір топты артықшылайды. Егер сіздің проектіңіз pull-сұрауларды қабылдайтын болса, онда сіз бұлды қажет ететіндігін бақылау көрсете аласыз.</p>
<p><a href="https://phpunit.de/">PHPUnit</a> PHP қолданбалары үшін бірлескен тесттерді жазу үшін де-факто тестілеу кезеңі болып табылады, бірақ көптеген альтернативалар да бар:</p>
<ul>
<li><a href="https://github.com/atoum/atoum">atoum</a></li>
<li><a href="https://github.com/kahlan/kahlan">Kahlan</a></li>
<li><a href="https://peridot-php.github.io/">Peridot</a></li>
<li><a href="https://pestphp.com/">Pest</a></li>
<li><a href="https://github.com/simpletest/simpletest">SimpleTest</a></li>
</ul>
<h3 id="интеграциялық-тексеру">Интеграциялық Тексеру</h3>
<p><a href="https://wikipedia.org/wiki/Integration_testing">Wikipedia</a> дереккөзінен:</p>
<blockquote>
<p>Интеграциялық тексеру (кейінгі кезеңде Интеграциялық және Тексеру деп аталады, тым қысқартылғаны “I&T”) - бұл программалау тестілеу кезеңі, екіншілектен жасалған программалау модульдерін біріктіріп, топта тестілеу. Бұл бірлескен тестілеу және тексеру арасында орын алады. Интеграциялық тексеру, бірлескен тестілеулері орындалған модульдерді теріске алып, оларды өте көп топтарда топтау үшін алғаш тарту тестілеу жоспарында анықталатын тесттерді қолдана алады. Олардың шығаруы - жүйелік тестілеуді үшін дайындалған жинау болып табылады.</p>
</blockquote>
<p>Бірлескен тестілеу үшін пайдаланылатын көптеген адамзат кезегі тапсырып болса, бірлескен тестілеу үшін пайдаланылатын төменгі тапсырыптар қолданылады.</p>
<h3 id="функционалды-тексеру">Функционалды Тексеру</h3>
<p>Кейде келедігі дайындау тестілеу деп аталатын функционалды тестілеу, автоматтандырылған тесттерді қолдану арқылы сіздің бағдарламанызды қолдану жатамасын тексереді. Мысалы, тек бірлескен бөлімдерді кодтың дайындалуыны тексеруден көмек алады деп айтарымыз, функционалды тестілеу өздері бағдарлама қолданушыларының пішіндік дайындалуын тексеру үшін пайдаланылады.</p>
<h4 id="функционалды-тексеру-құралдары">Функционалды Тексеру Құралдары</h4>
<ul>
<li><a href="https://www.selenium.dev/">Selenium</a></li>
<li><a href="https://mink.behat.org/">Mink</a></li>
<li><a href="https://codeception.com/">Codeception</a> - бұл келісімді тесттерді қамтамасыз ететін толық стек тесттілеу фреймворкі</li>
<li><a href="https://datasift.github.io/storyplayer/">Storyplayer</a> - бұл келісімді тесттерді қамтамасыз ететін толық стек тесттілеу фреймворкі, тест ортауын жасау мен жою үшін қолдау көрсететін фреймворк</li>
</ul>
<h2 id="әрекет-тіркесінің-дамуы">Әрекет Тіркесінің Дамуы</h2>
<p>Әрекет тіркесінің дамуы (BDD) - даму үшін екі різгі түрі бар: SpecBDD және StoryBDD. SpecBDD кодтың техникалық әрекетіне қаратылған, дегенмен StoryBDD бизнес немесе функционалды әрекеттерге немесе интерфейстерге қаратылған. PHP даму түрлері үшін фреймворктері бар.</p>
<p>StoryBDD арқылы, сіз өздеріңіздің бағдарламаның әрекетін сипаттау үшін адамдар менімен оқауы мүмкін болатын сөйлемелер жазасыз. Мұндастарды сіздің бағдарламанызға қаратылған жеке тесттер болуы мүмкін. PHP қолданбаларында StoryBDD үшін қолданылатын фреймворк <a href="https://behat.org/">Behat</a> , бұл Ruby-ның <a href="https://cucumber.io/">Cucumber</a> проектінен өзіне сипаттама жасайтын және функционалды әрекеттерді сипаттау үшін Gherkin DSL-ді реализациялау бағдарламасы.</p>
<p>SpecBDD арқылы, сіз сіздің жасалатын кодтың өзінің әрекетін сипаттау үшін түсініктеме жазасыз. Функция немесе методты тексеру көмегімен жататтықтарыңызды тексеру өтінішіні айтып, олардың өздері жанында жұмыс істеуінің сипаттауын айтып отырасыз. PHP қолданбалары үшін бұл мақсатпен <a href="https://www.phpspec.net/">PHPSpec</a> фреймворкы бар. Бұл фреймворк Ruby <a href="https://rspec.info/">RSpec проектінің</a> сипаттама жасау үшін қолданылатын.</p>
<h3 id="bdd-сілтемелер">BDD Сілтемелер</h3>
<ul>
<li><a href="https://behat.org/">Behat</a> - Ruby-нің <a href="https://cucumber.io/">Cucumber проектінен</a> алданып алуға бас тартып, PHP үшін StoryBDD фреймворкі;</li>
<li><a href="https://www.phpspec.net/">PHPSpec</a> - Ruby-нің <a href="https://rspec.info/">RSpec проектінен</a> алданып алуға бас тартып, PHP үшін SpecBDD фреймворкі;</li>
<li><a href="https://codeception.com/">Codeception</a> - BDD принциптерін пайдаланатын толық стек тесттілеу фреймворкі.</li>
</ul>
<h2 id="көмекші-тестілеу-құралдары">Көмекші Тестілеу Құралдары</h2>
<p>Жеке тесттер мен әрекет тіркесі фреймвортарының алғаш реттегімен, көмекші фреймворттар мен көмекші кітапханалар да бар, барлық қалаулы мәселелерге келетінді.</p>
<h3 id="құрал-сілтемелері">Құрал Сілтемелері</h3>
<ul>
<li><a href="https://www.selenium.dev/">Selenium</a> - браузерді автоматтандыру құралы, <a href="https://github.com/giorgiosironi/phpunit-selenium/">PHPUnit-мен біріктіру үшін қосылатын</a></li>
<li><a href="https://github.com/padraic/mockery">Mockery</a> - <a href="https://phpunit.de/">PHPUnit</a> немесе <a href="https://www.phpspec.net/">PHPSpec</a> фреймвортарымен біріктіру үшін пайдаланылатын Mock Объекті фреймворты</li>
<li><a href="https://github.com/phpspec/prophecy">Prophecy</a> - сондай-ақ мақсатты бірақ күшті PHP объектілерін моклау фреймворты. Бұл <a href="https://www.phpspec.net/">PHPSpec-мен біріктірілген</a> және <a href="https://phpunit.de/">PHPUnit-мен пайдаланылатын</a></li>
<li><a href="https://github.com/php-mock/php-mock">php-mock</a> - PHP-ның қатарлы функцияларын моклауға көмек көрсететін кітапхана</li>
<li><a href="https://github.com/infection/infection">Infection</a> - сынау тесттеріңіздің эффективтілігін метролауға көмек көрсететін <a href="https://en.wikipedia.org/wiki/Mutation_testing">Мутациялы Тестілеу</a> PHP имплементациясы</li>
<li><a href="https://github.com/Yoast/PHPUnit-Polyfills">PHPUnit Polyfills</a> - тест наборының көптеген PHPUnit нұсқаларына қосылғанда сәтті іске қосылуын болдырмауға мүмкіндік беретін кітапхана</li>
</ul>
</div>
</div>
</body>
</html>