0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Определение</a></li>
1
<ul><li><a>Определение</a></li>
2
<li><a>Классификация</a></li>
2
<li><a>Классификация</a></li>
3
<li><a>Преимущества</a></li>
3
<li><a>Преимущества</a></li>
4
<li><a>Недостатки</a></li>
4
<li><a>Недостатки</a></li>
5
<li><a>Подходы</a><ul><li><a>Record and Play</a></li>
5
<li><a>Подходы</a><ul><li><a>Record and Play</a></li>
6
<li><a>Screen Object</a></li>
6
<li><a>Screen Object</a></li>
7
</ul></li>
7
</ul></li>
8
<li><a>Выбор инструментария</a><ul><li><a>Espresso</a></li>
8
<li><a>Выбор инструментария</a><ul><li><a>Espresso</a></li>
9
<li><a>UI Automator</a></li>
9
<li><a>UI Automator</a></li>
10
<li><a>Detox</a></li>
10
<li><a>Detox</a></li>
11
<li><a>Appium</a></li>
11
<li><a>Appium</a></li>
12
<li><a>Ranorex</a></li>
12
<li><a>Ranorex</a></li>
13
<li><a>TestComplete</a></li>
13
<li><a>TestComplete</a></li>
14
</ul></li>
14
</ul></li>
15
<li><a>Unit-тестинг</a><ul><li><a>Настройки</a></li>
15
<li><a>Unit-тестинг</a><ul><li><a>Настройки</a></li>
16
<li><a>Локальный тестинг</a></li>
16
<li><a>Локальный тестинг</a></li>
17
<li><a>Instrumented-тесты</a></li>
17
<li><a>Instrumented-тесты</a></li>
18
</ul></li>
18
</ul></li>
19
<li><a>Как стать тестировщиком</a></li>
19
<li><a>Как стать тестировщиком</a></li>
20
</ul><p>Тестирование - важный момент перед выпуском в свет той или иной утилиты. Если же мы говорим о<a>тестировании</a>мобильных платформ (Android, iOS), то оно имеет свою специфику.</p>
20
</ul><p>Тестирование - важный момент перед выпуском в свет той или иной утилиты. Если же мы говорим о<a>тестировании</a>мобильных платформ (Android, iOS), то оно имеет свою специфику.</p>
21
<p>Огромную роль здесь играет так называемая автоматизация. В статье пойдет речь о том, что собой представляют автотесты, каким образом они запускаются, чем помогают программерам и разработчикам. Информация будет полезна как начинающим, так и тем, кто уже знаком с основами создания софта на Андроиде.</p>
21
<p>Огромную роль здесь играет так называемая автоматизация. В статье пойдет речь о том, что собой представляют автотесты, каким образом они запускаются, чем помогают программерам и разработчикам. Информация будет полезна как начинающим, так и тем, кто уже знаком с основами создания софта на Андроиде.</p>
22
<h2>Определение</h2>
22
<h2>Определение</h2>
23
<p>Тестирование автоматического характера на Android называется автоматизацией тестов. Это - метод проверки ПО, выполняемый через специальные программные средства. Они необходимы для обработки и проверки набора тестовых примеров. Каждый шаг проделывается без "рук" юзера.</p>
23
<p>Тестирование автоматического характера на Android называется автоматизацией тестов. Это - метод проверки ПО, выполняемый через специальные программные средства. Они необходимы для обработки и проверки набора тестовых примеров. Каждый шаг проделывается без "рук" юзера.</p>
24
<p>ПО автоматизационного характера способно:</p>
24
<p>ПО автоматизационного характера способно:</p>
25
<ul><li>самостоятельно проходить каждый этап приложения;</li>
25
<ul><li>самостоятельно проходить каждый этап приложения;</li>
26
<li>вводить тестовые данные в используемую среду;</li>
26
<li>вводить тестовые данные в используемую среду;</li>
27
<li>проводить сравнение ожиданий от теста и фактически полученные данные;</li>
27
<li>проводить сравнение ожиданий от теста и фактически полученные данные;</li>
28
<li>формировать отчеты.</li>
28
<li>формировать отчеты.</li>
29
</ul><p>Соответствующие тесты приложений обычно требуют немало финансов и задействованных иных ресурсов. Некоторые крупные организации проводят "проверки" многократно. Для реализации поставленной задачи задействуют спецконтент. Он без посторонней помощи справляется с упомянутыми целями. За счет автоматизации удается уменьшить количество тестов, необходимых для ручного запуска.</p>
29
</ul><p>Соответствующие тесты приложений обычно требуют немало финансов и задействованных иных ресурсов. Некоторые крупные организации проводят "проверки" многократно. Для реализации поставленной задачи задействуют спецконтент. Он без посторонней помощи справляется с упомянутыми целями. За счет автоматизации удается уменьшить количество тестов, необходимых для ручного запуска.</p>
30
<h2>Классификация</h2>
30
<h2>Классификация</h2>
31
<p>Для написания тестов задействованы специальные приложения. Но разработчики, программеры и тестировщики могут запутаться в предлагаемом контенте. С развитием IT утилит для автоматизации становится все больше. Из-за этого все соответствующие приложения решили условно классифицировать.</p>
31
<p>Для написания тестов задействованы специальные приложения. Но разработчики, программеры и тестировщики могут запутаться в предлагаемом контенте. С развитием IT утилит для автоматизации становится все больше. Из-за этого все соответствующие приложения решили условно классифицировать.</p>
32
<p>Существуют самые разные инструменты для реализации поставленной задачи. Классическое разделение тестов проводится по степени их модульности. Различают три категории:</p>
32
<p>Существуют самые разные инструменты для реализации поставленной задачи. Классическое разделение тестов проводится по степени их модульности. Различают три категории:</p>
33
<ol><li>Модульное. Предусматривает testing конкретных модулей системы в независимом пространстве. Самый распространенный и известный вариант. Позволяет проводить тесты приложений более детально, а также при необходимости быстро исправлять ошибки и вносить коррективы в конкретные "блоки" системы.</li>
33
<ol><li>Модульное. Предусматривает testing конкретных модулей системы в независимом пространстве. Самый распространенный и известный вариант. Позволяет проводить тесты приложений более детально, а также при необходимости быстро исправлять ошибки и вносить коррективы в конкретные "блоки" системы.</li>
34
<li>Интеграционное. Тесты, относящиеся к взаимодействию модулей между собой. Бывает, что конкретный блок хорошо работает обособлено, но в сочетании с остальными компонентами выдает ошибки. Это - более высокий уровень теста.</li>
34
<li>Интеграционное. Тесты, относящиеся к взаимодействию модулей между собой. Бывает, что конкретный блок хорошо работает обособлено, но в сочетании с остальными компонентами выдает ошибки. Это - более высокий уровень теста.</li>
35
<li>Системное. Проводится проверка всей системы приложения. На данном этапе проверяют, насколько получаемые результаты соответствуют первоначальным критериям. Это - глобальный<a>тестинг</a>, нюансы каждого "блока" софта не столь важны. Осуществляется операция по принципам "черного ящика".</li>
35
<li>Системное. Проводится проверка всей системы приложения. На данном этапе проверяют, насколько получаемые результаты соответствуют первоначальным критериям. Это - глобальный<a>тестинг</a>, нюансы каждого "блока" софта не столь важны. Осуществляется операция по принципам "черного ящика".</li>
36
</ol><p>В случае с Android можно реализовать все перечисленные методы в автоматическом режиме. Главное подобрать хорошее программное обеспечение для этого.</p>
36
</ol><p>В случае с Android можно реализовать все перечисленные методы в автоматическом режиме. Главное подобрать хорошее программное обеспечение для этого.</p>
37
<h2>Преимущества</h2>
37
<h2>Преимущества</h2>
38
<p>При использовании автоматизирующих "проверку" программ юзеры и тестировщики сталкиваются с различными нюансами процесса. Они все равно необходимы, так как рассмотренный далее софт просто делает работу по тестингу удобнее в несколько раз.</p>
38
<p>При использовании автоматизирующих "проверку" программ юзеры и тестировщики сталкиваются с различными нюансами процесса. Они все равно необходимы, так как рассмотренный далее софт просто делает работу по тестингу удобнее в несколько раз.</p>
39
<p>Автоматизация предусматривает огромное множество преимуществ. Среди них выделяют:</p>
39
<p>Автоматизация предусматривает огромное множество преимуществ. Среди них выделяют:</p>
40
<ul><li>практически моментальное получение результатов;</li>
40
<ul><li>практически моментальное получение результатов;</li>
41
<li>исключение из процесса тестинга человеческих факторов;</li>
41
<li>исключение из процесса тестинга человеческих факторов;</li>
42
<li>разбор утилит сразу на нескольких платформах;</li>
42
<li>разбор утилит сразу на нескольких платформах;</li>
43
<li>наличие возможности покрытия множества локалей.</li>
43
<li>наличие возможности покрытия множества локалей.</li>
44
</ul><p>Это - отличный выход из ситуации, когда нет достаточного количества времени и иных ресурсов на "ручную" проверку. Современный подход к решению поставленной задачи.</p>
44
</ul><p>Это - отличный выход из ситуации, когда нет достаточного количества времени и иных ресурсов на "ручную" проверку. Современный подход к решению поставленной задачи.</p>
45
<h2>Недостатки</h2>
45
<h2>Недостатки</h2>
46
<p>Но и минусы при работе с автоматизированными системами для Android/iOS testing тоже встречаются. Некоторые из них для пользователей и разработчиков становятся весьма значимыми.</p>
46
<p>Но и минусы при работе с автоматизированными системами для Android/iOS testing тоже встречаются. Некоторые из них для пользователей и разработчиков становятся весьма значимыми.</p>
47
<p>К недостаткам автоматизации рассматриваемого процесса относят следующие моменты:</p>
47
<p>К недостаткам автоматизации рассматриваемого процесса относят следующие моменты:</p>
48
<ul><li>прекращение деятельности с обновлением операционной системы - каждый раз настройку приходится осуществлять "с нуля";</li>
48
<ul><li>прекращение деятельности с обновлением операционной системы - каждый раз настройку приходится осуществлять "с нуля";</li>
49
<li>сложности при создании тестов для приложений;</li>
49
<li>сложности при создании тестов для приложений;</li>
50
<li>отсутствие стабильной работы для некоторых инструментов;</li>
50
<li>отсутствие стабильной работы для некоторых инструментов;</li>
51
<li>разнообразие UI-компонентов, что приводит к трудоемкости и иногда экономической невыгодности проведения операции;</li>
51
<li>разнообразие UI-компонентов, что приводит к трудоемкости и иногда экономической невыгодности проведения операции;</li>
52
<li>определенные требования для iOS - IPA-документация должна быть подписана разработчиками.</li>
52
<li>определенные требования для iOS - IPA-документация должна быть подписана разработчиками.</li>
53
</ul><p>Автоматизация проверки приложений Андроида и iOS - это весьма распространенный вариант развития событий. Главное определиться с инструментарием, который поможет разрешить возникающие проблемы, а также придерживаться определенного алгоритма действий.</p>
53
</ul><p>Автоматизация проверки приложений Андроида и iOS - это весьма распространенный вариант развития событий. Главное определиться с инструментарием, который поможет разрешить возникающие проблемы, а также придерживаться определенного алгоритма действий.</p>
54
<h2>Подходы</h2>
54
<h2>Подходы</h2>
55
<p>В случае с приложениями для автоматизации тестинга найти "что-то свое" не так уж трудно. Позже в статье будут приведены примеры софта, который поможет довольно быстро избавиться от "ручной проверки" утилит. Намного труднее определиться с подходом для реализации поставленной задачи.</p>
55
<p>В случае с приложениями для автоматизации тестинга найти "что-то свое" не так уж трудно. Позже в статье будут приведены примеры софта, который поможет довольно быстро избавиться от "ручной проверки" утилит. Намного труднее определиться с подходом для реализации поставленной задачи.</p>
56
<p>Стоит обратить внимание на то, что существуют два варианта развития событий. И каждый имеет сильные-слабые стороны. Перед тестингом предстоит определиться с подходом реализациию</p>
56
<p>Стоит обратить внимание на то, что существуют два варианта развития событий. И каждый имеет сильные-слабые стороны. Перед тестингом предстоит определиться с подходом реализациию</p>
57
<h3>Record and Play</h3>
57
<h3>Record and Play</h3>
58
<p>Это - запись всех действий, которые проделываются в приложении. Далее специальный инструмент проводит генерацию понятного задействованной утилитой кода. Следующий этап - это уже автотестинг.</p>
58
<p>Это - запись всех действий, которые проделываются в приложении. Далее специальный инструмент проводит генерацию понятного задействованной утилитой кода. Следующий этап - это уже автотестинг.</p>
59
<p>Преимущества:</p>
59
<p>Преимущества:</p>
60
<ul><li>скорость реализации;</li>
60
<ul><li>скорость реализации;</li>
61
<li>отсутствие навыков программирования;</li>
61
<li>отсутствие навыков программирования;</li>
62
<li>универсальность.</li>
62
<li>универсальность.</li>
63
</ul><p>Недостаток только один и весьма существенный. Любые корректировки в проекте приводят к тому, что приходится создавать новый автотест. И так каждый раз. Не всех пользователей устраивает подобный расклад.</p>
63
</ul><p>Недостаток только один и весьма существенный. Любые корректировки в проекте приводят к тому, что приходится создавать новый автотест. И так каждый раз. Не всех пользователей устраивает подобный расклад.</p>
64
<h3>Screen Object</h3>
64
<h3>Screen Object</h3>
65
<p>Второй вариант, который является неким паттерном. Он предназначен для того, чтобы проводить организацию архитектуры тестинга приложений. Выражается взаимодействием экранов утилит.</p>
65
<p>Второй вариант, который является неким паттерном. Он предназначен для того, чтобы проводить организацию архитектуры тестинга приложений. Выражается взаимодействием экранов утилит.</p>
66
<p>При подобном подходе происходит моделирование экранов или страниц для задействованного приложения. Они "генерируются" как объекты кода. В результате выводится набор классов. Каждый будет отвечать за работу с конкретным дисплеем софта.</p>
66
<p>При подобном подходе происходит моделирование экранов или страниц для задействованного приложения. Они "генерируются" как объекты кода. В результате выводится набор классов. Каждый будет отвечать за работу с конкретным дисплеем софта.</p>
67
<p>Сильные стороны:</p>
67
<p>Сильные стороны:</p>
68
<ul><li>возможность переиспользования кода пока это требуется;</li>
68
<ul><li>возможность переиспользования кода пока это требуется;</li>
69
<li>низкая чувствительность к изменению параметров системы;</li>
69
<li>низкая чувствительность к изменению параметров системы;</li>
70
<li>надежность кодификаций;</li>
70
<li>надежность кодификаций;</li>
71
<li>понятность структуры.</li>
71
<li>понятность структуры.</li>
72
</ul><p>Разработка подобного варианта отнимает огромное количество времени и ресурсов. Также его трудно реализовать тому, кто не имеет никакого понятия о базовых языках программирования.</p>
72
</ul><p>Разработка подобного варианта отнимает огромное количество времени и ресурсов. Также его трудно реализовать тому, кто не имеет никакого понятия о базовых языках программирования.</p>
73
<p>Внимание: если хочется провести максимально результативный и эффективный тестинг, придется задуматься над реализацией обоих подходов.</p>
73
<p>Внимание: если хочется провести максимально результативный и эффективный тестинг, придется задуматься над реализацией обоих подходов.</p>
74
<h2>Выбор инструментария</h2>
74
<h2>Выбор инструментария</h2>
75
<p>Как только подходы реализации поставленной задачи выбраны, пользователям предстоит определиться со "средой". Утилитой, которая будет осуществлять тестинг приложения в том или ином случае.</p>
75
<p>Как только подходы реализации поставленной задачи выбраны, пользователям предстоит определиться со "средой". Утилитой, которая будет осуществлять тестинг приложения в том или ином случае.</p>
76
<p>Вариантов очень много. Есть как универсальный софт, так и предназначающийся для конкретных мобильных операционных систем. Обратить внимание можно на:</p>
76
<p>Вариантов очень много. Есть как универсальный софт, так и предназначающийся для конкретных мобильных операционных систем. Обратить внимание можно на:</p>
77
<ul><li>Espresso;</li>
77
<ul><li>Espresso;</li>
78
<li>UI Automator;</li>
78
<li>UI Automator;</li>
79
<li>XCUITest;</li>
79
<li>XCUITest;</li>
80
<li>EarlGrey;</li>
80
<li>EarlGrey;</li>
81
<li>Detox;</li>
81
<li>Detox;</li>
82
<li>Appium;</li>
82
<li>Appium;</li>
83
<li>Ranorex;</li>
83
<li>Ranorex;</li>
84
<li>TestComplete Mobile.</li>
84
<li>TestComplete Mobile.</li>
85
</ul><p>Последние четыре платформы являются универсальными, первые две - для Андроида, вторая пара сверху - для iOS.</p>
85
</ul><p>Последние четыре платформы являются универсальными, первые две - для Андроида, вторая пара сверху - для iOS.</p>
86
<h3>Espresso</h3>
86
<h3>Espresso</h3>
87
<p>Довольно простая среда, подходящая далеко не для всех целей. Его не стоит использовать при контактах с внешними утилитами. Предусматривает:</p>
87
<p>Довольно простая среда, подходящая далеко не для всех целей. Его не стоит использовать при контактах с внешними утилитами. Предусматривает:</p>
88
<ul><li>тестинг "белого ящика";</li>
88
<ul><li>тестинг "белого ящика";</li>
89
<li>доступ к исходным кодам приложений;</li>
89
<li>доступ к исходным кодам приложений;</li>
90
<li>тестирование "серого ящика" с доступом к некоторым процессам и структуре.</li>
90
<li>тестирование "серого ящика" с доступом к некоторым процессам и структуре.</li>
91
</ul><p>Наделен софт отличным пользовательским интерфейсом. Имеет весьма мощный API.</p>
91
</ul><p>Наделен софт отличным пользовательским интерфейсом. Имеет весьма мощный API.</p>
92
<h3>UI Automator</h3>
92
<h3>UI Automator</h3>
93
<p>Вот утилита, которая используется в основном при автотестинге софта, предназначенного для мобильных устройств. На нем стоит заострить внимание, так как огромным спросом сегодня пользуются именно Android-приложения.</p>
93
<p>Вот утилита, которая используется в основном при автотестинге софта, предназначенного для мобильных устройств. На нем стоит заострить внимание, так как огромным спросом сегодня пользуются именно Android-приложения.</p>
94
<p>Tests здесь осуществляются не только тестировщиками, но и обычными пользователями. Утилита имеет продвинутую внешнюю интеграцию. Соответственно, фреймворк позволит:</p>
94
<p>Tests здесь осуществляются не только тестировщиками, но и обычными пользователями. Утилита имеет продвинутую внешнюю интеграцию. Соответственно, фреймворк позволит:</p>
95
<ul><li>проводить тесты тех или иных утилит для мобильных устройств;</li>
95
<ul><li>проводить тесты тех или иных утилит для мобильных устройств;</li>
96
<li>"общаться" с операционной системой;</li>
96
<li>"общаться" с операционной системой;</li>
97
<li>контактировать с другими утилитами.</li>
97
<li>контактировать с другими утилитами.</li>
98
</ul><p>UI Automator используется для тестирования "черного ящика". Анализирование здесь проводится с точки внешнего пользователя. Так, словно у разработчика нет доступа к задействованным кодификациям.</p>
98
</ul><p>UI Automator используется для тестирования "черного ящика". Анализирование здесь проводится с точки внешнего пользователя. Так, словно у разработчика нет доступа к задействованным кодификациям.</p>
99
<p>Основные преимущества UI Automator:</p>
99
<p>Основные преимущества UI Automator:</p>
100
<ul><li>наличие средств для отслеживания и анализа разнообразных отображаемых на экране компонентов и элементов в процессе реализации;</li>
100
<ul><li>наличие средств для отслеживания и анализа разнообразных отображаемых на экране компонентов и элементов в процессе реализации;</li>
101
<li>мощный API, позволяющих видеть данные о состоянии устройства и происходящих процессов;</li>
101
<li>мощный API, позволяющих видеть данные о состоянии устройства и происходящих процессов;</li>
102
<li>APIs для кроссплатформенности.</li>
102
<li>APIs для кроссплатформенности.</li>
103
</ul><p>Не стоит рассматривать отдельно средства для iOS, так как они встречаются на практике довольно редко. Программеры и тестировщики предпочитают работать с универсальными средами для реализации поставленной задачи.</p>
103
</ul><p>Не стоит рассматривать отдельно средства для iOS, так как они встречаются на практике довольно редко. Программеры и тестировщики предпочитают работать с универсальными средами для реализации поставленной задачи.</p>
104
<h3>Detox</h3>
104
<h3>Detox</h3>
105
<p>Неплохой вариант для софта, который написан на React Native. Обычно составляются на JavaScript. Генерация приложений для различных мобильных платформ производится из одного и того же кода JS. Они будут максимально схожи между собой.</p>
105
<p>Неплохой вариант для софта, который написан на React Native. Обычно составляются на JavaScript. Генерация приложений для различных мобильных платформ производится из одного и того же кода JS. Они будут максимально схожи между собой.</p>
106
<p>Основным преимуществом является тестирование по принципам "серого ящика". Фреймворк не будет иметь доступ ко внутренним компонентам. Поэтому останется соотносить внешнее поведение утилиты с тем, что происходит "внутри".</p>
106
<p>Основным преимуществом является тестирование по принципам "серого ящика". Фреймворк не будет иметь доступ ко внутренним компонентам. Поэтому останется соотносить внешнее поведение утилиты с тем, что происходит "внутри".</p>
107
<p>Среда Detox предусматривает возможность обращения к памяти, а также отслеживанию выполняемых процессов. Принципы "серого ящика" способствуют борьбе с неустойчивостью, которые возникают при сквозном тестировании:</p>
107
<p>Среда Detox предусматривает возможность обращения к памяти, а также отслеживанию выполняемых процессов. Принципы "серого ящика" способствуют борьбе с неустойчивостью, которые возникают при сквозном тестировании:</p>
108
<ul><li>тест способен вылетать самостоятельно без каких-либо кодовых корректировок;</li>
108
<ul><li>тест способен вылетать самостоятельно без каких-либо кодовых корректировок;</li>
109
<li>результаты не детерминированы из-за разнообразия функциональности и процессов;</li>
109
<li>результаты не детерминированы из-за разнообразия функциональности и процессов;</li>
110
<li>требуется осуществлять синхронизацию вручную.</li>
110
<li>требуется осуществлять синхронизацию вручную.</li>
111
</ul><p>"Серый ящик" помогает получать на выходе лучшую устойчивость и скорость работы. Работает с нативными драйверами посредством JSon. Поддерживает как эмуляторы, так и реальные физические устройства.</p>
111
</ul><p>"Серый ящик" помогает получать на выходе лучшую устойчивость и скорость работы. Работает с нативными драйверами посредством JSon. Поддерживает как эмуляторы, так и реальные физические устройства.</p>
112
<h3>Appium</h3>
112
<h3>Appium</h3>
113
<p>Если пользователь сказал "Хочу провести универсальный тестинг мобильной утилиты", стоит присмотреться к Appium. Написание кодов для платформ возможно через единые API, без дополнительных преобразований.</p>
113
<p>Если пользователь сказал "Хочу провести универсальный тестинг мобильной утилиты", стоит присмотреться к Appium. Написание кодов для платформ возможно через единые API, без дополнительных преобразований.</p>
114
<p>К принципам работы утилиты относят следующие моменты:</p>
114
<p>К принципам работы утилиты относят следующие моменты:</p>
115
<ul><li>не требуется перекомпиляция;</li>
115
<ul><li>не требуется перекомпиляция;</li>
116
<li>корректировки для автотестинга не обязательны;</li>
116
<li>корректировки для автотестинга не обязательны;</li>
117
<li>нет необходимости в привязке к одному фреймворку или языку;</li>
117
<li>нет необходимости в привязке к одному фреймворку или языку;</li>
118
<li>простая API автоматизация.</li>
118
<li>простая API автоматизация.</li>
119
</ul><p>Данный вариант используется тогда, когда возникает необходимость проверки работы утилиты сразу на нескольких платформах. Отлично годится для тех, кто имел опыт работы с тестингом веб-приложений.</p>
119
</ul><p>Данный вариант используется тогда, когда возникает необходимость проверки работы утилиты сразу на нескольких платформах. Отлично годится для тех, кто имел опыт работы с тестингом веб-приложений.</p>
120
<h3>Ranorex</h3>
120
<h3>Ranorex</h3>
121
<p>Не слишком популярный инструмент из-за того, что он является платным. Предусматривает как возможность применения программирования для тестинга, так и без<a>скриптов</a>вовсе. Есть поддержка эмуляторов и физических устройств.</p>
121
<p>Не слишком популярный инструмент из-за того, что он является платным. Предусматривает как возможность применения программирования для тестинга, так и без<a>скриптов</a>вовсе. Есть поддержка эмуляторов и физических устройств.</p>
122
<p>Ranorex позволяет:</p>
122
<p>Ranorex позволяет:</p>
123
<ul><li>создавать тесты;</li>
123
<ul><li>создавать тесты;</li>
124
<li>проводить настройку тестинга;</li>
124
<li>проводить настройку тестинга;</li>
125
<li>управлять процессами посредством централизации.</li>
125
<li>управлять процессами посредством централизации.</li>
126
</ul><p>Без проблем интегрируется с CI-средой. Предусматривает подгрузку из баз данных SQL, CSV и Excel. Тесты проводятся всеми существующими походами - "черным", "белым", "серым".</p>
126
</ul><p>Без проблем интегрируется с CI-средой. Предусматривает подгрузку из баз данных SQL, CSV и Excel. Тесты проводятся всеми существующими походами - "черным", "белым", "серым".</p>
127
<h3>TestComplete</h3>
127
<h3>TestComplete</h3>
128
<p>В числе самых востребованных утилит для unit test принято выделять TestComplete. Поддерживает не только мобильные платформы, но и десктопные/веб-софт. Ориентация - функциональное и юнит-тестирование.</p>
128
<p>В числе самых востребованных утилит для unit test принято выделять TestComplete. Поддерживает не только мобильные платформы, но и десктопные/веб-софт. Ориентация - функциональное и юнит-тестирование.</p>
129
<p>Предусматривает:</p>
129
<p>Предусматривает:</p>
130
<ul><li>регрессивный тест;</li>
130
<ul><li>регрессивный тест;</li>
131
<li>data-driven тестинг;</li>
131
<li>data-driven тестинг;</li>
132
<li>распределенное тестирование.</li>
132
<li>распределенное тестирование.</li>
133
</ul><p>Имеет Recorder. Через соответствующие возможности можно посредством записи действий и настроек корректировать команды в редакторе. После предусматривается возможность запуска не только на заданном устройстве, но и посредством экспорта в сторонние приложения.</p>
133
</ul><p>Имеет Recorder. Через соответствующие возможности можно посредством записи действий и настроек корректировать команды в редакторе. После предусматривается возможность запуска не только на заданном устройстве, но и посредством экспорта в сторонние приложения.</p>
134
<p>TestComplete умеет распознавать объекты и элементы для дальнейшего управления путем предложения спецкоманд. Они задействованы при взаимодействии пользователями. С легкостью поддерживает интеграцию с Git, Jira, Jenkins.</p>
134
<p>TestComplete умеет распознавать объекты и элементы для дальнейшего управления путем предложения спецкоманд. Они задействованы при взаимодействии пользователями. С легкостью поддерживает интеграцию с Git, Jira, Jenkins.</p>
135
<h2>Unit-тестинг</h2>
135
<h2>Unit-тестинг</h2>
136
<p><a>Unit тест</a>- это модульный вариант. Он предусматривает проверку приложений и утилит "по блокам". Позволяет добиваться максимальной эффективности при реализации поставленных задач.</p>
136
<p><a>Unit тест</a>- это модульный вариант. Он предусматривает проверку приложений и утилит "по блокам". Позволяет добиваться максимальной эффективности при реализации поставленных задач.</p>
137
<p>Unit-тестирование на Андроиде разделяют на:</p>
137
<p>Unit-тестирование на Андроиде разделяют на:</p>
138
<ol><li>Локальные. Используют исключительно JVM. Подходят для отслеживания бизнес-логики. Она осуществляет взаимодействие с операционными системами.</li>
138
<ol><li>Локальные. Используют исключительно JVM. Подходят для отслеживания бизнес-логики. Она осуществляет взаимодействие с операционными системами.</li>
139
<li>Инструментальные. Позволяют посмотреть на логику, которая проводится через Android API. Осуществляется через физические устройства и эмуляторы. Отнимает подобный процесс больше времени, нежели локальные тесты.</li>
139
<li>Инструментальные. Позволяют посмотреть на логику, которая проводится через Android API. Осуществляется через физические устройства и эмуляторы. Отнимает подобный процесс больше времени, нежели локальные тесты.</li>
140
</ol><p>Выбор зависит напрямую от конечной цели процесса. Но по возможности рекомендуется составлять локальные тесты. Они более универсальны и полезны.</p>
140
</ol><p>Выбор зависит напрямую от конечной цели процесса. Но по возможности рекомендуется составлять локальные тесты. Они более универсальны и полезны.</p>
141
<p>Стоит дополнительно обратить внимание на организацию пакетов:</p>
141
<p>Стоит дополнительно обратить внимание на организацию пакетов:</p>
142
<ul><li>App/scr/main/java - исходный код;</li>
142
<ul><li>App/scr/main/java - исходный код;</li>
143
<li>App/scr/test/java - локальные тесты;</li>
143
<li>App/scr/test/java - локальные тесты;</li>
144
<li>App/scr/androidTest/java - инструментальный тестинг.</li>
144
<li>App/scr/androidTest/java - инструментальный тестинг.</li>
145
</ul><p>Эта информация будет нужно не только новичкам, но и тем, кто уже имеет навыки в выбранной области. Без понимания мест хранения кодификаций и отчетов может случиться фатальная ошибка.</p>
145
</ul><p>Эта информация будет нужно не только новичкам, но и тем, кто уже имеет навыки в выбранной области. Без понимания мест хранения кодификаций и отчетов может случиться фатальная ошибка.</p>
146
<h3>Настройки</h3>
146
<h3>Настройки</h3>
147
<p>Если программер работает через Android Studio, он может не задумываться над созданием тех или иных пакетов. И предложенная ранее структура не потребуется. В противном случае предстоит запоминать и фиксировать огромное множество данных.</p>
147
<p>Если программер работает через Android Studio, он может не задумываться над созданием тех или иных пакетов. И предложенная ранее структура не потребуется. В противном случае предстоит запоминать и фиксировать огромное множество данных.</p>
148
<p>IDE конфигурирует Gradle-файл модуля APP:</p>
148
<p>IDE конфигурирует Gradle-файл модуля APP:</p>
149
<p>Процесс написания тестов можно упростить. Для реализации поставленной задачи программеры пользуются фреймворками. Пример - Mockito. Тут предусматриваются возможности имитирования и наблюдения объектов. Поддерживается подключение вспомогательных проверочных средств и утилит. Для его подключения предстоит указать зависимость testComplete ‘org.mockito:mockito-core:1.10.19’.</p>
149
<p>Процесс написания тестов можно упростить. Для реализации поставленной задачи программеры пользуются фреймворками. Пример - Mockito. Тут предусматриваются возможности имитирования и наблюдения объектов. Поддерживается подключение вспомогательных проверочных средств и утилит. Для его подключения предстоит указать зависимость testComplete ‘org.mockito:mockito-core:1.10.19’.</p>
150
<h3>Локальный тестинг</h3>
150
<h3>Локальный тестинг</h3>
151
<p>Для того, чтобы разобраться в нужной мере в тестинге, стоит рассмотреть процесс на примере соответствия объектов. В приведенном примере их два. Используются числа:</p>
151
<p>Для того, чтобы разобраться в нужной мере в тестинге, стоит рассмотреть процесс на примере соответствия объектов. В приведенном примере их два. Используются числа:</p>
152
<p>Чтобы провести тест, потребуется:</p>
152
<p>Чтобы провести тест, потребуется:</p>
153
<ol><li>Взять созданный класс.</li>
153
<ol><li>Взять созданный класс.</li>
154
<li>Разместить в пакете для локальных тестов задействованные методы.</li>
154
<li>Разместить в пакете для локальных тестов задействованные методы.</li>
155
</ol><p>Помечаются соответствующие элементы как "Test. Метод assertEquals() выдает ошибки AsserionError тогда, когда первый (ожидаемый) и второй (итог) не совпадают друг с другом.</p>
155
</ol><p>Помечаются соответствующие элементы как "Test. Метод assertEquals() выдает ошибки AsserionError тогда, когда первый (ожидаемый) и второй (итог) не совпадают друг с другом.</p>
156
<p>Для запуска на класс требуется кликнуть правой кнопкой мыши и выбрать Run ‘ExampleUnitTest’. Получится соответствующий результат.</p>
156
<p>Для запуска на класс требуется кликнуть правой кнопкой мыши и выбрать Run ‘ExampleUnitTest’. Получится соответствующий результат.</p>
157
<p>Первый метод пройдет стадию выполнения, второй выдаст ошибку. Для настройки теста на ожидаемое исключение используется параметр expected:</p>
157
<p>Первый метод пройдет стадию выполнения, второй выдаст ошибку. Для настройки теста на ожидаемое исключение используется параметр expected:</p>
158
<p>При подобных обстоятельствах тестинг пройдет успешно, так как исключение ожидаемо. Для длинных операций указывается дополнительное значение timeout. Прописывается в миллисекундах. Если метод не обработается за установленное время, тест потерпит провал:</p>
158
<p>При подобных обстоятельствах тестинг пройдет успешно, так как исключение ожидаемо. Для длинных операций указывается дополнительное значение timeout. Прописывается в миллисекундах. Если метод не обработается за установленное время, тест потерпит провал:</p>
159
<p>Есть механизм Matchers, который представляет логические операции совпадения:</p>
159
<p>Есть механизм Matchers, который представляет логические операции совпадения:</p>
160
<p>Тут:</p>
160
<p>Тут:</p>
161
<ul><li>is() - оператор "равно";</li>
161
<ul><li>is() - оператор "равно";</li>
162
<li>is(not()) - "неравно";</li>
162
<li>is(not()) - "неравно";</li>
163
<li>hasItem() - проверка на наличие составляющей в списке.</li>
163
<li>hasItem() - проверка на наличие составляющей в списке.</li>
164
</ul><p>Также "Мокито" используется, чтобы создавать своеобразные "заглушки". Речь идет о mock-объектах. Это - сложные элементы, которые не требуют тестинга. Объявляются:</p>
164
</ul><p>Также "Мокито" используется, чтобы создавать своеобразные "заглушки". Речь идет о mock-объектах. Это - сложные элементы, которые не требуют тестинга. Объявляются:</p>
165
<p>Для использования аннотации @Mock класс заменяют аннотацией @RunWith или проводят в @Before-методе MockitoAnnotations.</p>
165
<p>Для использования аннотации @Mock класс заменяют аннотацией @RunWith или проводят в @Before-методе MockitoAnnotations.</p>
166
<p>Как только появляется "замоканный" элемент, можно творить различные невообразимые вещи. Пример - переопределение названия приложения из строкового ресурса:</p>
166
<p>Как только появляется "замоканный" элемент, можно творить различные невообразимые вещи. Пример - переопределение названия приложения из строкового ресурса:</p>
167
<p>Далее после вызова getString() осуществляется возврат Fake String. Это проводится даже тогда, когда он вызван неявным методом (за пределами тестинга):</p>
167
<p>Далее после вызова getString() осуществляется возврат Fake String. Это проводится даже тогда, когда он вызван неявным методом (за пределами тестинга):</p>
168
<p>Теперь можно заменять все строчки на используемую:</p>
168
<p>Теперь можно заменять все строчки на используемую:</p>
169
<p>Можно исключить Exception и использовать when….thenThrow. Также есть метод verify. Он проваливает тест, если указанный метод ранее не вызывался:</p>
169
<p>Можно исключить Exception и использовать when….thenThrow. Также есть метод verify. Он проваливает тест, если указанный метод ранее не вызывался:</p>
170
<p>Сначала метод передается в мок-лист, после указываются методы, интересующие пользователя. Тут задействовано добавление строчки и очистка списка.</p>
170
<p>Сначала метод передается в мок-лист, после указываются методы, интересующие пользователя. Тут задействовано добавление строчки и очистка списка.</p>
171
<p>Полный потенциал открывается при spy-объектах. За ними можно следить как за фейковыми элементами:</p>
171
<p>Полный потенциал открывается при spy-объектах. За ними можно следить как за фейковыми элементами:</p>
172
<p>Но есть и другой вариант развития событий. А именно - "инструментальный" тестинг.</p>
172
<p>Но есть и другой вариант развития событий. А именно - "инструментальный" тестинг.</p>
173
<h3>Instrumented-тесты</h3>
173
<h3>Instrumented-тесты</h3>
174
<p>При реализации этой "версии" тестов для Android юзер получает доступ к настоящему контексту приложения. Дополнительно - ко всем возможностям и функционалу Android API. Предусматривает GodMode, который позволяет управлять жизненным циклом активности.</p>
174
<p>При реализации этой "версии" тестов для Android юзер получает доступ к настоящему контексту приложения. Дополнительно - ко всем возможностям и функционалу Android API. Предусматривает GodMode, который позволяет управлять жизненным циклом активности.</p>
175
<p>Чтобы распознавать тест в виде инструментального, размещается класс соответствующей аннотации:</p>
175
<p>Чтобы распознавать тест в виде инструментального, размещается класс соответствующей аннотации:</p>
176
<p>Далее проделывается следующее:</p>
176
<p>Далее проделывается следующее:</p>
177
<ul><li>осуществляется пометка тестов;</li>
177
<ul><li>осуществляется пометка тестов;</li>
178
<li>проверяется пакет на соответствие приложению.</li>
178
<li>проверяется пакет на соответствие приложению.</li>
179
</ul><p>Инструментарий позволяет прослушивать состояние активностей:</p>
179
</ul><p>Инструментарий позволяет прослушивать состояние активностей:</p>
180
<p>А еще можно управлять их состоянием.</p>
180
<p>А еще можно управлять их состоянием.</p>
181
<p>Все это поможет проводить Unit-тестирование в том или ином случае. Если заранее подготовиться к процессу, можно довольно быстро воплотить задумку в жизнь. Главное не торопиться, выбрать методы и платформы, а затем действовать поэтапно.</p>
181
<p>Все это поможет проводить Unit-тестирование в том или ином случае. Если заранее подготовиться к процессу, можно довольно быстро воплотить задумку в жизнь. Главное не торопиться, выбрать методы и платформы, а затем действовать поэтапно.</p>
182
<p>Внимание: "ручную" проверку тоже рекомендуется осуществлять. И не только при мобильных приложениях, но и во всех других ситуациях. Пользователи иногда способны обнаружить то, что "машины" попросту пропустят. Лишь так удается добиться максимальной результативности.</p>
182
<p>Внимание: "ручную" проверку тоже рекомендуется осуществлять. И не только при мобильных приложениях, но и во всех других ситуациях. Пользователи иногда способны обнаружить то, что "машины" попросту пропустят. Лишь так удается добиться максимальной результативности.</p>
183
<h2>Как стать тестировщиком</h2>
183
<h2>Как стать тестировщиком</h2>
184
<p>Каждый желающий может освоить рассмотренную сферу в информационных технологиях. Но для реализации поставленной задачи приходится изрядно постараться. Особенно это касается тех, кто долгое время не занимался программированием и разработкой.</p>
184
<p>Каждый желающий может освоить рассмотренную сферу в информационных технологиях. Но для реализации поставленной задачи приходится изрядно постараться. Особенно это касается тех, кто долгое время не занимался программированием и разработкой.</p>
185
<p>Разработчики должны заниматься не только созданием архитектуры утилит и их написанием, но и проверкой. Обычным программерам приходится дополнительно обучаться на тестировщиков.</p>
185
<p>Разработчики должны заниматься не только созданием архитектуры утилит и их написанием, но и проверкой. Обычным программерам приходится дополнительно обучаться на тестировщиков.</p>
186
<p>Сделать это можно несколькими способами:</p>
186
<p>Сделать это можно несколькими способами:</p>
187
<ol><li>Воспользоваться самообразованием. В Сети полно информации по реализации тестинга. И не только для мобильных платформ. Неплохой вариант, но лучше всего он дается не новичкам.</li>
187
<ol><li>Воспользоваться самообразованием. В Сети полно информации по реализации тестинга. И не только для мобильных платформ. Неплохой вариант, но лучше всего он дается не новичкам.</li>
188
<li>Обучиться в ВУЗе. Лучше отдавать предпочтение "разработчикам". Особенно, специализирующихся на мобильных утилитах. В процессе ученики освоят все азы процесса, познакомятся с разнообразными способами воплощения задумки в жизнь. Результат - диплом установленной формы.</li>
188
<li>Обучиться в ВУЗе. Лучше отдавать предпочтение "разработчикам". Особенно, специализирующихся на мобильных утилитах. В процессе ученики освоят все азы процесса, познакомятся с разнообразными способами воплощения задумки в жизнь. Результат - диплом установленной формы.</li>
189
<li><a>Пройти спецкурсы</a>. В Москве и других регионах России существуют различные образовательные центры. Они обучают очно, заочно и дистанционно. Предусматривают сегментированное наставничество в выбранном направлении. Обучение длится от нескольких месяцев до года. В конце выдается сертификат.</li>
189
<li><a>Пройти спецкурсы</a>. В Москве и других регионах России существуют различные образовательные центры. Они обучают очно, заочно и дистанционно. Предусматривают сегментированное наставничество в выбранном направлении. Обучение длится от нескольких месяцев до года. В конце выдается сертификат.</li>
190
</ol><p>Последний вариант наиболее популярен на сегодняшний день. Он позволяет быстро научиться тем или иным IT-возможностям по строго намеченному пути.</p>
190
</ol><p>Последний вариант наиболее популярен на сегодняшний день. Он позволяет быстро научиться тем или иным IT-возможностям по строго намеченному пути.</p>
191
<p>Научиться автоматизации тестирования мобильных приложений людям, которые уже знают азы программирования, проще. Но и с "нуля" этот процесс вполне удается инициировать. Главное - изучать материалы и много практиковаться. В Сети есть и видеоуроки, и сопутствующая литература. Можно остановиться как на предложениях для новичков, так и для уже опытных программеров.</p>
191
<p>Научиться автоматизации тестирования мобильных приложений людям, которые уже знают азы программирования, проще. Но и с "нуля" этот процесс вполне удается инициировать. Главное - изучать материалы и много практиковаться. В Сети есть и видеоуроки, и сопутствующая литература. Можно остановиться как на предложениях для новичков, так и для уже опытных программеров.</p>
192
<p>Внимание: немаловажны для процесса обучения такие черты, как усидчивость, целеустремленность и умение работать в команде.</p>
192
<p>Внимание: немаловажны для процесса обучения такие черты, как усидчивость, целеустремленность и умение работать в команде.</p>
193
<p>P. S.<a>Большой выбор курсов по тестированию</a>есть и в Otus. Среди них широко представлено и направление автоматизации. Есть варианты как для продвинутых, так и для начинающих пользователей.</p>
193
<p>P. S.<a>Большой выбор курсов по тестированию</a>есть и в Otus. Среди них широко представлено и направление автоматизации. Есть варианты как для продвинутых, так и для начинающих пользователей.</p>
194
<a></a>
194
<a></a>