Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Mario Jorge Pereira
Material sobre Java WEB super mão na massa. Vou construindo e alterando uma aplicação durante a apresentação os assuntos cobertos são:
Java Servlet
Java Server Pages - JSP
JavaServer Pages Standard Tag Library - JSTL
Expression Language - EL
Java Database Connectivity - JDBC
Data Access Object - DAO
Model View Controller - MVC
Hibernate
...
Apresento também formas de fugir do sqlinjection
[QE 2015] Mateusz Sulima - Kręta droga do dobrych testówFuture Processing
Wydaje się, że testy automatyczne zagościły w świecie wytwarzania oprogramowania na dobre. Jednak jeśli są one niedostatecznej jakości, szybko mogą stać się obciążeniem przynoszącym więcej szkody niż pożytku. Podczas prezentacji omówię najczęstsze błędy popełniane w testach jednostkowych i integracyjnych przez średnio zaawansowanych praktyków Test-Driven Development. Pokażę problemy wynikające z nieznajomości lub niewłaściwego wykorzystania narzędzi przede wszystkim z rodziny JUnit. Wytłumaczę również pojęcie betonowania oraz kwestię, jak poprawić swoje testy bazy danych i API REST-owych.
Back To The Front - Javascript Test Driven Development is between us (workshop)Marco Cedaro
Javascript & browsers have been for years a complex and unsafe environment for a web developer, now we have the right tools to gain control on what we are distributing in our web applications. During the workshop you will learn first-hand basic Javascript Test Driven Development practices including testing, refactoring and related agile practices such as continuous integration and pair programming.
presented at italian Back To The Front conference /w @sirLisko
Hands-On Java web passando por Servlets, JSP, JSTL, JDBC, Hibernate, DAO, MV...Mario Jorge Pereira
Material sobre Java WEB super mão na massa. Vou construindo e alterando uma aplicação durante a apresentação os assuntos cobertos são:
Java Servlet
Java Server Pages - JSP
JavaServer Pages Standard Tag Library - JSTL
Expression Language - EL
Java Database Connectivity - JDBC
Data Access Object - DAO
Model View Controller - MVC
Hibernate
...
Apresento também formas de fugir do sqlinjection
[QE 2015] Mateusz Sulima - Kręta droga do dobrych testówFuture Processing
Wydaje się, że testy automatyczne zagościły w świecie wytwarzania oprogramowania na dobre. Jednak jeśli są one niedostatecznej jakości, szybko mogą stać się obciążeniem przynoszącym więcej szkody niż pożytku. Podczas prezentacji omówię najczęstsze błędy popełniane w testach jednostkowych i integracyjnych przez średnio zaawansowanych praktyków Test-Driven Development. Pokażę problemy wynikające z nieznajomości lub niewłaściwego wykorzystania narzędzi przede wszystkim z rodziny JUnit. Wytłumaczę również pojęcie betonowania oraz kwestię, jak poprawić swoje testy bazy danych i API REST-owych.
Back To The Front - Javascript Test Driven Development is between us (workshop)Marco Cedaro
Javascript & browsers have been for years a complex and unsafe environment for a web developer, now we have the right tools to gain control on what we are distributing in our web applications. During the workshop you will learn first-hand basic Javascript Test Driven Development practices including testing, refactoring and related agile practices such as continuous integration and pair programming.
presented at italian Back To The Front conference /w @sirLisko
An introduction to jQuery in danish for the danish labour union Prosa.
English version available here: http://www.slideshare.net/Nightreaver/web20-with-jquery-in-english
Une immense majorité de développeurs connaissent jQuery, mais pas vraiment JavaScript. Nous verrons comment faire en pur JS ce que vous avez l’habitude de faire avec jQuery et jQuery UI, en mettant l’accent sur le support par les navigateurs des fonctionnalités JS utilisées, et sur les polyfills disponibles.
Out-of-the-box WebDriver API provides two main classes: WebDriver and WebElement. Webium library helps you to extend it to whatever deep UI object structure you need. You can describe basic elements (e.g. Button, Input), construct complex elements (e.g. Calendar) from small pieces and at the end put it all together into your Page Objects. Webium is free and open-source. In my speech I’ll present your how to use it effectively if you want to write Selenium tests in Python.
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
Мой доклад про создание читабельных отчетов для автоматизации тестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy
Доклад был сделан специально для онлайн конференции Auto ConfeT&QA, прошедшей в октябре 2012 года.
http://confetqa.ru/
======================================
См. также:
Gallio Icarus:
http://gallio.org
BDDfy – фреймворк для БыДиДификации кода :)
Страница проекта на Github:
http://teststack.github.com/TestStack.BDDfy/
Описание на английском:
http://www.mehdi-khalili.com/bddify-in-action/introduction
Framework for Web Automation Testing presentation shows you all the benefits of useage framework constructions in automation tests development for Web project. all the approaches are shown in images.
An introduction to jQuery in danish for the danish labour union Prosa.
English version available here: http://www.slideshare.net/Nightreaver/web20-with-jquery-in-english
Une immense majorité de développeurs connaissent jQuery, mais pas vraiment JavaScript. Nous verrons comment faire en pur JS ce que vous avez l’habitude de faire avec jQuery et jQuery UI, en mettant l’accent sur le support par les navigateurs des fonctionnalités JS utilisées, et sur les polyfills disponibles.
Out-of-the-box WebDriver API provides two main classes: WebDriver and WebElement. Webium library helps you to extend it to whatever deep UI object structure you need. You can describe basic elements (e.g. Button, Input), construct complex elements (e.g. Calendar) from small pieces and at the end put it all together into your Page Objects. Webium is free and open-source. In my speech I’ll present your how to use it effectively if you want to write Selenium tests in Python.
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
Мой доклад про создание читабельных отчетов для автоматизации тестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy
Доклад был сделан специально для онлайн конференции Auto ConfeT&QA, прошедшей в октябре 2012 года.
http://confetqa.ru/
======================================
См. также:
Gallio Icarus:
http://gallio.org
BDDfy – фреймворк для БыДиДификации кода :)
Страница проекта на Github:
http://teststack.github.com/TestStack.BDDfy/
Описание на английском:
http://www.mehdi-khalili.com/bddify-in-action/introduction
Framework for Web Automation Testing presentation shows you all the benefits of useage framework constructions in automation tests development for Web project. all the approaches are shown in images.
По мотивам хабра ( http://habrahabr.ru/post/168645/ ), автор рассмотрит вопрос создания роботов в домашних условиях. Ожидается демонстрация робота в живую, в реальных боевых условиях!!!
52. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private WebElement select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
private Select getSelect() {
return new Select(select);
}
// Other methods using getSelect() method
}
18
53. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private WebElement select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
private Select getSelect() {
return new Select(select);
}
// Other methods using getSelect() method
}
18
54. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private WebElement select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
private Select getSelect() {
return new Select(select);
}
// Other methods using getSelect() method
}
18
55. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private Select select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
// Other methods using select
}
18
56. Отсутствие типизации
public class PageWithSelect {
@FindBy(xpath = "select-xpath")
private Select select;
public PageWithSelect(WebDriver driver) {
PageFactory.initElements(driver, this);
}
// Other methods using select
}
18
110. Матчеры в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
assertThat(searchResultsPage.getSearchResultsBlock(),
exists());
}
41
111. Матчеры в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
assertThat(searchResultsPage.getSearchResultsBlock(),
both(exists()).and(isDisplayed()));
}
42
112. Матчеры в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
String message = String.format(
"Элемент '%s' должен присутсвовать на странице",
searchResultsPage.getSearchResultsBlock()
);
assertThat(message,
searchResultsPage.getSearchResultsBlock(),
exists());
}
43
113. Матчеры в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
String message = String.format(
"Элемент '%s' должен присутсвовать на странице",
searchResultsPage.getSearchResultsBlock()
);
assertThat(message,
searchResultsPage.getSearchResultsBlock(),
exists());
}
Assert: Элемент ‘[FirefoxDriver: firefox on MAC
(e63b162c-853a-a243-999e-2266c9d52499)]’ должен
присутсвовать на странице
43
115. Именование элементов
@Name("Форма поиска")
@Block(@FindBy(className = "b-head-search")) Имя по
public class SearchArrow extends HtmlElement { аннотации
@Name("Поисковая строка")
@FindBy(id = "text")
private TextInput requestInput;
@Name("Кнопка 'Haйти'")
@FindBy(className = "b-form-button__input")
private Button searchButton;
@FindBy(className = "i-popup__content")
private Suggest suggest;
// ...
44
116. Именование элементов
@Name("Форма поиска")
@Block(@FindBy(className = "b-head-search")) Имя по
public class SearchArrow extends HtmlElement { аннотации
@Name("Поисковая строка")
@FindBy(id = "text")
private TextInput requestInput;
@Name("Кнопка 'Haйти'")
@FindBy(className = "b-form-button__input")
private Button searchButton;
@FindBy(className = "i-popup__content") Имя по
private Suggest suggest; названию поля
// ...
44
117. Именование элементов
public class SearchResultsPage {
@FindBy(className = "b-search")
private SearchArrow searchArrow;
@Name("Блок результатов поиска")
private SearchResultsBlock searchResultsBlock;
public SearchResultsPage(WebDriver driver) {
HtmlElementLoader.populatePageObject(this, driver);
}
public void searchFor(String request) {
searchArrow.searchFor(request);
}
public SearchResultsBlock getSearchResultsBlock() {
return searchResultsBlock;
}
}
45
118. Именование элементов
public class SearchResultsPage {
@FindBy(className = "b-search")
private SearchArrow searchArrow;
Переопределение
имени
@Name("Блок результатов поиска")
private SearchResultsBlock searchResultsBlock;
public SearchResultsPage(WebDriver driver) {
HtmlElementLoader.populatePageObject(this, driver);
}
public void searchFor(String request) {
searchArrow.searchFor(request);
}
public SearchResultsBlock getSearchResultsBlock() {
return searchResultsBlock;
}
}
45
119. Имена в тестах
@Test
public void shouldSeeSearchResultsWhenLookingUp() {
searchPage.searchFor("SQA Days");
String message = String.format(
"Элемент '%s' должен присутсвовать на странице",
searchResultsPage.getSearchResultsBlock()
);
assertThat(message,
searchResultsPage.getSearchResultsBlock(),
exists());
}
Assert: Элемент “Блок результатов поиска”
должен присутствовать на странице
46
131. Понятные логи
1.Ввожу в элемент “Поисковая строка”
текст “SQA Days”...
2.Кликаю на элемент “Кнопка ‘Найти’”...
54
132. Понятные логи
1.Ввожу в элемент “Поисковая строка”
текст “SQA Days”...
2.Кликаю на элемент “Кнопка ‘Найти’”...
3.Проверяю наличие элемента “Блок
результатов поиска”...
54
133. Понятные логи
1.Ввожу в элемент “Поисковая строка”
текст “SQA Days”...
2.Кликаю на элемент “Кнопка ‘Найти’”...
3.Проверяю наличие элемента “Блок
результатов поиска”...
Assert: Элемент “Блок результатов поиска”
должен присутствовать на странице
54