Артем Розуменко - "Как и зачем разрабатывать...

11
Как и зачем делать свой framework Как это делает Артем Розуменко 10/29/2011 1 Dnepr mini conference

Upload: qa-dnepropetrovsk-community-ukraine

Post on 22-May-2015

1.099 views

Category:

Technology


4 download

DESCRIPTION

Все разработчики автоматизированных тестов рано или поздно сталкиваются с проблемой - "то, что есть в тулзе, которую я юзаю, явно не достаточно и надо что-то делать". Мы поговорим с чего начать и чем продолжить, так чтоб получить действительно хорошее решение для автоматизированного тестирования. Обсудим интеграцию с continues integration и реализации систем репортинга. За опорный пример возьму фреймворк на базе Selenium.

TRANSCRIPT

Page 1: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

1

Как и зачем делать свой framework

Как это делает Артем Розуменко

10/29/2011Dnepr mini conference

Page 2: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Dnepr mini conference 2

Начало...

...тваю ж ... и че мне с этим делать?

Page 3: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Dnepr mini conference 3

Попытка не пытка ... шаг 1

JUnit + Selenium

package com.example.tests; import com.thoughtworks.selenium.*; import java.util.regex.Pattern;

public class NewTest extends SeleneseTestCase {

public void setUp() throws Exception { setUp("http://www.google.com/", "*firefox");

} public void testNew() throws Exception {

selenium.open("/"); selenium.type("q", "selenium rc"); selenium.click("btnG"); selenium.waitForPageToLoad("30000"); assertTrue(selenium.isTextPresent("Results * for selenium rc"));

}

}

Локаторы в коде

Пользовательские настройки и

данные зашиты

Page 4: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Dnepr mini conference 4

Отделить мух от котлетLocators.properties

URL = http://www.google.cominput_fld = qSrch_btn = BtnG

User.properties

Browser = *firefoxText_4_srch = selenium rcPageload = 30000Result_txt = Results * for selenium rc

public void setUp() throws Exception { setUp(getProperty(“URL”), getData(“Browser”));

} public void testNew() throws Exception {

selenium.open("/"); selenium.type(getProperty(“input_fld”), getData(“Text_4_srch”)); selenium.click(getProperty(“Srch_btn”)); selenium.waitForPageToLoad(getData(“Pageload”)); assertTrue(selenium.isTextPresent(getData(“Result_txt”));

}

Page 5: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Dnepr mini conference 5

Попытка не пытка ... шаг 2

@before classpublic void setUp() throws Exception { …} @testpublic void openGoogle() throws Exception { …}@testpublic void search4RC() throws Exception { …}@testpublic void openGmail() throws Exception(){…}@testpublic void createAcc() throws Exception(){…}@testpublic void doCreated() throws Exception(){…}@test……@testpublic void deleteAcc() throws Exception(){…}

Receive mail. java

Send mail. java

Registration.java

Как-то много повторений одних и тех же действий ... хмм

Page 6: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Dnepr mini conference 6

Убрать повторения

@testpublic void openGmail() throws Exception(){…}@testpublic void createAcc() throws Exception(){…}@testpublic void doCreated() throws Exception(){…}

Helper.RegisterNewUser(String userName, String pwd)Helper.DeleteUser(String userName, String pwd)

@testpublic void deleteAcc() throws Exception(){…}@testpublic void doDeleted() throws Exception(){…}

Page 7: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Footer Text 7

Це дальссе, насяльника?

И что же получается?

Тест 1

Тест 2

Тест 3

Тест 4

Тест 5

Тест 6

Тест 7

Locator.properties User.properties

Helper 1

Helper 2

Helper 3

Helper 4

Helper 5

Helper 6

Helper 7

Програмный код

Page 8: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Dnepr mini conference 8

Опять мухи и котлеты

Тест 1

Тест 2

Тест 3

Тест 4

Тест 5

Тест 6

Тест 7

Helper 1

Helper 2

Helper 3

Helper 4

Helper 5

Helper 6

Програмный кодТесты

Locator.properties

User.properties

GMail

Page 9: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

04/12/2023Footer Text 9

И как это выглядит?

Test.xls Locator.prop User.propCode.jar

CMD

C:/>java –jar code.jar

Detailed Report.html

Full size screenshots

Report in mail with

small screenshots

Page 10: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

Dnepr mini conference 10

Зачем это все делать?

1. Цена внесения изменений.1.1. Если надо добавить тесты, это делается без вмешательства в код1.2. Если надо изменить код, то при этом не затрагиваются тесты

Цели которые стоит преследовать при создании:

2. Способность интеграции в continues integration model.

3. Развертывание окружения для проведения автоматизированного тестирования должно занимать минимум времени и требовать минимум вспомагательного ПО.

4. Репортинг должен быть полным, понятным и таким, который можно показать не только команде, но и заказчику.

Page 11: Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"

04/12/2023Dnepr mini conference 11

Всем спасибо, вопросы в студию.

С вами был Артем Розуменко

Email: [email protected]: http://qastories.blogspot.com