Разделы портала

Онлайн-тренинги

.
Отличительные черты платформы автоматизации TestProject
03.09.2021 00:00

Автор: Сумон Дей (Sumon Dey)
Оригинал статьи
Перевод: Ольга Алифанова

Честно говоря, стоит мне столкнуться с новым инструментом тест-автоматизации – неважно, коммерческим или открытым – как я сразу отношусь к нему скептически. Не потому, что я сомневаюсь в функциональности, возможностях или (сверкающих) новых фичах, которые дает этот инструмент – я сомневаюсь, будет ли от него толк как для тестирования, так и для тест-инженеров. Выбор неверного инструмента может повлечь за собой нежелательную потерю денег, времени и сил. Нам это не нужно. Инструмент, как минимум, должен быть достаточно гибким для кастомизации под наши нужды, бесшовно масштабироваться для Web, мобильных устройств и API, генерировать хорошие информативные отчеты или поддерживать их генерацию, интегрироваться с CI-серверами или другими инструментами для запуска в CI/CD, предоставлять функции повторного использования, поддерживать кросс-браузерность, запускаться на любой ОС, и требовать минимальной поддержки.

Бесплатная, облачная, живущая силами сообщества платформа TestProject обладает всеми этими качествами, внедренными поверх Selenium WebDriver & Appium. В ней также есть хорошо распределенные и доступные для переиспользования функции тест-запуска и валидации, встроенная отчетность и система хранения отчетов, и масса других замечательных штук. Я писал множество статей на разные темы в блоге TestProject, а также посещал ряд вебинаров по инструментам и технологиям автоматизации, организованных командой TestProject – однако никогда не пробовал пользоваться этим инструментом. В прошлом месяце, узнав про релиз хороших новых функций, я решил исследовать эту платформу, и в этой статье я расскажу про самые, с моей точки зрения, замечательные ее функции. Прежде чем мы начнем, разберемся, как установить TestProject за два простых шага.

Шаг 1. Откройте любой браузер, перейдите по ссылке (https://app.testproject.io/signup/), и зарегистрируйтесь для создания бесплатной учетной записи TestProject.

 

Шаг 2. Скачайте, установите, запустите и зарегистрируйте TestProject Agent.

Мне было любопытно, что же такое TestProjectAgent. Попробую объяснить простыми словами. Это кросс-платформенный локально запускаемый компонент автоматизации, который будет общаться с облачным репозиторием TestProject и запускать ваши тесты локально или удаленно. Этот десктопный компонент нужно установить на вашу систему (Windows/macOS/Linux) и зарегистрировать его через вашу учетную запись TestProject. Выгода тут в том, что он возьмет на себя весь труд устранения сложностей установки и управления различными драйверами и зависимостями, необходимыми для запуска ваших Selenium/Appium-тестов.

 

Скачав его на жесткий диск, установите агент, следуя стандартному процессу установки, и запустите его. При запуске он попросит вас авторизоваться. Затем вам нужно зарегистрировать агент, перейдя на вкладку "Agents" портала TestProject и кликнув по кнопке "Register Agent".

Как только регистрация завершена, вы увидите экран, как на картинке ниже. Вот и все! Больше вам ничего не нужно – можно приступить к запуску ваших тестов при помощи TestProject.

 


Теперь, когда мы закончили с установкой, пройдемся по функциям, которые привлекли мое внимание.

1) OpenSDK (Software Development Kit) на Java, Python и C#

Экспериментируя с функциями, я обнаружил одну из лучших штук в TestProject – OpenSDK. Это единый интегрированный интерфейс для добавления кода автоматизации Selenium и Appium под Web, Android и iOS-приложения. Сейчас TestProject OpenSDK поддерживает три популярных языка – Java, Python и C#. Вот какие преимущества я в нем нашел:

  • Можно писать свой код автоматизации и кастомизировать его в соответствии с требованиям.
  • Можно интегрировать его с другими полезными библиотеками автоматизации.
  • Вся сложная установка, поддержка и конфигурация, необходимая для запуска автотестов, находится под капотом, и можно об этом не волноваться.
  • Детализированные HTML и PDF-отчеты о тест-прогонах (с прикрепленными скриншотами) генерируются автоматически. Для запуска можно получить как краткий, так и подробный отчет.
  • Создается совместная доска отчетности, содержащая историю запусков и поддерживающая RESTful API.
  • И локальный, и удаленный запуск можно проводить бесшовно откуда угодно, пользуясь возможностями TestRunner в OpenSDK.
  • Присутствует кросс-платформенная поддержка Mac, Windows, Linux, Docker.
  • Тесты можно запускать из любого инструмента управления исходным кодом (например, Git).
  • Тесты можно интегрировать в CI/CD-пайплайны.

