Разделы презентаций


UI тесты мобильных приложений: ожидание и реальность

Содержание

О чем Основные виды автотестов и принципы их применения.Наш опыт автоматизации:какие у нас АТ и почему;XamarinUI.Test;как АТ внедрены в процесс разработки.

Слайды и текст этой презентации

Слайд 1UI тесты мобильных приложений: ожидание и реальность
Устинова Анна, тимлид команды тестирования

мобильных решений DIRECTUM

UI тесты мобильных приложений: ожидание и реальностьУстинова Анна, тимлид команды тестирования мобильных решений DIRECTUM

Слайд 2О чем
Основные виды автотестов и принципы их применения.
Наш опыт

автоматизации:
какие у нас АТ и почему;
XamarinUI.Test;
как АТ внедрены в процесс

разработки.
О чем Основные виды автотестов и принципы их применения.Наш опыт автоматизации:какие у нас АТ и почему;XamarinUI.Test;как АТ

Слайд 3Продукты
DIRECTUM, DirectumRX;
веб-сервер NOMAD;
мобильные приложения DIRECTUM Solo, DIRECTUM Jazz.

ПродуктыDIRECTUM, DirectumRX;веб-сервер NOMAD;мобильные приложения DIRECTUM Solo, DIRECTUM Jazz.

Слайд 4Пирамида автоматизации тестирования

Пирамида автоматизации тестирования

Слайд 6Антипаттерн

Антипаттерн

Слайд 7Виды тестирования на примере наших продуктов

Виды тестирования на примере наших продуктов

Слайд 8Интеграционное
Проверяют взаимодействие веб-сервиса с СЭД через API.
Имитируется работа клиентского приложения.

ИнтеграционноеПроверяют взаимодействие веб-сервиса с СЭД через API.Имитируется работа клиентского приложения.

Слайд 9Сквозное тестирование
Через UI приложения обращаются к веб-сервису.
Веб-сервис взаимодействует с СЭД.
Имитируется

полноценная работа конечного пользователя.

Сквозное тестированиеЧерез UI приложения обращаются к веб-сервису.Веб-сервис взаимодействует с СЭД.Имитируется полноценная работа конечного пользователя.

Слайд 10Зачем нам АТ мобильных приложений

Зачем нам АТ мобильных приложений

Слайд 11Зачем нам АТ мобильных приложений
Покрыть АТ основные кейсы приложения
Уменьшить количество

багов на регрессии

Зачем нам АТ мобильных приложенийПокрыть АТ основные кейсы приложенияУменьшить количество багов на регрессии

Слайд 12Текущие цели
Уменьшение количества ручных регрессионных тестов
Раннее нахождение багов в стабильной

функциональности
Проверка UI

Текущие целиУменьшение количества ручных регрессионных тестовРаннее нахождение багов в стабильной функциональностиПроверка UI

Слайд 13Когда пора внедрять АТ
Есть стабильная функциональность
Есть понимание, что приложение будет

развиваться дальше
Есть ресурсы (на поддержку и развитие)

Когда пора внедрять АТЕсть стабильная функциональностьЕсть понимание, что приложение будет развиваться дальшеЕсть ресурсы (на поддержку и развитие)

Слайд 14Автотесты мобильных приложений. Ожидания
Тестируют UI

Большое покрытие конфигураций

Массмаркет, частые релизы


Автотесты мобильных приложений. ОжиданияТестируют UIБольшое покрытие конфигурацийМассмаркет, частые релизы

Слайд 15Наши автотесты. Реальность
Прогоняются раз в день
Локально
На двух девайсах (iOS, Android)
Минимально

проверяют UI, упор на функциональность
Android ~ 40 тестов, ~ 50

минут
iOS ~ 30 тестов, ~ 20 минут
Написаны с использованием Xamarin.UITest



Наши автотесты. РеальностьПрогоняются раз в деньЛокальноНа двух девайсах (iOS, Android)Минимально проверяют UI, упор на функциональностьAndroid ~ 40

