Слайд 2
![Сайты 20 века](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-1.jpg)
Слайд 3
![Cовременные сайты](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-2.jpg)
Слайд 4
![Подходы к тестированию](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-3.jpg)
Слайд 5
![Программный продукт](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-4.jpg)
Слайд 6
![Реальный пример](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-5.jpg)
Слайд 7
![Структура проекта](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-6.jpg)
Слайд 8
![Установка PHPUnit composer require --dev phpunit/phpunit ^7](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-7.jpg)
Установка PHPUnit
composer require --dev phpunit/phpunit ^7
Слайд 9
![Установленные зависимости](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-8.jpg)
Установленные зависимости
Слайд 10
![PHPUnit Test Case class SolverTest extends TestCase { private $ROOT_SIGN](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-9.jpg)
PHPUnit Test Case
class SolverTest extends TestCase
{
private $ROOT_SIGN = '√';
private
$IMAGINARY_UNIT_SIGN = 'i';
public function testLinearEquation()
{
$solver = new Solver(0, -1, -1);
$this->assertEquals(-1, $solver->getFirstRoot());
$this->assertEquals(null, $solver->getSecondRoot());
}
public function testPerfectSquare()
{
$solver = new Solver(1, 0, -2);
$this->assertEquals("{$this->ROOT_SIGN}2", $solver->getFirstRoot());
$this->assertEquals("-{$this->ROOT_SIGN}2", $solver->getSecondRoot());
}
}
Слайд 11
![Запуск тестов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-10.jpg)
Слайд 12
![Сypress npm install cypress ./node_modules/.bin/cypress open](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-11.jpg)
Сypress
npm install cypress
./node_modules/.bin/cypress open
Слайд 13
![Графический интерфейс cypress](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-12.jpg)
Графический интерфейс cypress
Слайд 14
![Описание тестовых наборов cypress describe('Kitchen Sink', function () { it('.should()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-13.jpg)
Описание тестовых наборов cypress
describe('Kitchen Sink', function () {
it('.should() - assert
that
is correct', function () {
cy.visit('https://example.cypress.io')
cy.title().should('include', 'Kitchen Sink')
// ↲ ↲ ↲
// subject chainer value
})
Слайд 15
![Тесты cypress](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-14.jpg)
Слайд 16
![Выполнение теста cypress](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/421905/slide-15.jpg)