Проблемы автоматизируемости тестирования и их решения Круглый стол

Содержание

Слайд 2

О докладчике Илья Фомин – Руководитель группы автоматизации @ Align Technology,

О докладчике
Илья Фомин – Руководитель группы автоматизации @ Align Technology, Inc.
E-mail

(work)………………ifomin@aligntech.com
E-mail (personal)………….ilya@4min.org
Profile………………….......http://i-fomin.moikrug.ru/


Слайд 3

Постановка проблемы

Постановка проблемы

Слайд 4

Постановка проблемы

Постановка проблемы

Слайд 5

Постановка проблемы Автоматизируемость: Тесткейз, или Вид тестирования, или Операция с системой

Постановка проблемы

Автоматизируемость:
Тесткейз, или
Вид тестирования, или
Операция с системой
Выполняется вручную или планируется
Нужно заменить

на скрипт/программу
Слайд 6

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

Постановка проблемы

Типичный тест кейз:
Установка начальных условий
конфигурация системы, подготовка данных
Выполнение необходимых действий
Осуществление

проверок
Постобработка
сбор статистики, очистка и т.д.
Можно автоматизировать один, несколько, или все пункты
Слайд 7

Постановка проблемы Что можно автоматизировать? Последовательность действий/проверок На доступном вам приложении

Постановка проблемы

Что можно автоматизировать?
Последовательность действий/проверок
На доступном вам приложении
Формализованную
Выполнимую
Если все условия выше

выполнены, но автоматизировать не получается, то у вас...
проблема
Слайд 8

Технические методы решения

Технические методы решения

Слайд 9

Технические методы решения RTFM! (Manual) RTFF! (Forums) RTFG! (Google)

Технические методы решения

RTFM! (Manual)
RTFF! (Forums)
RTFG! (Google)


Слайд 10

Технические методы решения Использование другого тула Обзоры: http://goo.gl/IRvm0 http://goo.gl/BWzV1

Технические методы решения

Использование другого тула
Обзоры:
http://goo.gl/IRvm0 http://goo.gl/BWzV1


Слайд 11

Технические методы решения Вызов операций нижнего уровня Найти onClick() и вызвать

Технические методы решения

Вызов операций нижнего уровня
Найти onClick() и вызвать
Распарсить код страницы
Сформировать

POST, отправить, проанализировать ответ


Слайд 12

Технические методы решения Инъекции кода В клиент В БД

Технические методы решения

Инъекции кода
В клиент
В БД


Слайд 13

Технические методы решения Инъекции кода – пример: pageObj.object.parentWindow.execScript( _ "var httpReq;"

Технические методы решения

Инъекции кода – пример:
pageObj.object.parentWindow.execScript( _
"var httpReq;" &_
"httpReq = new

XMLHttpRequest();" &_
"httpReq.open(""GET"", """ & url & """, false);" &_
"httpReq.setRequestHeader(""Cache-Control"", ""no-cache"");" &_
"httpReq.send(null);" &_
"window.receivedResponse = httpReq.responseText;" )
responseXmlText = pageObj.object.parentWindow.receivedResponse


Слайд 14

Технические методы решения Замена действий синонимами Горячие клавиши Hardware replay Буфер обмена OCR

Технические методы решения

Замена действий синонимами
Горячие клавиши
Hardware replay
Буфер обмена
OCR


Слайд 15

Технические методы решения Замена действий - пример .Type micDwn &_ micDwn

Технические методы решения

Замена действий - пример
.Type micDwn &_
micDwn &_
micDwn

&_
micReturn
Clipboard:
Set objHTML = CreateObject("InternetExplorer.Application")
objHTML.Document.ParentWindow.ClipboardData


Слайд 16

Технические методы решения Проблемы технических методов? Нужно самостоятельно гарантировать эквивалентность ручному

Технические методы решения

Проблемы технических методов?
Нужно самостоятельно гарантировать эквивалентность ручному тестированию. Обычно

гарантом выступает репутация вендора
Чаще всего сложно и долго
Не переносимо между технологиями


Слайд 17

Административные методы решения

Административные методы решения

Слайд 18

Административные методы решения Компромисс Комбинация с ручными проверками Точки остановки и

Административные методы решения

Компромисс
Комбинация с ручными проверками
Точки остановки и синхронизации
Скриншоты
Подробные и удобно

читаемые отчеты
Описание проверок прямо в отчетах скриптов
Downstream проверки интеграционных точек
Data Driven Testing


Слайд 19

Административные методы решения Просите помощи у разработчиков (или Agile в действии :)

Административные методы решения

Просите помощи у разработчиков (или Agile в действии :)


Слайд 20

Административные методы решения Просите помощи у разработчиков Написание сложных алгоритмов Имплементация

Административные методы решения

Просите помощи у разработчиков
Написание сложных алгоритмов
Имплементация необходимых интерфейсов
Любые

правки, повышающие тестабилити


Слайд 21

Административные методы решения Просите помощи у разработчиков: Backdoor-интерфейсы

Административные методы решения

Просите помощи у разработчиков:
Backdoor-интерфейсы


Слайд 22

Административные методы решения Просите помощи у разработчиков: Backdoor-интерфейсы

Административные методы решения

Просите помощи у разработчиков:
Backdoor-интерфейсы


Слайд 23

Административные методы решения Просите помощи у разработчиков заранее Прототип каждой программы,

Административные методы решения

Просите помощи у разработчиков заранее
Прототип каждой программы, использующей новую

технологию, обязателен к изучению


Слайд 24

Административные методы решения 100%ная автоматизация 70% 30%

Административные методы решения

100%ная автоматизация


70%

30%

Слайд 25

Административные методы решения 100%ная автоматизация Существует? 70% 30% 20% 80%

Административные методы решения

100%ная автоматизация
Существует?


70%

30%

20%

80%

Слайд 26

Административные методы решения 100%ная автоматизация Существует? 70% 30% 99.999%

Административные методы решения

100%ная автоматизация
Существует?


70%

30%

99.999%

Слайд 27

Административные методы решения 100%ная автоматизация Существует! Нужно только правильно выбрать 100% 70% 30% 100%

Административные методы решения

100%ная автоматизация
Существует!
Нужно только правильно выбрать 100%


70%

30%

100%

Слайд 28

Административные методы решения - Что нужно автоматизировать? - А нужно ли

Административные методы решения

- Что нужно автоматизировать?
- А нужно ли автоматизировать именно

это?
Если автоматизировать трудно:
Переформулируйте задачу так, чтобы добиться автоматизируемости
... или даже
Сформулируйте задачу так, чтобы она уже была автоматизирована!


Слайд 29

Административные методы решения Нужно ли вообще выполнять данный вид тестирования? Насколько

Административные методы решения

Нужно ли вообще выполнять данный вид тестирования?
Насколько проблемная область?


Если не было ни одного бага, нужно ли тестировать?
Рассмотрите другие подходы:
Анализ исходного кода и ресурсов
Модульные тесты
Отслеживание зависимостей, тестирование только измененного функционала
Идеи в аудитории?


Слайд 30

Что нужно автоматизировать

Что нужно автоматизировать

 


Слайд 31

Что нужно автоматизировать Profit от автоматизации: Экономия ресурсов Ускорение выполнения Увеличение

Что нужно автоматизировать

Profit от автоматизации:
Экономия ресурсов
Ускорение выполнения
Увеличение скорости реакции
Выполнение в нерабочее

время
Действия (практически) невозможно провести вручную
Устранение скучной работы


Слайд 32

Что нужно автоматизировать Loss от автоматизации: Покупка тулов Обучение Разработка/доработка инфраструктуры

Что нужно автоматизировать

Loss от автоматизации:
Покупка тулов
Обучение
Разработка/доработка инфраструктуры
Написание скриптов
Поддержка скриптов и пользователей
Запуски,

анализ отчетов


Слайд 33

Что нужно автоматизировать

Что нужно автоматизировать


 

Слайд 34

Выход из тупика. Разбор полетов. Или рассказ об обновлении FTPC

Выход из тупика. Разбор полетов.

Или рассказ об обновлении FTPC

Слайд 35

Выход из тупика. Разбор полетов. DataSweep Shop Advantage 6.1 -> Rockwell Factory Talk Production Centre 8.1

Выход из тупика. Разбор полетов.

DataSweep Shop Advantage 6.1 -> Rockwell Factory Talk

Production Centre 8.1


Слайд 36

Выход из тупика. Разбор полетов. Появившиеся проблемы (QTP 10)

Выход из тупика. Разбор полетов.

Появившиеся проблемы (QTP 10)


Слайд 37

Выход из тупика. Разбор полетов. Появившиеся проблемы (QTP 10)

Выход из тупика. Разбор полетов.

Появившиеся проблемы (QTP 10)


Слайд 38

Выход из тупика. Разбор полетов. Появившиеся проблемы (QTP 10) JavaList has

Выход из тупика. Разбор полетов.

Появившиеся проблемы (QTP 10)
JavaList has no parents.
Messed

hierarchy
Objects are identified as disabled, though they are not
JavaButton "OK" is identified as JavaList
И другие схожие проблемы...
...проявляющиеся в 1-5% случаев
Лечится переоткрытием окна/таба, иногда – ручным кликом по заголовку


Слайд 39

Выход из тупика. Разбор полетов. Что известно: Обновленная версия Java (1.5)

Выход из тупика. Разбор полетов.

Что известно:
Обновленная версия Java (1.5)
Минимальные изменения кода
Обновленная

версия сервера приложений (WebSpere)
Скрипты LoadRunner перестали работать


Слайд 40

Выход из тупика. Разбор полетов. Предпринятые шаги (workarounds): Переопределение .Exist (включили

Выход из тупика. Разбор полетов.

Предпринятые шаги (workarounds):
Переопределение .Exist (включили .Activate)
Перенос части

интерфейсных проверок в БД
Упрощение дозапуска скриптов
Упрощенный и автоматизированный запуск регрессии


Слайд 41

Выход из тупика. Разбор полетов. Предпринятые шаги (конфигурация): Написание простого теста,

Выход из тупика. Разбор полетов.

Предпринятые шаги (конфигурация):
Написание простого теста, воспроизводящего проблему

(Logon/Logoff)
Чистая последняя инсталляция QTP 10
Инсталляция QTP 11
Разные версии Java 1.4-1.6
Попробовали TestComplete (работает, но иногда вылетает)


Слайд 42

Выход из тупика. Разбор полетов. Предпринятые шаги (с разработчиками): Запуск клиента

Выход из тупика. Разбор полетов.

Предпринятые шаги (с разработчиками):
Запуск клиента FTPC через

апплет и jnlp
Несколько версий FTPC (8.0, 8.1, 8.2, 9.0)
Вызов сборщика мусора (GC) через .Object
Общение с поддержкой Rockwell
Поиск потенциальных проблем в коде


Слайд 43

Выход из тупика. Разбор полетов. Новая информация: JRE скачивается FTPC самостоятельно,

Выход из тупика. Разбор полетов.

Новая информация:
JRE скачивается FTPC самостоятельно, установленная версия

не имеет значения
Скрипты LoadRunner сломались из-за использования объектов IBM JM
IBM JM скачивается клиентом вместе с Sun
FTPC 8.1, установленный на WebSphere требует IBM JM, а 6.1 – нет
FTPC 8.x на Jboss/WebLogic не требует IBM


Слайд 44

Выход из тупика. Разбор полетов. Пробуем Jboss ………….

Выход из тупика. Разбор полетов.

Пробуем Jboss ………….


Слайд 45

Выход из тупика. Разбор полетов. Решение: На каждый тестовый стенд установлен

Выход из тупика. Разбор полетов.

Решение:
На каждый тестовый стенд установлен дополнительный сервер

FTPC/Jboss
Запущен проект по полному переходу на Jboss
Jboss еще и стоит существенно дешевле WebSphere


Слайд 46

End Function

End Function