View
1.102
Download
4
Embed Size (px)
DESCRIPTION
Все разработчики автоматизированных тестов рано или поздно сталкиваются с проблемой - "то, что есть в тулзе, которую я юзаю, явно не достаточно и надо что-то делать". Мы поговорим с чего начать и чем продолжить, так чтоб получить действительно хорошее решение для автоматизированного тестирования. Обсудим интеграцию с continues integration и реализации систем репортинга. За опорный пример возьму фреймворк на базе Selenium.
Citation preview
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: [email protected]: http://qastories.blogspot.com