Для начала использования OpenSDK нам надо всего лишь следовать шагам установки (о которых говорилось выше) и получить Development Token, который находится во вкладке Integrations нашей учетной записи TestProject. Для запуска автотеста на Java с использованием OpenSDK нужно добавить зависимость TestProject OpenSDK Maven (в файле maven.pom.xml), а не зависимость Selenium.

<dependency>
    <groupId>io.testproject</groupId>
    <artifactId>java-sdk</artifactId>
    <version>0.64.4-RELEASE</version>
</dependency>

При использовании Gradle нужно добавить эту зависимость в файл build.gradle:

compile group: 'io.testproject', name: 'java-sdk', version: '0.64.4-RELEASE'

Вот пример теста с использованием OpenSDK:

package com.seleniumCapabilities.demo;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.testproject.sdk.drivers.web.ChromeDriver;
public class SampleOpenSDKTest {
     public static void main(String[] args) throws Exception {
        String browserDriverPath = System.getProperty("user.dir") + File.separator + "drivers" + File.separator;
        System.setProperty("webdriver.chrome.driver", browserDriverPath + "chromedriver.exe");
       ChromeOptions chromeOptions = new ChromeOptions();
       chromeOptions.addArguments("—start-maximized");
       ChromeDriver driver = new ChromeDriver("<your TestProject SDK  Developer Token>", chromeOptions);
       driver.get("https://example.testproject.io/web/");
       driver.findElement(By.id("name")).sendKeys("Sam");
       driver.findElement(By.id("password")).sendKeys("12345");
       driver.findElement(By.id("login")).click();
       boolean passed = driver.findElement(By.cssSelector("#logout")).isDisplayed();
      passed?System.out.println("Test Passed"):System.out.println("Test Failed");
      driver.quit();
    }
}

По умолчанию локальный TestProject Agent будет общаться с локальным сервером Selenium или Appium, запускать тесты, генерировать и хранить отчеты в централизованном облачном репозитории. Для удаленного запуска нужно инициализировать удаленный драйвер для облачных провайдеров (вроде SauceLabs или BrowserStack). В этом случае нам также нужно установить и передать кастомную возможность (cloud:URL), как указано ниже:

import io.testproject.sdk.drivers.web.ChromeDriver;
import io.testproject.sdk.drivers.TestProjectCapabilityType;

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setCapability(TestProjectCapabilityType.CLOUD_URL, "https://{USERNAME}:{PASSWORD}@ondemand.us-west-1.saucelabs.com:443/wd/hub");
ChromeDriver driver = new ChromeDriver(chromeOptions);

2) Отчеты

Вторая фича, которая привлекла мое внимание – это функция отчетности TestProject. Генерация отчетов, которые могут предоставить ценную информацию о запуске автотестов – это важная, неотъемлемая часть любого фреймворка тест-автоматизации. Так как Selenium WebDriver и большинство других библиотек и инструментов автоматизации не имеют встроенных отчетов, нам нужно пользоваться внешними пакетами и библиотеками, и писать код, чтобы подогнать отчеты под нужды бизнеса. По умолчанию TestProject предоставляет несколько красивых детализированных отчетов – "Summary Report", с краткой информацией о запуске и упавших шагах, и "Full Report", содержащий всю информацию о запуске, в форматах HTML, PDF, link/URL. Отчеты также можно получить через RESTful API. Нам не нужно писать дополнительный код, чтобы к тестам прикреплялись скриншоты. Они будут прикреплены автоматически после завершения прогона. Ниже – дашборд отчетов (со сгенерированными отчетами) для теста, который я запустил через TestProject.


Summary Report:


Full Report:


3) Аддоны

Следующая, по-моему мнению, уникальная особенность – это аддоны, предоставляемые TestProject – они создаются при помощи глобального сообщества тестировщиков. Аддоны TestProject – это набор закодированных действий с возможностью повторного использования, которые можно интегрировать в наши тесты. Набор аддонов – это не просто коллекция бесплатных решений автоматизации, созданных блестящими умами сообщества автоматизаторов, но и отличный способ вдохновить множество людей на разработку новых функциональностей, которые можно подключить к бесплатной платформе TestProject для всеобщего использования. Вот список популярных аддонов:

  • Scroll to Element
  • PDF Actions
  • Image Comparison
  • Dropbox Actions
  • RESTful API Client
  • Screenshot Utils
  • Geolocation Utils
  • Random Values From CSV File
  • File Uploader
  • Reporting Utilities
  • Send Email

