Skip to content

romanutd/Test-automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Test-automation

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. Найти поле; 1.2. Заполнить поле.

  2. Ввести пароль пользователя: 2.1. Найти поле; 2.2. Заполнить поле.

  3. Отправить данные(форму): 3.1. Найти кнопку; 3.2. Нажать кнопку.

  4. Проверить результат: 4.1. Найти надпись; 4.2. Сравнить надпись.

Основные инструменты для тестирования и организации удобства тестирования:

Jenkins - программная система, предназначенная для обеспечения процесса непрерывной интеграции(Continuous integration) программного обеспечения, то есть постоянном слиянии рабочих копий в общую основную ветвь разработки и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. Bсходный код и всё, что необходимо для сборки и тестирования проекта, должно храниться в репозитории системы управления версиями типа Git и т. д.

JIRA - одна из багтрекинговых систем, позволяющая организовать продуктивную и слаженную работу команды.

ТЕСТИРОВАНИЕ UI

  1. WebdriverIO предлагает собственный подход к использованию функционала Selenium WebDriver. WebDriverIO отличается очень простыми и читабельными синтаксическими конструкциями.

  2. Protractor - система автоматизации тестирования E2E с открытым исходным кодом, разработанная специально для веб-приложений Angular и AngularJS. Написан на Node.js, построенный поверх WebDriverJS, работающий как интегратор решений, объединяющий технологии такие как Node.js, Jasmine, Selenium, Mocha, Cucumber и Web.

  3. Nightwatch.js - фреймворк для создания и выполнения e2e тестов веб-приложений и сайтов, написанный на Node.js и использующий Selenium WebDriver для взаимодействия с браузером. Можно использовать также в CI, для юнит и интеграционных тестов.

  4. Selenium - позволяет автоматизировать взаимодействие с браузером, имитируя действия пользователя. Этот фреймворк не создан специально для тестов, он может управлять браузером в различных целях, предоставляя сервер, который симулирует поведение пользователя в браузере с использованием программных механизмов.

  5. Puppeteer — это библиотека для Node.js, которую разработала Google. Она предоставляет удобное Node.js API для управления браузером Chrome без пользовательского интерфейса (Headless Chromium).

  6. Appium - предоставляет API, похожее на API Selenium. Этот фреймворк предназначен для организации тестирования мобильных проектов.

ИНСТРУМЕНТЫ ОБЩЕГО НАЗНАЧЕНИЯ

  1. Cucumber - помогает разработчикам с написанием тестов в BDD. Тесты разделены между файлами критериев приемлемости, подготовленных с использованием синтаксиса Gherkin, и собственно файлами тестов, которые им соответствуют. Тесты могут быть написаны на различных языках, которые поддерживает фреймворк, в том числе и на JS.

  2. Chai – библиотека, предоставляющая множество функций проверки утверждений. В Chai сужествует три типа assertions :

  • should (должен);
  • expect (ожидать);
  • assert (утверждать). Также наиболее популярная функция - assert.equal.
  1. Sinon – представляет собой мощную автономную систему, предоставляющую возможность наблюдать за функциями, эмулировать встроенные функции,выполнять тестирование JavaScript-проектов с использованием так называемых шпионов (spy), заглушек (stub) и имитаций (mock). Эта система умеет работать с любыми фреймворками для модульного тестирования.

  2. Karma - позволяет запускать тесты в браузере и в средах, напоминающих браузеры, в том числе — в jsdom. Karma поддерживает сервер тестирования со специальной веб-страницей, в окружении которой и будут выполняться тесты. Эту страницу можно открывать во множестве браузеров.

ФРЕЙМВОРКИ

  1. Jasmine - это BDD фреймворк для тестирования JavaScript кода. Jasmine включает в себя всё, что необходимо для того, чтобы приступить к тестированию. Ключевые слова: describe, it, expect.

  2. Jest — это фреймворк для тестирования, разработанный Facebook. Он основан на Jasmine. Фреймворк Jest признан самым быстрым в применении к большим проектам со множеством файлов тестов.

  3. Mocha – фреймворк, предоставляющий общие функции тестирования, такие как describe и it, а также функцию запуска тестов. Не имеет встроенной assertion библиотеки (наиболее популярные связки Chai, should.js, expect.js).

About

practice

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages