SlideShare a Scribd company logo
1 of 33
Проект Testbot
 Концепция   подхода

 Применение



 Архитектура




                        2
3
4
5
100 сценариев
Изменились шрифты...
  Прошла неделя...




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




                                         8
9
Событие




          Реакция




                    10
App               Информация           Фокусировка на файле
                              пользовательского
                     Events   уровня               Файл открылся

                                                   Открылось
                                                   контекстное меню
           Testbot
Actions




                              Служебная           Ошибки в приложении
                              информация
          Анализ                                  Используемая память
          события
                                                  Время

           Анализ
          контекста


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




                                            12
13
Time Line
                                                            Testbot
                          File “For test.docx” is focused
                                              Press Enter
File “For test.docx” is                                     Press Enter
        focused




                                                                     14
Time Line
                                                       Testbot
                     File “For test.docx” is focused
                                         Press Enter
                     Document is opened                   Press
                                                       Press Right
                                                          Pass
                                         Press Right   Backspace

 Cursor is moved     Cursor is moved right in
   Document
  Paragraphs are     paragraph 0
right in paragraph
    opened
      merged
         0
         1                               Press Right
                     Cursor is moved right in
                     paragraph 0
                                         Press Right
                     Cursor is moved right in
                     paragraph 1
                                    Press Backspace
                     Paragraphs are merged
                                                Pass




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




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


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




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




                                             22
50
45
40
35
30
25                                                      Testbot
20                                                      Sikuli
15
10
5
0

     1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35



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




                                               26
Testpoints




                Файл
             логирования




               Testbot



                           27
