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

Post on 22-May-2015

1.099 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

1

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

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

10/29/2011Dnepr mini conference

Dnepr mini conference 2

Начало...

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

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"));

}

}

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

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

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

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”));

}

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

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

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(){…}

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

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

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

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

Dnepr mini conference 10

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

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

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

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

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

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

04/12/2023Dnepr mini conference 11

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

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

Email: artyom.rozumenko@gmail.comWeb: http://qastories.blogspot.com

top related