32
Автоматизация тестирования многопоточности Андрей Иваровский. Глойп.

Автоматизация тестирования многопоточности

  • Upload
    sqalab

  • View
    1.125

  • Download
    4

Embed Size (px)

DESCRIPTION

Доклад Андрея Иваровского на конференции SQA Days-12, 30 ноября-1 декабря, Минск

Citation preview

Page 1: Автоматизация тестирования многопоточности

Автоматизация тестированиямногопоточности

Андрей Иваровский. Глойп.

Page 2: Автоматизация тестирования многопоточности

Содержание

1. Зачем нужны многопоточные автотесты?

2. Как это делают “ручные” тестировщики

3. Как это делают разработчики

4. Как это делаю я

5. Описание сценария

6. Выполнение сценария

7. Шаблоны

8. Выводы

Page 3: Автоматизация тестирования многопоточности

1. Зачем нужны многопоточные автотесты?

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

Page 4: Автоматизация тестирования многопоточности

1. Зачем нужны многопоточные автотесты?

Лучший способ тестирования многопоточного кода - это убрать многопоточность.

© Энтони Уильямс

Page 5: Автоматизация тестирования многопоточности

1. Зачем нужны многопоточные автотесты?

1. Когда тесты нельзя выполнить в одном потокеТребования бизнес-логики приложения обязывают выполнять

тесты параллельно – в несколько потоков одновременно.

2. Если тестов очень много + они зависят друг от другаПараллельный запуск тестов значительно уменьшает время

прохождения набора тестов.

3. При тестировании производительностиТребуется проверить, как ведет себя

приложение при большом количестве пользователей, работающих с ним одновременно.

Page 6: Автоматизация тестирования многопоточности

1. Зачем нужны многопоточные автотесты?

Пример #1: интернет-мессенджер

Page 7: Автоматизация тестирования многопоточности

1. Зачем нужны многопоточные автотесты?

Пример #2: пуск ракет

Page 8: Автоматизация тестирования многопоточности

1. Зачем нужны многопоточные автотесты?

Пример #3: автоматизированные системы управления войсками

Page 9: Автоматизация тестирования многопоточности

2. Как это делают “ручные” тестировщики

Способ #1: тестировщик выполняет тесты последовательно, один за другим

Page 10: Автоматизация тестирования многопоточности

Способ #2: тестировщик использует средство виртуализации, например vmware, и выполняет несколько тестов одновременно

2. Как это делают “ручные” тестировщики

Page 11: Автоматизация тестирования многопоточности

Способ #3: несколько “ручных” тестировщиков тестируют приложение одновременно и согласованно

2. Как это делают “ручные” тестировщики

Page 12: Автоматизация тестирования многопоточности

3. Как это делают разработчики

Тестирующая логика в:

• В одном потоке• В нескольких потоках

- тестируемый поток

- тестирующий поток

Page 13: Автоматизация тестирования многопоточности

3. Как это делают разработчики

Промышленный стандарт:

• Большой тираж• Надежность в эксплуатации• Низкие затраты

Page 14: Автоматизация тестирования многопоточности

3. Как это делают разработчики

Промышленный стандарт:

Решение должно быть простым и надежным!

Page 15: Автоматизация тестирования многопоточности

3. Как это делают разработчики

Промышленный стандарт:

Логика приложения описывается в xml-файлах, называемых обычно сценариями.

Теги сценария связываются с определенными классами.

В классах нет условной логики, - только набор операторов. Операторы if и switch – не используются.

Используется уже готовый “движок” для запуска сценариев.

Page 16: Автоматизация тестирования многопоточности

3. Как это делают разработчики

“Custom-ная” разработка:

изобретается свой “велосипед” – используются методы и многопоточного программирования: в коде создаются потоки и/или процессы.

Page 17: Автоматизация тестирования многопоточности

3. Как это делают разработчики

“Custom-ная” разработка:

изобретается свой “велосипед” – используются методы и многопоточного программирования: в коде создаются потоки и/или процессы.

Создание классов, реализующих интерфейс Runnable Класс Thread Блокировки контекста И так далее…

Все это слишком сложно!

Page 18: Автоматизация тестирования многопоточности

4. Как это делаю я

1. Описание сценария

2. Разработка тестовых методов

3. Запуск сценариев на vmware

4. Анализ логов

Page 19: Автоматизация тестирования многопоточности

5. Описание сценария

Граф (дерево)Test1:Test2, Test3;Test3:Test4, Test5;Test5:Test6, Test7, Test8.

Page 20: Автоматизация тестирования многопоточности

5. Описание сценария

Граф (дерево)

Scenario.xml

<test name=“Test1” predecessor=“” />

