Practice with a different types and approaches of software testing.
BDD (Behavior Driven Development) - подход к написанию тестов, который предоставляет возможность описания функциональности тестов максимально понятно (по сути разговорным языком) основанно на описании поведения с точки зрения пользователя и его желаний при работе с приложением.
Хороший пример использования - инстурмент Cucumber с ключевыми словами не технического языка Gherkin: Given(условие - нахожусь на странице регистрации), When(действие - когда нажимаю "Отправить форму"), And(другое действие в рамках тестирования фичи),Then(результат - перенаправление на домашнюю страницу). Ключевые слова формируют сценарий выполнения, который должен быть исключительно самостоятельным.
TDD (Test Driven Development) - разработка программного обеспечения, основанном на тестировании (сперва пишут тесты, а потом код). Подход TDD отличается от других методов тем, что он объединяет программирование с написанием тестов самим разработчиком. Шаги подхода:
- cоздают тест, который не может быть пройден;
- пишут рабочий код, который пройдёт тест;
- делают рефакторинг кода, написанного на втором шаге, используя созданный тест доводят код до совершенства.
Важно также знать о понятии функциональная декомпозиция (functional decomposition) — процесс определения функции через её разделение на несколько низкоуровневых подфункций. Это основополагающий подход, суть которого состоит в упрощении решения поставленных задач и получения возможности повторного использования фрагментов кода для решения различных высокоуровневых задач.
Например для проверки процесса авторизации необходимо:
-
Ввести имя пользователя: 1.1. Найти поле; 1.2. Заполнить поле.
-
Ввести пароль пользователя: 2.1. Найти поле; 2.2. Заполнить поле.
-
Отправить данные(форму): 3.1. Найти кнопку; 3.2. Нажать кнопку.
-
Проверить результат: 4.1. Найти надпись; 4.2. Сравнить надпись.
Jenkins - программная система, предназначенная для обеспечения процесса непрерывной интеграции(Continuous integration) программного обеспечения, то есть постоянном слиянии рабочих копий в общую основную ветвь разработки и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. Bсходный код и всё, что необходимо для сборки и тестирования проекта, должно храниться в репозитории системы управления версиями типа Git и т. д.
JIRA - одна из багтрекинговых систем, позволяющая организовать продуктивную и слаженную работу команды.
-
WebdriverIO предлагает собственный подход к использованию функционала Selenium WebDriver. WebDriverIO отличается очень простыми и читабельными синтаксическими конструкциями.
-
Protractor - система автоматизации тестирования E2E с открытым исходным кодом, разработанная специально для веб-приложений Angular и AngularJS. Написан на Node.js, построенный поверх WebDriverJS, работающий как интегратор решений, объединяющий технологии такие как Node.js, Jasmine, Selenium, Mocha, Cucumber и Web.
-
Nightwatch.js - фреймворк для создания и выполнения e2e тестов веб-приложений и сайтов, написанный на Node.js и использующий Selenium WebDriver для взаимодействия с браузером. Можно использовать также в CI, для юнит и интеграционных тестов.
-
Selenium - позволяет автоматизировать взаимодействие с браузером, имитируя действия пользователя. Этот фреймворк не создан специально для тестов, он может управлять браузером в различных целях, предоставляя сервер, который симулирует поведение пользователя в браузере с использованием программных механизмов.
-
Puppeteer — это библиотека для Node.js, которую разработала Google. Она предоставляет удобное Node.js API для управления браузером Chrome без пользовательского интерфейса (Headless Chromium).
-
Appium - предоставляет API, похожее на API Selenium. Этот фреймворк предназначен для организации тестирования мобильных проектов.
-
Cucumber - помогает разработчикам с написанием тестов в BDD. Тесты разделены между файлами критериев приемлемости, подготовленных с использованием синтаксиса Gherkin, и собственно файлами тестов, которые им соответствуют. Тесты могут быть написаны на различных языках, которые поддерживает фреймворк, в том числе и на JS.
-
Chai – библиотека, предоставляющая множество функций проверки утверждений. В Chai сужествует три типа assertions :
- should (должен);
- expect (ожидать);
- assert (утверждать). Также наиболее популярная функция - assert.equal.
-
Sinon – представляет собой мощную автономную систему, предоставляющую возможность наблюдать за функциями, эмулировать встроенные функции,выполнять тестирование JavaScript-проектов с использованием так называемых шпионов (spy), заглушек (stub) и имитаций (mock). Эта система умеет работать с любыми фреймворками для модульного тестирования.
-
Karma - позволяет запускать тесты в браузере и в средах, напоминающих браузеры, в том числе — в jsdom. Karma поддерживает сервер тестирования со специальной веб-страницей, в окружении которой и будут выполняться тесты. Эту страницу можно открывать во множестве браузеров.
-
Jasmine - это BDD фреймворк для тестирования JavaScript кода. Jasmine включает в себя всё, что необходимо для того, чтобы приступить к тестированию. Ключевые слова: describe, it, expect.
-
Jest — это фреймворк для тестирования, разработанный Facebook. Он основан на Jasmine. Фреймворк Jest признан самым быстрым в применении к большим проектам со множеством файлов тестов.
-
Mocha – фреймворк, предоставляющий общие функции тестирования, такие как describe и it, а также функцию запуска тестов. Не имеет встроенной assertion библиотеки (наиболее популярные связки Chai, should.js, expect.js).