Возьмем, к примеру, аддон “PDF Actions”. При помощи этого аддона можно выполнять различные PDF-действия – например, поиск строки внутри PDF, валидация текста, или получение слов/символов из PDF. Кликнув по кнопке Install, мы получим всю широту возможностей этого аддона и сможем использовать их в тестах.


4) TestProject Share Center

Одна из последних фич TestProject – это “TestProject Share Center”. При помощи этой фичи мы одним кликом можем сотрудничать и делиться нашими Web, мобильными и API-тестами с кем угодно в мире за секунды – через почту или уникальную ссылку. Контрагентом может быть команда разработки, бизнес-аналитики, тест-команда или менеджеры, которые могут использовать тесты и управлять ими через свою учетку TestProject.

Чтобы поделиться тестом, нужно сделать следующее:

Шаг 1: Откройте контекстное меню теста и кликните на Share Test.


Шаг 2. Мы можем или добавить email человека, с которым хотим поделиться, или получить ссылку и отправить эту ссылку контрагенту.


5) Самоисцеляющаяся технология на основе ИИ

Я энтузиаст машинного обучения и ИИ, поэтому мое внимание привлекла еще одна фича TestProject – самоисцеляющаяся технология на основе ИИ, находящаяся внутри умного тест-рекордера на основе Selenium. Так как TestProject создан на основе Selenium, вы можете извлечь пользу из Selenium, используя дополнительные ИИ-функции, экономящие ваше время и справляющиеся с наиболее распространенной проблемой тестов – поиском элементов. Слово "самоисцеляющаяся" используется тут потому, что после записи теста и генерации скрипта автоматизации, в случае изменений интерфейса, напрямую влияющих на скрипт, эта технология позволит убедиться, что тест не упадет при следующем прогоне, несмотря на изменения интерфейса. Сейчас технология поддерживает динамические элементы, iFrames, поп-апы, кастомные атрибуты, несколько окон/вкладок, адаптивные ожидания, и меню по наведению курсора.

Записывая тест, тестировщик получит предупреждение, если для прогона существует способ получше, и сможет просмотреть и подтвердить предложенные изменения. Если инструмент самолечения использовался в ходе прогона для восстановления после падения, в отчетах появится особая иконка.

Используя этот механизм, TestProject может отслеживать и выбирать наиболее устойчивую стратегию локации элементов до старта теста, и при необходимости чинить тесты в ходе прогона. Это приводит к улучшенной производительности и сокращению времени на прогон, быстрому созданию тестов, быстрой идентификации веб-элементов, устойчивым тестам и простоте дебага.

6) Интеграция с Cucumber, JUnit/TestNG и ExtentReport

Еще в TestProject мне нравится, что мы можем писать код автотестов, интегрировать любую библиотеку на выбор, и позднее использовать встроенные возможности TestProject для большей кастомизации, что дает большую гибкость. Возьмем, к примеру, использование TestProject SDK с Cucumber, JUnit/TestNG, и ExtentReport – мы можем создавать тесты в Selenium и просматривать отчёты и результаты на платформе TestProject. Так как мы в этом случае используем OpenSDK, нам не нужно поддерживать браузерные драйверы (ChromeDriver, GeckoDriver).

Нам нужно лишь внести небольшое изменение – вместо зависимости Selenium нужно использовать зависимость TestProject SDK (совместно с зависимостями Cucumber, TestNG, и ExtentReport) в pom.xml или build.gradle файлах.

Я создал Java-проект (см. структуру проекта ниже) и добавил сценарий Cucumber в файл Feature. Сценарий был успешно выполнен, и детальный отчет появился в разделе TestProject "Trends and Reports".



Заключение

Вышеупомянутые функции – это те, что бросились мне в глаза. У платформы множество других возможностей – запись и проигрывание, создание тест-заданий и расписаний, параметризация тестов, валидация после нахождения элементов и выполнения действий, и т. д. Мне также понравилась официальная документация – она очень точная, ясная, и ее легко понять. Знакомясь с инструментом, я сначала исследую его и выявляю его лучшие стороны, и у TestProject таких сторон немало.

Обсудить в форуме