<test name=“Test2” predecessor=“Test1” />

<test name=“Test3” predecessor=“Test1” />

<test name=“Test4” predecessor=“Test3” />

<test name=“Test5” predecessor=“Test3” />

<test name=“Test6” predecessor=“Test5” />

<test name=“Test7” predecessor=“Test5” />

<test name=“Test8” predecessor=“Test5” />

Page 21: Автоматизация тестирования многопоточности

5. Описание сценария

BPMN - Business Process Model and Notation, нотация и модель бизнес-процессов

Page 22: Автоматизация тестирования многопоточности

5. Описание сценария

TestNG

<suite name="Call." thread-count="2" parallel="tests" preserve-order="true" > <test name="User1.Call." >

<parameter name="loginname" value="user1"/> <classes> <class name="tests.TestCall" />

</classes></test>

<test name="User2.Call." > <parameter name="loginname" value="user2"/>

<classes> <class name="tests.TestCall" />

</classes></test>

</suite>

Page 23: Автоматизация тестирования многопоточности

6. Выполнение сценария

BPMN-”движок”, использующий web-сервисы: например Intalio

Сценарий Intalio

Web-сервисы

Пул VM

Page 24: Автоматизация тестирования многопоточности

6. Выполнение сценария

Используется самый простой “движок” - Sarasvati

Сценарий Sarasvati

Java-классы

Пул VM

Page 25: Автоматизация тестирования многопоточности

6. Выполнение сценария

Используется фреймворк TestNG

Сценарий Ant + TestNG

Тесты

Пул VM

Page 26: Автоматизация тестирования многопоточности

6. Выполнение сценария

Для запуска сценариев пишется свой “движок”

Сценарий“Самописный

движок”

Тесты

Пул VM

Page 27: Автоматизация тестирования многопоточности

Шаблон №1: Ant + TestNG + Selenium WD

7. Шаблоны

Framework + testng tests

AntTestng

task

Testng scenario .x

ml

ReportNGVIX vmrun

Selenium WD+AutoIT

SeleniumServer

VM

Page 28: Автоматизация тестирования многопоточности

Шаблон №1: Ant + TestNG + Selenium WD

7. Шаблоны

1. Ant запускает testng задачу

2. Выполняется testng сценарий

3. При помощи vix vmrun идет управление виртуальными машинами: включить, выключить, перезагрузить, снять скриншот и т.д.

4. На виртуальных машинах запускается Selenium Server

5. Тестовые методы, используя Selenium WD, через Selenium Server взаимодействуют с UI приложения на виртуальных машинах

6. Для взаимодействия с win-приложениями используются откомпилированные скипты AutoIT, которые запускаются на виртуальных машинах через vix vmrun

7. При помощи библиотеки ReportNG создаются отчеты

Page 29: Автоматизация тестирования многопоточности

Шаблон №2: JSP + DB + VBS + QTP

7. Шаблоны

JSP web.app.

DB

VBS+ QTP

VM

Tomcat

VIX vmrun

Daemon

Browser

Page 30: Автоматизация тестирования многопоточности

Шаблон №2: JSP + DB + VBS + QTP

7. Шаблоны

1. Для управления запусками тестов, а также отображения результатов используется веб-приложение, написанное на JSP. Веб-приложение деплоится на любой веб-сервер, поддерживающий JSP, например Tomcat.

2. При выборе теста и нажатии кнопки “Пуск” серверная часть JSP приложения находит соответствующий xml сценарий и запускает тесты в определенном порядке на указанных в сценарии виртуальных машинах.

3. Для взаимодействия с виртуальной машиной используется vix vmrun.

4. Для операции с UI тестируемого приложения используются QTP-скрипты, которые запускаются при помощи vbs на виртуальных машинах.

5. Информация о запланированных, текущих и уже прошедших запусках, о состоянии виртуальных машин хранится в базе данных.

6. Для управления очередью задач на запуск используется daemon-приложение, которое отслеживает запуски через базу данных.

7. Отчеты о запусках генерируются при помощи запросов к базе данных, выполняемых JSP приложением.

Page 31: Автоматизация тестирования многопоточности

Для описания многопоточных сценариев лучше использовать XML

Запуск многопоточных автотестов следует осуществлять через уже написанный “движок”. Например TestNG

Не использовать в коде тестов условной логики – она должна быть помещена в XML-сценарий

Не использовать при написании кода методы многопоточного программирования (не создавать новые потоки)

Использовать средства виртуализации. Например vmware

8. Выводы

Page 32: Автоматизация тестирования многопоточности

Контакты:

Email: [email protected] Skype: andrew.ivarouski Mobile: (+375 29) 705 00 28 Web: www.runteo.ru

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