Слайд 16Xamarin.UITest
фреймворк для автоматического тестирования UI;
C#, NUnit;
Xamarin.iOS, Xamarin.Android проекты (но поддерживает

и проекты на Objective-C / Swift и Java).






Xamarin.UITestфреймворк для автоматического тестирования UI;C#, NUnit;Xamarin.iOS, Xamarin.Android проекты (но поддерживает и проекты на Objective-C / Swift и

Слайд 17Встраивание в проект
iOS:
NuGet пакет Xamarin Test Cloud Agent

в метод

AppDelegate.FinishedLaunching:
#if ENABLE_TEST_CLOUD
Xamarin.Calabash.Start();
#endif

Android не требует дополнительной настройки в проекте.

Встраивание в проектiOS: NuGet пакет Xamarin Test Cloud Agentв метод AppDelegate.FinishedLaunching:#if ENABLE_TEST_CLOUDXamarin.Calabash.Start();#endifAndroid не требует дополнительной настройки в

Слайд 18Принцип работы
Поиск элемента (Queries)
Взаимодействие с ним (Actions):
Tap;
Swipe;
EnterText;
..

Принцип работыПоиск элемента (Queries)Взаимодействие с ним (Actions):Tap;Swipe;EnterText;..

Слайд 19Пример теста
public void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong()
{
var

wrongLogin = TestsSettings.UserLogin + "1";
app.EnterLoginAndPassword(wrongLogin, TestsSettings.UserPassword);

app.WaitForElement(Resources.Identifiers.ErrorMessage, "Login is incorrect, alert message wasn't shown.", TestsSettings.Delay);
Assert.AreEqual(CoreResources.ErrIncorrectLoginOrPassword, ErrorMessage);
}
Пример теста public void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong()  {   var wrongLogin = TestsSettings.UserLogin +

Слайд 20Пример теста
public void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong()
{
var

wrongLogin = TestsSettings.UserLogin + "1";
app.EnterLoginAndPassword(wrongLogin, TestsSettings.UserPassword);

app.WaitForElement(Resources.Identifiers.ErrorMessage, "Login is incorrect, alert message wasn't shown.", TestsSettings.Delay);
Assert.AreEqual(CoreResources.ErrIncorrectLoginOrPassword, ErrorMessage);
}
Пример теста public void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong()  {   var wrongLogin = TestsSettings.UserLogin +

Слайд 21Пример теста
public void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong()
{
var

wrongLogin = TestsSettings.UserLogin + "1";
app.EnterLoginAndPassword(wrongLogin, TestsSettings.UserPassword);

app.WaitForElement(Resources.Identifiers.ErrorMessage, "Login is incorrect, alert message wasn't shown.", TestsSettings.Delay);
Assert.AreEqual(CoreResources.ErrIncorrectLoginOrPassword, ErrorMessage);
}


Пример теста public void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong()  {   var wrongLogin = TestsSettings.UserLogin +

Слайд 22Пример теста
public void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong()
{
var wrongLogin = TestsSettings.UserLogin

+ "1";
app.EnterLoginAndPassword(wrongLogin,

TestsSettings.UserPassword);
app.WaitForElement(Resources.Identifiers.ErrorMessage, "Login is incorrect, alert message wasn't shown.", TestsSettings.Delay);
Assert.AreEqual(CoreResources.ErrIncorrectLoginOrPassword, ErrorMessage);
}

Пример тестаpublic void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong() {  var wrongLogin = TestsSettings.UserLogin +

Слайд 23Пример теста
public void ShowErrIncorrectLoginOrPassword_IfLoginIsWrong()
{
var wrongLogin = TestsSettings.UserLogin

+ "1";
app.EnterLoginAndPassword(wrongLogin, TestsSettings.UserPassword);
app.WaitForElement(Resources.Identifiers.ErrorMessage, "Login is incorrect,

alert message wasn't shown.", TestsSettings.Delay);
Assert.AreEqual(CoreResources.ErrIncorrectLoginOrPassword, ErrorMessage);
}

private string ErrorMessage =>
app.Query(x => x.Marked(Resources.Identifiers.ErrorMessage)).First().Text;

Слайд 24Пример теста
public static void EnterLoginAndPassword(this AndroidApp app, string login, string

password)
{
app.WaitForElement(Resources.Identifiers.LoginEdit, TestsSettings.Delay);
app.EnterText(Resources.Identifiers.LoginEdit,

login);
app.EnterText(Resources.Identifiers.PasswordEdit, password);
app.Tap(Resources.Identifiers.LoginButton);
}
Пример тестаpublic static void EnterLoginAndPassword(this AndroidApp app, string login, string password)  {   app.WaitForElement(Resources.Identifiers.LoginEdit, TestsSettings.Delay);

Слайд 26REPL (read-eval-print-loop)

REPL (read-eval-print-loop)

Слайд 27Немного боли

Немного боли

Слайд 28Цель – перейти в папку Outbox и выполнить в ней

определенные действия

Цель – перейти в папку Outbox и выполнить в ней определенные действия

Слайд 29Цель – перейти в папку Outbox и выполнить в ней

определенные действия
Пишем тест.

app.OpenFolder(Strings.ExplorerFoldersOutbox);
app.Tap(Resources.Identifiers.HeaderTaskJob);

Цель – перейти в папку Outbox и выполнить в ней определенные действияПишем тест.…app.OpenFolder(Strings.ExplorerFoldersOutbox);app.Tap(Resources.Identifiers.HeaderTaskJob);…

Слайд 30Цель – перейти в папку Outbox и выполнить в ней

определенные действия
Пишем тест.
Нужные нам шаги:
app.OpenFolder(Strings.ExplorerFoldersOutbox);
app.Tap(Resources.Identifiers.HeaderTaskJob);




Запускаем локально – всё ок.
Запускаем на

стенде АТ – падает при открытии папки

Цель – перейти в папку Outbox и выполнить в ней определенные действияПишем тест.Нужные нам шаги:app.OpenFolder(Strings.ExplorerFoldersOutbox);app.Tap(Resources.Identifiers.HeaderTaskJob);Запускаем локально –

Слайд 32Ограничения Xamarin.UITest
нет возможности запускать iOS тесты из Visual Studio for

Windows;
нет возможности работать с системными уведомлениями и диалогами;
нет возможности управлять

системными параметрами (сеть, интернет подключение и т.п);
нет интеграции с другими приложениями на устройстве.

Ограничения Xamarin.UITestнет возможности запускать iOS тесты из Visual Studio for Windows;нет возможности работать с системными уведомлениями и

Слайд 33Автотесты в CI
Unit тесты запускаются на PR;
Integration тесты на ночных

сборках сервиса;
E2E тесты ежедневно по расписанию на dev-ветке.

Автотесты в CIUnit тесты запускаются на PR;Integration тесты на ночных сборках сервиса;E2E тесты ежедневно по расписанию на

Слайд 34Автотесты в CI
Билд в TFS

Автотесты в CIБилд в TFS

Слайд 35Автотесты в CI
Анализ
результатов
в TFS

Автотесты в CIАнализ результатов в TFS

Слайд 36Итог
писать автотесты, когда в этом есть смысл:
стабильная функциональность;
планы развития приложения.

Итогписать автотесты, когда в этом есть смысл:стабильная функциональность;планы развития приложения.

Слайд 37Итог
писать автотесты, когда в этом есть смысл;
решать применением автотестов ваши

проблемы;

Итогписать автотесты, когда в этом есть смысл;решать применением автотестов ваши проблемы;

Слайд 38Итог
писать автотесты, когда в этом есть смысл;
решать применением автотестов ваши

проблемы, например:
уменьшить количество багов на регрессии;
снизить количество ручного тестирования;
ускорить релизы;


Итогписать автотесты, когда в этом есть смысл;решать применением автотестов ваши проблемы, например:уменьшить количество багов на регрессии;снизить количество

Слайд 39Итог
писать автотесты, когда в этом есть смысл;
решать применением автотестов ваши

проблемы;
количество тестов, конфигураций, подход к написанию и прогону тестов зависят

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

Слайд 40Спасибо за внимание











Спасибо за внимание

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика