SlideShare a Scribd company logo
1 of 17
Software quality assurance days
21 Международная конференция
по вопросам качества ПО
sqadays.com
Москва. 26–27 мая 2017
Александр Зуев
БПЦ Банковские Технологии. Москва, Россия
Автоматизированное тестирование - от
сложного к простому, или Запускаем автотесты
из браузера
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Варианты решений
Стандартное решение
Желаемое решение
TMSRUNNER
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Взгляд аналитика на автотесты
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Инструментарий
Системный Тестирование Веб-сервер Вспомогательный
Linux CentOS Selenium Nginx MySQLjs
Bash Protractor PHP ShellJS
Netcat Jasmine2 MySQL
cURL JavaScript
Xvfb
NodeJS + NPM
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Как это выглядит?
AJAX-запрос
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
●
Пишем автотесты
●
Запускаем автотесты на сервере (Виртуальный дисплей)
●
Черная магия:
●
Поднимаем netcat и заставляем его слушать порт
4444
●
«Живучесть» netcat или «Демонизация» процесса
●
Передача команды netcat`у из PHP-шной функции
shell_exec('command')
●
Ответ от Jasmine:
●
Jasmine: посылаем уведомление в Nginx
●
Запись отчета в базу
Этапы реализации
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Виртуальный дисплей
AJAX-запрос
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Xvfb -fp /usr/share/fonts/X11/misc/ :22 -screen 0
1024x768x16 2>&1 & export DISPLAY=:22
●
Xvfb
●
-fp /usr/share/fonts/X11/misc/
●
:22
●
-screen 0 1024x768x16
●
2>&1 &
●
export DISPLAY=:22
kill -9 `ps -eo pid,args | grep "Xvfb.*:22" |
grep -v grep| awk '{ print $1 }'`
Виртуальный дисплей
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Netcat
AJAX-запрос
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
nc -k -l 4444 | bash > /path/to/log-file.log
●
nc
●
-k -l
●
4444
●
| bash
●
> /path/to/log-file.log
kill -9 "$(pidof ncat)"
Поднимаем netcat
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
1) Netcat должен работать постоянно;
2) «Автоподъем» netcat в случае его падения;
3) Автоматическая настройка и экспорт виртуального
дисплея при старте «демона»
4) Автоматическая остановка виртуального дисплея при
остановки «демона»
5) Автоматическая остановка netcat при остановке
«демона»
«Демонизация»
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
PHP: shell_exec()
AJAX-запрос
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
PHP: shell_exec('command');
<?php
shell_exec('echo "protractor /path/to/protractor-
conf.js" | nc localhost 4444');
?>
●
shell_exec();
●
echo
●
"protractor /path/to/protractor-conf.js"
●
| nc localhost 4444
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Jasmine + ShellExec
AJAX-запрос
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Jasmine: уведомление Nginx
var shell = require('shelljs');
var myReporter = {
…
jasmineDone: function() {
shell('curl -s -v -X POST "http://server.com/pub?
id=the_channel" -d "TEST_ID"');
//запись отчета в базу
}
}
-s — silent
-v — verbose
-X — request
-d — data
Jasmine: custom reporter + ShellJS
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
Совсем чуть-чуть до финиша
●
Настроить Nginx
●
Обработать
напильником TMS
●
…
●
PROFIT!
Осталось:
Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из
браузера
●
Linux CentOS - https://www.centos.org/
●
NodeJS + NPM - https://nodejs.org/ + https://www.npmjs.com/
●
Selenium - www.seleniumhq.org/
●
Protractor - www.protractortest.org/
●
Jasmine2 - https://jasmine.github.io/
●
JavaScript - http://javascript.ru/
●
Bash - https://ru.wikipedia.org/wiki/Bash
●
Netcat - https://linux.die.net/man/1/nc
●
Nginx - https://nginx.ru/ru/
●
Nginx Push Stream module -
https://github.com/wandenberg/nginx-push-stream-module
●
PHP - http://php.net/
●
MySQL - https://www.mysql.com/
●
MySQLjs - https://www.npmjs.com/package/mysql
●
ShellJS - https://www.npmjs.com/package/shelljs
●
CURL - https://ru.wikipedia.org/wiki/CURL
●
Xvfb - https://en.wikipedia.org/wiki/Xvfb
●
Создание «демона» на bash - https://habrahabr.ru/post/151771/
Ссылки

More Related Content

What's hot

Bosun современный мониторинг / Дима Медведев (OneTwoTrip)
Bosun современный мониторинг / Дима Медведев (OneTwoTrip)Bosun современный мониторинг / Дима Медведев (OneTwoTrip)
Bosun современный мониторинг / Дима Медведев (OneTwoTrip)
Ontico
 
Нагрузочное тестирование теория Кожухов
Нагрузочное тестирование теория КожуховНагрузочное тестирование теория Кожухов
Нагрузочное тестирование теория Кожухов
Илья Кожухов
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
rit2010
 

What's hot (20)

Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
Selenium grid on-demand
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demand
 
WPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testingWPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testing
 
Использование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестовИспользование игровой модели для выполнения сложных сценарных тестов
Использование игровой модели для выполнения сложных сценарных тестов
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
 
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
Нагрузочное тестирование: Нестандартные методы анализа потока данных в прилож...
 
Илья Кудинов
Илья КудиновИлья Кудинов
Илья Кудинов
 
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей БуровСистема мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
 
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
 
JIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиковJIRA. С добавками. Для тестировщиков
JIRA. С добавками. Для тестировщиков
 
Нагрузочное тестирование
Нагрузочное тестированиеНагрузочное тестирование
Нагрузочное тестирование
 
Основы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрованияОсновы и нюансы параллельного тестрования
Основы и нюансы параллельного тестрования
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Bosun современный мониторинг / Дима Медведев (OneTwoTrip)
Bosun современный мониторинг / Дима Медведев (OneTwoTrip)Bosun современный мониторинг / Дима Медведев (OneTwoTrip)
Bosun современный мониторинг / Дима Медведев (OneTwoTrip)
 
Нагрузочное тестирование теория Кожухов
Нагрузочное тестирование теория КожуховНагрузочное тестирование теория Кожухов
Нагрузочное тестирование теория Кожухов
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Тестирование доступности ПО для людей с ограниченными возможностями
Тестирование доступности ПО для людей с ограниченными возможностямиТестирование доступности ПО для людей с ограниченными возможностями
Тестирование доступности ПО для людей с ограниченными возможностями
 

Similar to Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера

Кутумов - Автоматизация тестирования транспортных карт
Кутумов - Автоматизация тестирования транспортных картКутумов - Автоматизация тестирования транспортных карт
Кутумов - Автоматизация тестирования транспортных карт
qasib
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
Mobile Developer Day
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
Mobile Developer Day
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
Andrey Rebrov
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
guestb0af15
 
Cовременный станок верстальщика
Cовременный станок верстальщикаCовременный станок верстальщика
Cовременный станок верстальщика
mcslayer
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
Aleksandr Boichenko
 

Similar to Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера (20)

Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Развитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три годаРазвитие процессов тестирования в Badoo за три года
Развитие процессов тестирования в Badoo за три года
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
Практика
ПрактикаПрактика
Практика
 
Vladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testingVladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testing
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
 
Кутумов - Автоматизация тестирования транспортных карт
Кутумов - Автоматизация тестирования транспортных картКутумов - Автоматизация тестирования транспортных карт
Кутумов - Автоматизация тестирования транспортных карт
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
 
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps wayBuilding deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
 
Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"
 
Техники пентеста для активной защиты - Николай Овчарук
Техники пентеста для активной защиты - Николай ОвчарукТехники пентеста для активной защиты - Николай Овчарук
Техники пентеста для активной защиты - Николай Овчарук
 
Client Side Autotesting Flash
Client Side Autotesting FlashClient Side Autotesting Flash
Client Side Autotesting Flash
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
Automation Compliance Checks
Automation Compliance ChecksAutomation Compliance Checks
Automation Compliance Checks
 
Cовременный станок верстальщика
Cовременный станок верстальщикаCовременный станок верстальщика
Cовременный станок верстальщика
 
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"Евгений Батовский, Николай Птущук "Современный станок верстальщика"
Евгений Батовский, Николай Птущук "Современный станок верстальщика"
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
 
Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)
 

More from SQALab

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера

  • 1. Software quality assurance days 21 Международная конференция по вопросам качества ПО sqadays.com Москва. 26–27 мая 2017 Александр Зуев БПЦ Банковские Технологии. Москва, Россия Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера
  • 2. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Варианты решений Стандартное решение Желаемое решение TMSRUNNER
  • 3. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Взгляд аналитика на автотесты
  • 4. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Инструментарий Системный Тестирование Веб-сервер Вспомогательный Linux CentOS Selenium Nginx MySQLjs Bash Protractor PHP ShellJS Netcat Jasmine2 MySQL cURL JavaScript Xvfb NodeJS + NPM
  • 5. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Как это выглядит? AJAX-запрос
  • 6. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера ● Пишем автотесты ● Запускаем автотесты на сервере (Виртуальный дисплей) ● Черная магия: ● Поднимаем netcat и заставляем его слушать порт 4444 ● «Живучесть» netcat или «Демонизация» процесса ● Передача команды netcat`у из PHP-шной функции shell_exec('command') ● Ответ от Jasmine: ● Jasmine: посылаем уведомление в Nginx ● Запись отчета в базу Этапы реализации
  • 7. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Виртуальный дисплей AJAX-запрос
  • 8. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Xvfb -fp /usr/share/fonts/X11/misc/ :22 -screen 0 1024x768x16 2>&1 & export DISPLAY=:22 ● Xvfb ● -fp /usr/share/fonts/X11/misc/ ● :22 ● -screen 0 1024x768x16 ● 2>&1 & ● export DISPLAY=:22 kill -9 `ps -eo pid,args | grep "Xvfb.*:22" | grep -v grep| awk '{ print $1 }'` Виртуальный дисплей
  • 9. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Netcat AJAX-запрос
  • 10. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера nc -k -l 4444 | bash > /path/to/log-file.log ● nc ● -k -l ● 4444 ● | bash ● > /path/to/log-file.log kill -9 "$(pidof ncat)" Поднимаем netcat
  • 11. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера 1) Netcat должен работать постоянно; 2) «Автоподъем» netcat в случае его падения; 3) Автоматическая настройка и экспорт виртуального дисплея при старте «демона» 4) Автоматическая остановка виртуального дисплея при остановки «демона» 5) Автоматическая остановка netcat при остановке «демона» «Демонизация»
  • 12. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера PHP: shell_exec() AJAX-запрос
  • 13. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера PHP: shell_exec('command'); <?php shell_exec('echo "protractor /path/to/protractor- conf.js" | nc localhost 4444'); ?> ● shell_exec(); ● echo ● "protractor /path/to/protractor-conf.js" ● | nc localhost 4444
  • 14. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Jasmine + ShellExec AJAX-запрос
  • 15. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Jasmine: уведомление Nginx var shell = require('shelljs'); var myReporter = { … jasmineDone: function() { shell('curl -s -v -X POST "http://server.com/pub? id=the_channel" -d "TEST_ID"'); //запись отчета в базу } } -s — silent -v — verbose -X — request -d — data Jasmine: custom reporter + ShellJS
  • 16. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера Совсем чуть-чуть до финиша ● Настроить Nginx ● Обработать напильником TMS ● … ● PROFIT! Осталось:
  • 17. Автоматизированное тестирование - от сложного к простому, или Запускаем автотесты из браузера ● Linux CentOS - https://www.centos.org/ ● NodeJS + NPM - https://nodejs.org/ + https://www.npmjs.com/ ● Selenium - www.seleniumhq.org/ ● Protractor - www.protractortest.org/ ● Jasmine2 - https://jasmine.github.io/ ● JavaScript - http://javascript.ru/ ● Bash - https://ru.wikipedia.org/wiki/Bash ● Netcat - https://linux.die.net/man/1/nc ● Nginx - https://nginx.ru/ru/ ● Nginx Push Stream module - https://github.com/wandenberg/nginx-push-stream-module ● PHP - http://php.net/ ● MySQL - https://www.mysql.com/ ● MySQLjs - https://www.npmjs.com/package/mysql ● ShellJS - https://www.npmjs.com/package/shelljs ● CURL - https://ru.wikipedia.org/wiki/CURL ● Xvfb - https://en.wikipedia.org/wiki/Xvfb ● Создание «демона» на bash - https://habrahabr.ru/post/151771/ Ссылки