Автоматизация тестирования для Android

Содержание

Слайд 2

Концепция подхода
Применение
Архитектура

Концепция подхода Применение Архитектура

Слайд 3

Концепция подхода

Концепция подхода

Слайд 5

Проблемы

Проблемы

Слайд 6

To sikuli or not to sikuli?

100 сценариев

Изменились шрифты...

Прошла неделя...

To sikuli or not to sikuli? 100 сценариев Изменились шрифты... Прошла неделя...

Слайд 7

Прямой порядок выполнения

Прямой порядок выполнения

Слайд 8

Независимость теста от отображения данных.
Обработка непредвиденных ситуаций.

Главные задачи

Независимость теста от отображения данных. Обработка непредвиденных ситуаций. Главные задачи

Слайд 9

Event-ориентированная система

Event-ориентированная система

Слайд 10

Что такое Event-ориентированная система?

Событие

Реакция

Что такое Event-ориентированная система? Событие Реакция

Слайд 11

Взаимодействие между приложением и Testbot

App

Взаимодействие между приложением и Testbot App

Слайд 12

Окрыть документ (курсор в первом параграфе).
Перемещать курсор вправо, пока он не достигнет

Окрыть документ (курсор в первом параграфе). Перемещать курсор вправо, пока он не
начала следующего параграфа.
Нажать Backspace.
Exp. result: параграфы объединились.

Пример: тест, объединяющий параграфы в текстовом документе

Слайд 14

File “For test.docx” is focused

Testbot

Press Enter

File “For test.docx” is focused
Press Enter

File “For test.docx” is focused Testbot Press Enter File “For test.docx” is focused Press Enter

Слайд 15

Pass

Testbot

File “For test.docx” is focused
Press Enter
Document is opened
Press Right
Cursor is moved right

Pass Testbot File “For test.docx” is focused Press Enter Document is opened
in paragraph 0
Press Right
Cursor is moved right in paragraph 0
Press Right
Cursor is moved right in paragraph 1
Press Backspace
Paragraphs are merged
Pass

Document opened

Press Right

Cursor is moved right in paragraph 0

Press Right

Cursor is moved right in paragraph 0

Press Right

Cursor is moved right in paragraph 1

Press Backspace

Paragraphs are merged

Слайд 16

Плюшки

Плюшки

Слайд 17

Тестирование неограниченного количества документов
Регрессионное тестирование рендеринга
CIT
Интересная работа

Тестирование неограниченного количества документов Регрессионное тестирование рендеринга CIT Интересная работа

Слайд 18

Отчет

Отчет

Слайд 19

Фиксированный набор специально-созданных и реальных документов
Снимаем изображение -> картинки
Проверяем картинки –> сохраняем

Фиксированный набор специально-созданных и реальных документов Снимаем изображение -> картинки Проверяем картинки
как эталон
Тестируем этот же набор на следующей сборке
Автоматически сравниваем картинки с эталоном

Рендеринг

Слайд 20

Отчет

Отчет

Слайд 21

Использование библиотеки OpenCV для поиска изображения на экране
Использование в диалогах
Зависимость от отображения

Просто

Использование библиотеки OpenCV для поиска изображения на экране Использование в диалогах Зависимость
добавь Sikuli?

Слайд 22

Автоматическая сборка на билд-сервере
Нотификация тест-сервера через Jabber
Объединение тестов в тест-сеты; ассоциация тест-сета

Автоматическая сборка на билд-сервере Нотификация тест-сервера через Jabber Объединение тестов в тест-сеты;
и сборки
E-mail нотификации по завершению теста

CIT

Слайд 23

Покрытие/Время

Покрытие/Время

Слайд 24

Живой тест

Живой тест

Слайд 25

Testbot «изнутри»

Testbot «изнутри»

Слайд 26

Приложение запущено в 3-х отдельных процессах
Не смогли получить информацию о состоянии диалогов

