В эпоху технологий и Интернета заказчики хотят, чтобы их продукт доставлялся быстрее, чем у конкурентов. Но никто не хочет получить программное обеспечение с дефектами. Тестирование играет важную роль в повышении качества, надежности и производительности системы. В этой статье мы поможем вам узнать больше о функциональном тестировании и применении к нему средств автоматизации.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
- Что такое тестирование программного обеспечения?
- Виды тестирования программного обеспечения
- Что такое функциональное тестирование?
- Функциональное и нефункциональное тестирование
- Преимущества функционального тестирования
- Этапы функционального тестирования
- Виды функционального тестирования
- Методы функционального тестирования
- Инструменты для функционального тестирования
- Автоматизированное тестирование с использованием Selenium
Что такое тестирование программного обеспечения?
Тестирование программного обеспечения – это процесс оценки функциональности программного приложения с целью выявления в нем ошибок. Оно проверяет, соответствует ли разработанное ПО заданным требованиям, и выявляет в нем любые дефекты с целью создания качественного продукта. По сути, это запуск системы с целью выявления любых пробелов, ошибок или отсутствующих требований, противоречащих фактическим требованиям.
Виды тестирования программного обеспечения
Тестирование является неотъемлемой частью любого успешного программного проекта. Виды проверки программного обеспечения зависят от различных факторов, включая требования проекта, бюджет, сроки и т.д. Они играют ключевую роль, когда тестировщик определяет правильный подход к тестированию для соответствующих приложений.
QA инженер или тестировщик программного обеспечения выполняет два основных вида тестирования:
Что такое функциональное тестирование?
Функциональное тестирование определяется как тип тестирования, который проверяет, что каждая функция программного приложения работает в соответствии со спецификацией требований. Этот вид в основном включает в себя тестирование методом “черного ящика” и не затрагивает исходный код приложения. Оно ориентировано как на ручное тестирование, так и на автоматизацию.
Функциональное тестирование включает в себя проверку следующих параметров:
- Пользовательский интерфейс.
- API.
- База данных.
- Безопасность.
- Клиентские/серверные приложения.
- Функциональность тестируемого приложения.
Функциональное тестирование и нефункциональное тестирование
Функциональное тестирование определяет процесс тестирования, а нефункциональное тестирование используется для проверки производительности, надежности, удобства использования и т.д. Рассмотрим различные параметры, на основании которых можно сравнить эти два вида тестирования:
Преимущества функционального тестирования
Функциональное тестирование очень важно, поскольку оно позволяет убедиться в том, что система готова к выпуску и в ней отсутствуют ошибки. Далее мы рассмотрим некоторые преимущества функционального тестирования:
- Такое тестирование позволяет воспроизвести реальное состояние системы, т.е. повторить работу продукта в реальной среде.
- Сосредоточено на спецификациях в соответствии с требованиями заказчика.
- Не работает на основе каких-либо предположений о структуре системы.
- Такое тестирование обеспечивает поставку высококачественного продукта, отвечающего требованиям заказчика, и гарантирует, что он будет удовлетворен конечным результатом.
- Позволяет получить продукт без ошибок, в котором все функциональные возможности работают в соответствии с установленными требованиями.
- Тестирование, основанное на оценке рисков, проводится для снижения вероятности возникновения любых видов рисков в продукте.
Этапы функционального тестирования
При проведении функционального тестирования необходимо выполнить перечень определенных шагов:
- Первый шаг – определение функциональности продукта, который необходимо протестировать. Он включает в себя тестирование основных функций, состояний ошибок и сообщений, а также тестирование удобства использования.
- Следующим шагом является создание входных данных для тестируемой функциональности в соответствии со спецификацией требований.
- На третьем этапе определяются выходные данные для тестируемой функциональности на основе спецификации требований.
- Четвертый шаг – выполнение тестовых примеров.
- Заключительный этап – сравнить фактические и ожидаемые выходные данные после выполнения тестового примера, чтобы определить, работает ли функциональность должным образом или нет.
Виды функционального тестирования
Функциональное тестирование имеет множество категорий, которые могут быть использованы в зависимости от сценария. Рассмотрим наиболее распространенные из них:
Юнит-тестирование(модульное) – обычно выполняется разработчиком, который пишет различные блоки кода. Они могут быть связаны или не связаны между собой для достижения определенной функциональности. Покрытие кода — важная часть модульного тестирования. В нем должны присутствовать тестовые примеры, охватывающие покрытие строк, путей кода и методов.
Тестирование работоспособности – проводится для того, чтобы убедиться, что все основные и жизненно важные функциональные возможности приложения/системы работают правильно. Обычно его проводят после Smoke тестирования.
Smoke тестирование – проводится после выпуска каждой сборки с целью обеспечения ее стабильности. Его также называют тестированием верификации сборки.
Регрессионное тестирование – выполняется, чтобы убедиться, что добавление нового кода, усовершенствований и исправление ошибок не нарушает существующую функциональность, не вызывает нестабильности и по-прежнему работает в соответствии со спецификацией.
Интеграционные тесты – проверка слаженной совместной работоспособности нескольких функциональных модулей.
Тестирование удобства использования – проверка, при которой продукт подвергается воздействию реального потребителя в условиях производственной среды. На основании этого определяется удобство для пользователя и принимается обратная связь. Оно аналогично приемочному тестированию.
Методы функционального тестирования
Основной подход к тестированию можно разделить на две ключевые категории :
- Позитивное тестирование – это тесты счастливого пути, которые проводятся для того, чтобы убедиться, что продукт соответствует основным требованиям, которые жизненно важны для использования заказчиком.
- Негативное тестирование – такие тесты гарантируют, что продукт будет вести себя правильно даже при воздействии на него неожиданных данных.
Теперь давайте рассмотрим подкатегории этих двух различных техник в функциональном тестировании:
- Тесты для конечного пользователя – проверяемая система состоит из множества компонентов, которые, будучи соединенными вместе, позволяют реализовать пользовательский сценарий.
- Эквивалентное разбиение – в этом случае тестовые данные разбиваются на различные разделы, называемые классами эквивалентных данных. Данные в каждом разделе должны вести себя одинаково, поэтому тестировать нужно только одно условие. Аналогично, если одно условие в разделе перестанет работать, то не будет работать ни одно из остальных.
- Тестирование граничных значений – при таких тестах приложению задают границы данных и проверяют, как оно себя ведет. Если на вход подаются данные, выходящие за пределы граничных значений, то это считается отрицательным тестированием.
- Тесты, основанные на принятии решений – эти тесты концентрируются на идеологии возможных исходов работы системы при выполнении определенного условия.
- Тесты альтернативных путей – тесты альтернативных путей в основном запускаются для проверки всех возможных способов выполнения функции, кроме основного потока.
- Ad-hoc тесты -когда большинство ошибок выявлено с помощью описанных выше методик, такие интуитивные тесты являются отличным способом выявить любые несоответствия, не замеченные ранее.
Инструменты для функционального тестирования
На рынке представлено множество средств автоматизации для упрощения различных видов тестирования – нагрузочного, функционального, графического интерфейса и т.д. Самый удобный вариант – выбрать инструмент, который можно использовать по требованию, который легко изучить в соответствии с вашими навыками, который является универсальным и эффективным для требуемого типа тестирования.
К числу наиболее предпочтительных инструментов для функционального тестирования относятся:
Одним из наиболее предпочтительных инструментов для тестирования является Selenium. Давайте рассмотрим, как его используют для автоматизации тестирования.
Автоматическое тестирование с использованием Selenium
Чтобы точно и точно идентифицировать веб-элементы, Selenium использует различные типы локаторов. Они бывают следующие:
- Id locator.
- Name locator.
- linkText & Partial linkText.
- CSS Selector.
- XPath.
Теперь рассмотрим пример, в котором с помощью средств автоматизации будет осуществляться навигация по определенной веб-странице.
В качестве примера возьмем страницу блога edureka. Сначала нужно запустить Google Chrome и перейти на сайт edureka.co. Затем открываем вопросы интервью на веб-странице блога.
Теперь, чтобы найти определенную ссылку на веб-странице, необходимо использовать локатор LinkText. Предположим, вы хотите найти ссылку ‘Interview Questions’, как показано на рисунке выше. Как это сделать?
Давайте узнаем.
При рассмотрении раздела “Вопросы для собеседования” можно заметить, что он начинается с тега якоря. Но этот тег не имеет атрибутов name и Id. В таких случаях можно использовать локатор linkText.
Как видно из приведенного выше фрагмента, в нем есть текст под названием “Вопросы на собеседовании”. Воспользуемся этим текстом и с помощью локатора linkText напишем код, как показано ниже:
package Edureka;
import java.util.concurrent.TimeUnit;
public class Example {
public static void main(String[] args) {
System.setProperty('webdriver.chrome.driver','C:\\Selenium-java-edureka\\chromedriver_win32\\chromedriver.exe');
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get('https://edureka.co/blog');
driver.findElement(By.linkText('Interview Questions')).click();//linkText locator for links
При запуске указанной Java-программы драйвер chrome запустит Google Chrome, перенаправит на страницу блога edureka и осуществит переход на страницу с вопросами для интервью.
Таким образом, все, что вы делали вручную для перехода по различным страницам и ссылкам, делается автоматически с помощью средств автоматизации, таких как Selenium.
На этом мы завершаем статью о функциональном тестировании. Надеемся, вам она понравилась.
Перевод статьи «What is Functional Testing? – A Complete Guide To Automation Tools».
Пингбэк: Чек-лист для тестирования мобильных приложений на Android
Пингбэк: Сквозное тестирование для лучшего пользовательского опыта