Разберемся с основными видами тестирования в IT сфере. Если ты еще не читал статью, что нужно чтобы стать тестировщиком, то прочти.
По запуску кода на исполнение
- Статическое тестирование — одно тестирование применяется без запуска программы (тестирование требований и документации)
- Динамическое тестирование — тестирование, которое требует от нас запуск программы, запуск кода на исполнение.
По знанию внутренностей системы
Знает ли у нас тестировщик, что-либо про систему, которую тестирует.
- Тестирование методом чёрного ящика — пользовательское тестирование, когда тестировщик не знает, как программа под капотом работает, это максимально приближенное к пользователю тестирование
- Тестирование белого ящика — применяется, когда тестировщик все знает о внутренности системы. Белый ящик применяется для тестирования Back end, то что под капотом программы, его серверной части. Также применятся для юнит тестов.
- Серый ящик — симбиоз белого и черного ящика. Например, когда тестировщик тестирует что-либо, например регистрацию и оплату на сайте, делает тестовую оплату и тут же заходит в базу данных SQL и проверяет с помощью SQL запросов, что действительно тестовый пользователь появился и то, что оплата прошла, он может это проверить заглянув под капот нашей программы в его серверную часть.
Функциональное тестирование
Проверяет правильно ли выполняет наше ПО функции, которые заявлены в требованиях. Также проверяет, как выполняется взаимодействие нашей программы с другими системами.
- Тестирование безопасности — тестирование нашей программы, системы или приложения на то, как она устойчива к действиям мошенников. (отдел кибербезопасности)
- Тестирование взаимодействия — тестируется взаимодействие с различными внешними компонентами, например, проверяем как на сайте происходит регистрация с помощью сервиса авторизации через ВКонтакте.
- По степени изолированности тестируемых компонентов:
- Компонентное тестирование — это тестирование на уровне логического модуля. Обычно это тестирование проводят разработчики, когда пишут сам код и покрывают юнит тестами.
- Интеграционное тестирование — это тестирование взаимодействия двух и более каких-либо компонентов. Тестировщики как раз чаще всего занимаются интеграционным и системным тестированием.
- Системное тестирование — это тестирование когда у нас проверяется работа всей системы, программы, приложения от начала и до конца.
Нефункциональное тестирование
Если функционально тестирование отвечает на вопрос: соответствует ли наша программа заявленным требованиям? То нефункциональное тестирование отвечает на вопрос, как это все работает при этом.
- Нагрузочное тестирование. Например, у нас есть сайт и мы хотим проверить, как он будет работать под определенной нагрузкой, под постоянной в течение какого-либо времени. Мы создаем 100 тестовых пользователей и имитируем заход на сайт и проверяем, как под этой нагрузкой у нас будет работать сайт, как справится сервер с заданной нагрузкой.
- Стресс тестирование это максимально жесткое тестирование. Например, у нас есть приложение, сайт и мы имитируем одномоментно туда нагрузку выше, чем у нас в требованиях. Что случится, если на маленький сайт задет 10 000 пользователей? И видим как система восстанавливается после стресс тестирования. Например, упал сервер и проверяем, как он восстановится, после того, как нагрузка уйдет.
- Тестирование стабильности и надежности. Например, под нагрузкой в пределах документации мы проверяем как под заданной нагрузкой ведет себя система, нет ли каких-либо утечек памяти.
- Юзабилити тестирование. Оценка, удобство пользования нашим сайтом. Например, пользователь хочет оплатить товар, но не может найти кнопку ОПЛАТИТЬ, так не пойдет.
Связанное с изменениями в коде
- Smoke тестирование. Или дымовое тестирование — проверка, что наше приложение или программа работает. Например, если у нас есть сайт, то smoke тестирование включает в себя то, что ты заходишь на сайт, регистрируешься и сайт работает, это и есть smoke тестирование.
- Регрессионное тестирование. После того, как мы прошли smoke тестирование у нас появились изменения в коде, мы проверяем, что у нас все те функции, которые раньше работали, работают и все те тесты, которые были написаны нами ранее на заданный функционал, они проходятся. Нужно заново пройти все старые тесты и убедится, что наш новый участок кода, новых фикс бага не испортил какой-либо другой участок кода.
По степени автоматизации
- Ручное тестирование. Это прохождение тест-кейсов в ручную, без применения каких-либо программ, позволяющих тебе автоматизировать прохождение тест кейсов.
- Автоматизированное. Тестирование с помощью каких-либо программ, которые позволяют нам автоматизировать наши тест кейсы, например написание автотестов с помощью программного кода + какой-либо фреймворк* упрощающий написание автотестов. Например, язык программирования Java + фреймворк или язык программирования Python с помощью которого мы автоматизируем наши тест кейсы. Наиболее применимые в автотестах языки программирования это или Java или Python.
*Фреймворк — программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов.
По критерию позитивности сценариев
- Позитивное тестирование — это тестирование в рамках заявленных требований. Например, мы заходим на сайт и регистрируемся под именем пользователя, которое допустимо и под длиной пароля, который тоже допустим, проверяем что у нас работает программа с заявленными требованиями. Его мы делаем в первую очередь, а только потом негативное.
- Негативное тестирование — например вместо пароля вставляем непонятные символы или огромное количество символов, из произведения Л. Толстого “Война и Мир”.
По времени проведения
- Альфа тестирование — проводится самими сотрудниками компании.
- Бета тестирование — уже на более поздних сроках, на ограниченном круге лице, внешние пользователи, заранее отобранные для этого.