Строки для обработки
    Обработка файла                      06:29:36.816 V   TESTPOINT: filelist refreshed - ROOT [acco
логирования приложения                   06:29:36.902 V   TESTPOINT: Account is armed in FileSyste
                                         06:33:55.055 V   TESTPOINT activity started; [path:/mnt/sd
                                         06:33:55.067 V   TESTPOINT: Start loading presentation
                                         06:33:56.708 V   TESTPOINT: End loading presentation

06:29:36.683 E Error:Resource 'arrowleft' not found in 'id„
06:29:36.685 E Error:Resource 'arrowright' not 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

                                                                                              28
Лог                     Time Line              A: Document
                                                      is opened:
1. Document is       Document is opened              pressRight();
   opened                             pressRight()
2. Cursor is moved   Cursor is moved in
   in paragraph 0    paragraph 0
3. Cursor is moved                    pressRight()      B: Cursor is
   in paragraph 1    Cursor is moved in                   moved:
4. Paragraphs are    paragraph 1                     if (index == 0)
   merged                           pressDelete()    pressRight();
                     Paragraphs are merged           else
                                           Pass();   pressDelete()



                                                     C: Paragraphs
                                                     are merged :
                                                         pass();

                                                                       29
Лог                  Time Line
                                              A: Starting
                                                to load
1. Starting to open   Starting to load
   document           document
         …                      wait(120);
                        Failed(“Could not                 onEvent():
                                     load”)            setTimeOut(120)



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




                                                                         30
Лог                  Time Line
                                              A: Starting
                                                to load
1. Starting to open   Starting to load
   document           document
2. Null pointer                 wait(120);
   exception          recordStackTrace();                 onEvent():
                                  wait(30);            setTimeOut(120)
                        Failed(“Could not
                                     load”)

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



                                                          onError():
                                                      recordStackTrace()


                                                                         31
32
Дмитрий Вильнер

dmitry.vilner@quickoffice.com

                 Олег Орлов
  oleg.orlov@quickoffice.com
                                33

More Related Content

More from SQALab

Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информацияSQALab
 
Автоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОАвтоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОSQALab
 
Правильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестированияПравильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестированияSQALab
 
Sustainable Test Automation: Collaborate within Team
Sustainable Test Automation: Collaborate within TeamSustainable Test Automation: Collaborate within Team
Sustainable Test Automation: Collaborate within TeamSQALab
 

More from SQALab (20)

Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информация
 
Автоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОАвтоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПО
 
Правильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестированияПравильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестирования
 
Sustainable Test Automation: Collaborate within Team
Sustainable Test Automation: Collaborate within TeamSustainable Test Automation: Collaborate within Team
Sustainable Test Automation: Collaborate within Team
 

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

  • 2.  Концепция подхода  Применение  Архитектура 2
  • 3. 3
  • 4. 4
  • 5. 5
  • 7. 7
  • 8. Независимость теста от отображения данных.  Обработка непредвиденных ситуаций. 8
  • 9. 9
  • 10. Событие Реакция 10
  • 11. App Информация Фокусировка на файле пользовательского Events уровня Файл открылся Открылось контекстное меню Testbot Actions Служебная Ошибки в приложении информация Анализ Используемая память события Время Анализ контекста 11
  • 12. 1. Окрыть документ (курсор в первом параграфе). 2. Перемещать курсор вправо, пока он не достигнет начала следующего параграфа. 3. Нажать Backspace. Exp. result: параграфы объединились. 12
  • 13. 13
  • 14. Time Line Testbot File “For test.docx” is focused Press Enter File “For test.docx” is Press Enter focused 14
  • 15. Time Line Testbot File “For test.docx” is focused Press Enter Document is opened Press Press Right Pass Press Right Backspace Cursor is moved Cursor is moved right in Document Paragraphs are paragraph 0 right in paragraph opened merged 0 1 Press Right Cursor is moved right in paragraph 0 Press Right Cursor is moved right in paragraph 1 Press Backspace Paragraphs are merged Pass 15
  • 16. 16
  • 17. Тестирование неограниченного количества документов  Регрессионное тестирование рендеринга  CIT  Интересная работа 17
  • 18. 18
  • 19. Фиксированный набор специально- созданных и реальных документов  Снимаем изображение -> картинки  Проверяем картинки –> сохраняем как эталон  Тестируем этот же набор на следующей сборке  Автоматически сравниваем картинки с эталоном 19
  • 20. 20
  • 21. Использование библиотеки OpenCV для поиска изображения на экране  Использование в диалогах  Зависимость от отображения 21
  • 22. Автоматическая сборка на билд-сервере  Нотификация тест-сервера через Jabber  Объединение тестов в тест-сеты; ассоциация тест-сета и сборки  E-mail нотификации по завершению теста 22
  • 23. 50 45 40 35 30 25 Testbot 20 Sikuli 15 10 5 0 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 23
  • 24.
  • 25. 25
  • 26. Приложение запущено в 3-х отдельных процессах  Не смогли получить информацию о состоянии диалогов в 2-ом и 3-ем процессе  Нет возможности следить за изменениями в документе 26
  • 27. Testpoints Файл логирования Testbot 27
  • 28. Строки для обработки Обработка файла 06:29:36.816 V TESTPOINT: filelist refreshed - ROOT [acco логирования приложения 06:29:36.902 V TESTPOINT: Account is armed in FileSyste 06:33:55.055 V TESTPOINT activity started; [path:/mnt/sd 06:33:55.067 V TESTPOINT: Start loading presentation 06:33:56.708 V TESTPOINT: End loading presentation 06:29:36.683 E Error:Resource 'arrowleft' not found in 'id„ 06:29:36.685 E Error:Resource 'arrowright' not 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 28
  • 29. Лог Time Line A: Document is opened: 1. Document is Document is opened pressRight(); opened pressRight() 2. Cursor is moved Cursor is moved in in paragraph 0 paragraph 0 3. Cursor is moved pressRight() B: Cursor is in paragraph 1 Cursor is moved in moved: 4. Paragraphs are paragraph 1 if (index == 0) merged pressDelete() pressRight(); Paragraphs are merged else Pass(); pressDelete() C: Paragraphs are merged : pass(); 29
  • 30. Лог Time Line A: Starting to load 1. Starting to open Starting to load document document … wait(120); Failed(“Could not onEvent(): load”) setTimeOut(120) onTimeOut(): failed(“Could not load”); 30
  • 31. Лог Time Line A: Starting to load 1. Starting to open Starting to load document document 2. Null pointer wait(120); exception recordStackTrace(); onEvent(): wait(30); setTimeOut(120) Failed(“Could not load”) onTimeOut(): failed(“Could not load”); onError(): recordStackTrace() 31
  • 32. 32
  • 33. Дмитрий Вильнер dmitry.vilner@quickoffice.com Олег Орлов oleg.orlov@quickoffice.com 33