Приложение запущено в 3-х отдельных процессах Не смогли получить информацию о состоянии
в 2-ом и 3-ем процессе
Нет возможности следить за изменениями в документе

Проблемы Robotium

Слайд 27

Получение информации о состоянии приложения

Получение информации о состоянии приложения

Слайд 28

06:29:36.683 E Error:Resource 'arrowleft' not found in 'id‘
06:29:36.685 E Error:Resource 'arrowright' not

06:29:36.683 E Error:Resource 'arrowleft' not found in 'id‘ 06:29:36.685 E Error:Resource 'arrowright'
found in 'id‘
06:29:36.793 W Retrieving the token without setting it first.
06:29:36.816 V TESTPOINT: filelist refreshed - ROOT [accounts:nwdeer@gmail.com,]
06:29:36.817 W Retrieving the token without setting it first.
06:29:36.819 E Error:Retrieving the consumer
06:29:36.902 V TESTPOINT: Account is armed in FileSystemList [name:null] [id:null]
06:33:55.052 E Error:Resource 'arrowleft' not found in 'id‘
06:33:55.053 E Error:Resource 'arrowright' not found in 'id‘
06:33:55.055 V TESTPOINT activity started; [path:/mnt/sdcard/!QP-Groups-MSO2003.ppt]
06:33:55.060 E Error:Can not load table_styles_default_xml
06:33:55.067 V TESTPOINT: Start loading presentation
06:33:55.279 D openDocument() new HSLFSlideShow finished in: 199
06:33:55.608 D openDocument() initHSLFAndroid finished in: 528
06:33:55.630 D openDocument() new SlideShow finished in: 550
06:33:56.696 D openDocument() SlideAdapters created finished in: 1616
06:33:56.707 I Document was parsed by POI in 1630 ms.
06:33:56.708 V TESTPOINT: End loading presentation
06:33:56.984 D PointImageUtil: Metafile loaded and cached: size: 1789x1531
06:33:57.022 D PointImageUtil: Metafile loaded and cached: size: 1963x1981
06:33:57.246 W Got unhandled activity result. requestCode=12

06:29:36.816 V TESTPOINT: filelist refreshed - ROOT [accounts:nwdeer@gmail.com,]
06:29:36.902 V TESTPOINT: Account is armed in FileSystemList [name:null] [id:null]
06:33:55.055 V TESTPOINT activity started; [path:/mnt/sdcard/!QP-Groups-MSO2003.ppt]
06:33:55.067 V TESTPOINT: Start loading presentation
06:33:56.708 V TESTPOINT: End loading presentation

Обработка файла логирования приложения

Строки для обработки

Слайд 29

Выполнение теста

Document is opened
Cursor is moved in paragraph 0
Cursor is moved in

Выполнение теста Document is opened Cursor is moved in paragraph 0 Cursor
paragraph 1
Paragraphs are merged

Лог

A: Document is opened:
pressRight();

B: Cursor is moved:
if (index == 0) pressRight();
else pressDelete()

C: Paragraphs are merged :
pass();

Document is opened
pressRight()
Cursor is moved in paragraph 0
pressRight()
Cursor is moved in paragraph 1
pressDelete()
Paragraphs are merged
Pass();

Слайд 30

А если не сработает?

Starting to open document

Лог

Starting to load document
wait(120);
Failed(“Could not load”)

A:

А если не сработает? Starting to open document … Лог Starting to
Starting to load

onEvent(): setTimeOut(120)

onTimeOut(): failed(“Could not load”);

Слайд 31

А если ошибка?

Starting to open document
Null pointer exception

Лог

Starting to load document
wait(120);
recordStackTrace();
wait(30);
Failed(“Could not

А если ошибка? Starting to open document Null pointer exception Лог Starting
load”)

A: Starting to load

onEvent(): setTimeOut(120)

onTimeOut(): failed(“Could not load”);

onError():
recordStackTrace()

Слайд 32

Пример кода теста

Пример кода теста