QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile

Q
Тестовый фреймворк GEB
для тестирования WEB
приложений и Mobile
YaroslavSviatkin
email:yariks@i.ua
http://sviatkin.com
QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile
HtmlElements. Page Object
JDI UI Test Automation Framework
@JSite(domain="https://epam.github.io/JDI/")
publicclassJDIExampleSiteextendsWebSite{
publicstaticHomePagehomePage;
publicstaticLoginFormloginForm;
@FindBy(css=".profile-photo")
publicstaticLabelprofilePhoto;
publicstaticvoidlogin(){
profilePhoto.click();
loginForm.loginAs(newUser());
}
}
Automated Acceptance
Testing with Style
http://www.thucydides.info/#/
QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile
Project structure
Page Object classes
Steps implementation class
Stories classes
Requirements for the
application under test
Organizing requirements
First, you create a model of the features and user stories you intend to implement:
Stories
Features
Confidential
9
Page Objects
Next you will need to implement your page objects. These are almost just run-of-the-mill
WebDriver page objects, but with a few enhancements:
Steps implementation
Now implement the actual test steps using either WebDriver page objects or other test steps. Here you start
thinking about implementation:
A step library
High level steps...
...implemented with Page
Objects
...or with other steps
QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile
Selenide
http://selenide.org
QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile
Geb
http://www.gebish.org
What is Geb?
Geb is a browser automation solution
What can you test with Geb?
• Any web and mobile applications
• App doesn't need to be written in Groovy
go"http://www.google.com"
$("input",name:"q").value("geb")
$("button",name:"btnG").click()
waitFor{$("#search").displayed}
$("h3.r").first().click()
waitFor{title=="Geb-VeryGroovyBrowserAutomation"}
Selector syntax
$("#by-id")
$(".by-class")
$("div",name:"by-attribute")
$("div",text:"Bytext")
$(By.id("some-id"))
$(By.className("some-class"))
$(By.xpath('//p[@class="xpath"]'))
…
title{$(By.xpath(".//h4[@class='titleng-binding']")).text()
assert$("p",1..2)*.text()==["b","c"]
assert$("p",text:~/p./).size()==2
assert$("p",text:startsWith("p")).size()==2
assert$("p.d").previous()==$("p.c")
assert$("p.e").prevAll()==$("p.c").add("p.d")
assert$("p.d").next()==$("p.e")
assert$("p.c").nextAll()==$("p.d").add("p.e")
assert$("p.d").parent()==$("div.b")
assert$("p.c").siblings()==$("p.d").add("p.e")
assert$("div.a").children()==$("div.b").add("div.f")
project { String index -> $(By.xpath("//div[@class=card-item']//h4[@title='${index}']")).click() }
projectPage.project(nameProject)
dynamicallyAdded(wait:true){$("p.dynamic")}
dynamicallyAdded(wait:5,required:false){$("p.dynamic")}
cachedValue(cache:true){value}
helpLink(to:HelpPage){$("a",text:"Help")}
Page Object Model
Page
Module
Control modules
• FormElement
• Checkbox
• Select
• MultipleSelect
• TextInput
• Textarea
• FileInput
• RadioButtons
classExamplePageextendsPage{
staticcontent={
theModule{moduleExampleModule}
}
}
classExampleModuleextendsModule{
staticcontent={
button{$("input",type:"submit")}
}
}
class NotificationModule extends Module {
static content = {
notifocation {
$(By.xpath(".//li[contains(@ng-repeat,'notifications')]")).moduleList(Notification)
}
gotItButton { $(By.xpath(".//button[@ng-click='appCtrl.gotItNotifications()']")) }
}
}
class Notification extends Module {
static content = {
name { $(By.xpath("//h5")).text() }
dete { $(By.xpath("//div[contains(@class,'date')]")).text() }
notification { $(By.xpath("//p")) text() }
}
}
searchResult(required: false, wait: 5) { $(By.xpath("//li/a/strong"))*.text() }
notification { $(By.xpath("//ul[contains(@ng-if,'notifications')]")).module(NotificationModule) }
menuLinksModule(wait: 5) { $(By.xpath("//button[contains(@class,'services')]")).module(MenuLinksModule) }
Verify test at current page
classIdeaCreatePageextendsgeb.Page{
staticat={$("div#create-idea").displayed}
}
staticcontent={
createButton(to:IdeaShowPage){$("input#create")}
}
IdeaCreatePageideaCreatePage=to(IdeaCreatePage)
isAt(IdeaCreatePage)
class LoginPage extends Page {
static url = "access/signin"
static at = { browser.currentUrl.startsWith("https://wwwwwwwwww.com") }
static content = {
userName(wait: 5) { $(By.xpath("//input[@type='text']")) }
userPassword { $(By.xpath("//input[@type='password']")) }
loginError(required: false, wait: 3) { $(By.xpath("//div[@class='error']")).text()
}
loginSubmit { $("button", text: startsWith("Login")).click() }
heading (to:BasePage){ $(By.xpath("//div[@class='info']/h1")).text() }
}
def login(String login, String password) {
userName.firstElement().clear()
userPassword.firstElement().clear()
userName << login
userPassword << password
loginSubmit
}
}
LoginPage loginPage = page(LoginPage)
waitFor examples
waitFor{
$("div.alert").displayed
}
waitFor{
$("div.message").text()=="Updatesuccessful"
}
Mouse interactions
voidmoveRatingSlider(Integerrating){
//Slideris400pixelswideandstartsat1,
//soeachnotchabove1is100pixelsapart
IntegernumPixelsX=(rating-1)*100
interact{
clickAndHold(ratingSliderHandle)
moveByOffset(numPixelsX,0)
release()
}
}
WebElementunderlyingElement=
$('#myElement').getElement(0)
Actionaction=newActions(browser.driver)
.clickAndHold(underlyingElement)
.moveByOffset(15,15)
.release()
.build()
action.perform()
}
Use keyboard
$(".ui-slider-handle")<<Keys.ARROW_RIGHT
Already opened windows
withWindow({title=="Geb-VeryGroovyBrowserAutomation"}){
assert$("#slogan").text().startsWith("verygroovybrowserautomation…")
}
}
withNewWindow({$('a').click()}){
asserttitle=='Geb-VeryGroovyBrowserAutomation'
}
@Test
void feedBackReferenceTest() {
openMenu
browser.withNewWindow({ basePage.menuLinksModule.feedback }, {
assert browser.currentUrl.startsWith("https://helpdesk.com/")
})
}
@Test
void officeMapReferenceTest() {
openMenu
browser.withWindow({ basePage.menuLinksModule.officeMap }, {
if (browser.currentUrl == signinUrl) {
loginPage.login(userName, userPassword)
}
assert browser.currentUrl == "https://portal.com"
})
browser.to(ProjectPage)
}
Show hidden element
void scrollUp() {
js.exec("""window.scrollTo(0,0)""")
}
$("div#a").jquery.mouseover() Browser.drive{
assertjs.myGlobalVar==1
}
Available browsers
waiting {
timeout = 2
}
baseUrl = "https://wwwwwwwww.com/"
autoClearCookies = false
atCheckWaiting = true
baseNavigatorWaiting = true
name = ''
password = ''
mail =''
environments {
chrome {
driver = {
def driverInstance = new ChromeDriver()
driverInstance.manage().window().maximize()
driverInstance
}
}
firefox {
driver = {
def driverInstance = new FirefoxDriver()
driverInstance.manage().window().maximize()
driverInstance
}
}
ie {
driver = {
def driverInstance = new InternetExplorerDriver()
driverInstance.manage().window().maximize()
driverInstance
} }}
//Receiving name and password from GebConfig.groovy
final String userName = browser.config.rawConfig.name
final String userPassword = browser.config.rawConfig.password
task chromeTest(type: Test) {
systemProperty "geb.env", "chrome"
systemProperty "webdriver.chrome.driver", "driverschromedriver.exe"
useTestNG {
suites "srctestresourcestestng-suite.xml"
useDefaultListeners = true
}
}
// Drivers
testCompile "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
testCompile "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion"
testCompile "org.seleniumhq.selenium:selenium-ie-driver:$seleniumVersion"
static String randomString(int count) {
(1..count).inject("") { a, b -> a += ('a'..'z')[new Random().nextFloat() * 26 as int] }.capitalize()
}
def getWanted() {
def result = []
HTTPRequest.request(GET, JSON) { req ->
uri.path = '/wanted'
headers.'Auth' = "${TOKEN}"
response.success = { resp, json ->
println new JsonBuilder( json).toPrettyString()
(json as ArrayList).each {
String name = it.name
def projects = []
(it.projects as ArrayList).each {
projects << [it.projectid.'$oid', it.title]
}
result << [name, projects].flatten()
}
}
}
result
}
List getAllIdProject() {
def result = []
GITLAB.get(path: "/gitlab/api/v3/projects/all") { resp, json ->
println new JsonBuilder(json).toPrettyString()
def request = (json as Map)
result = request*.id
}
result
}
assert loginPage.heading == "Welcome"
Geb integrates with
Geb-mobile
https://github.com/JasonKissinger-MDT/geb-mobile
QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile
email : yariks@i.ua
http://sviatkin.com
1 of 44

Recommended

QA Fest 2017. Яков Крамаренко. Minimum Usable Framework by
QA Fest 2017. Яков Крамаренко. Minimum Usable FrameworkQA Fest 2017. Яков Крамаренко. Minimum Usable Framework
QA Fest 2017. Яков Крамаренко. Minimum Usable FrameworkQAFest
320 views29 slides
jQuery for beginners by
jQuery for beginnersjQuery for beginners
jQuery for beginnersDivakar Gu
594 views33 slides
Hack Day EU 2011 YQL by
Hack Day EU 2011 YQLHack Day EU 2011 YQL
Hack Day EU 2011 YQLJonathan LeBlanc
1.3K views39 slides
Hack with YUI by
Hack with YUIHack with YUI
Hack with YUILuke Smith
2.6K views24 slides
Adding a modern twist to legacy web applications by
Adding a modern twist to legacy web applicationsAdding a modern twist to legacy web applications
Adding a modern twist to legacy web applicationsJeff Durta
354 views57 slides
A Journey with React by
A Journey with ReactA Journey with React
A Journey with ReactFITC
1K views54 slides

More Related Content

What's hot

jQuery Presentation by
jQuery PresentationjQuery Presentation
jQuery PresentationRod Johnson
4.7K views30 slides
Discover React by
Discover ReactDiscover React
Discover ReactMassimo Iacolare
1.3K views95 slides
jQuery Presentation to Rails Developers by
jQuery Presentation to Rails DevelopersjQuery Presentation to Rails Developers
jQuery Presentation to Rails DevelopersYehuda Katz
2.7K views38 slides
Merb jQuery by
Merb jQueryMerb jQuery
Merb jQueryYehuda Katz
1.1K views56 slides
Asynchronous JavaScript & XML (AJAX) by
Asynchronous JavaScript & XML (AJAX)Asynchronous JavaScript & XML (AJAX)
Asynchronous JavaScript & XML (AJAX)Adnan Sohail
4.3K views31 slides
jQuery by
jQueryjQuery
jQueryi.omar
528 views27 slides

What's hot(20)

jQuery Presentation by Rod Johnson
jQuery PresentationjQuery Presentation
jQuery Presentation
Rod Johnson4.7K views
jQuery Presentation to Rails Developers by Yehuda Katz
jQuery Presentation to Rails DevelopersjQuery Presentation to Rails Developers
jQuery Presentation to Rails Developers
Yehuda Katz2.7K views
Asynchronous JavaScript & XML (AJAX) by Adnan Sohail
Asynchronous JavaScript & XML (AJAX)Asynchronous JavaScript & XML (AJAX)
Asynchronous JavaScript & XML (AJAX)
Adnan Sohail4.3K views
jQuery by i.omar
jQueryjQuery
jQuery
i.omar528 views
React.js & Om: A hands-on walkthrough of better ways to build web UIs by Adam Solove
React.js & Om: A hands-on walkthrough of better ways to build web UIsReact.js & Om: A hands-on walkthrough of better ways to build web UIs
React.js & Om: A hands-on walkthrough of better ways to build web UIs
Adam Solove5.9K views
Speed is a feature - Django Meetup Buenos Aires June 2014 by Pablo Mouzo
Speed is a feature - Django Meetup Buenos Aires June 2014Speed is a feature - Django Meetup Buenos Aires June 2014
Speed is a feature - Django Meetup Buenos Aires June 2014
Pablo Mouzo625 views
How to write easy-to-test JavaScript by Ynon Perek
How to write easy-to-test JavaScriptHow to write easy-to-test JavaScript
How to write easy-to-test JavaScript
Ynon Perek1.3K views
The Real Story Behind JavaScript Performance on Mobile... Because Science! by Ryan J. Salva
The Real Story Behind JavaScript Performance on Mobile... Because Science!The Real Story Behind JavaScript Performance on Mobile... Because Science!
The Real Story Behind JavaScript Performance on Mobile... Because Science!
Ryan J. Salva1.1K views
The Django Web Framework (EuroPython 2006) by Simon Willison
The Django Web Framework (EuroPython 2006)The Django Web Framework (EuroPython 2006)
The Django Web Framework (EuroPython 2006)
Simon Willison2.9K views
Cheap tricks for startups by Simon Willison
Cheap tricks for startupsCheap tricks for startups
Cheap tricks for startups
Simon Willison8.5K views
How to identify bad third parties on your page by Charles Vazac
How to identify bad third parties on your pageHow to identify bad third parties on your page
How to identify bad third parties on your page
Charles Vazac605 views
Ajax Fundamentals Web Applications by dominion
Ajax Fundamentals Web ApplicationsAjax Fundamentals Web Applications
Ajax Fundamentals Web Applications
dominion816 views

Similar to QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile

Geb qa fest2017 by
Geb qa fest2017Geb qa fest2017
Geb qa fest2017Sviatkin Yaroslav
182 views44 slides
A test framework out of the box - Geb for Web and mobile by
A test framework out of the box - Geb for Web and mobileA test framework out of the box - Geb for Web and mobile
A test framework out of the box - Geb for Web and mobileGlobalLogic Ukraine
764 views45 slides
A Rich Web Experience with jQuery, Ajax and .NET by
A Rich Web Experience with jQuery, Ajax and .NETA Rich Web Experience with jQuery, Ajax and .NET
A Rich Web Experience with jQuery, Ajax and .NETJames Johnson
417 views37 slides
A Rich Web experience with jQuery, Ajax and .NET by
A Rich Web experience with jQuery, Ajax and .NETA Rich Web experience with jQuery, Ajax and .NET
A Rich Web experience with jQuery, Ajax and .NETJames Johnson
2.8K views33 slides
J query training by
J query trainingJ query training
J query trainingFIS - Fidelity Information Services
429 views33 slides
Building iPhone Web Apps using "classic" Domino by
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoRob Bontekoe
1.6K views21 slides

Similar to QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile(20)

A test framework out of the box - Geb for Web and mobile by GlobalLogic Ukraine
A test framework out of the box - Geb for Web and mobileA test framework out of the box - Geb for Web and mobile
A test framework out of the box - Geb for Web and mobile
A Rich Web Experience with jQuery, Ajax and .NET by James Johnson
A Rich Web Experience with jQuery, Ajax and .NETA Rich Web Experience with jQuery, Ajax and .NET
A Rich Web Experience with jQuery, Ajax and .NET
James Johnson417 views
A Rich Web experience with jQuery, Ajax and .NET by James Johnson
A Rich Web experience with jQuery, Ajax and .NETA Rich Web experience with jQuery, Ajax and .NET
A Rich Web experience with jQuery, Ajax and .NET
James Johnson2.8K views
Building iPhone Web Apps using "classic" Domino by Rob Bontekoe
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
Rob Bontekoe1.6K views
Week 4 - jQuery + Ajax by baygross
Week 4 - jQuery + AjaxWeek 4 - jQuery + Ajax
Week 4 - jQuery + Ajax
baygross908 views
Continuous integration using thucydides(bdd) with selenium by Khyati Sehgal
Continuous integration using thucydides(bdd) with  seleniumContinuous integration using thucydides(bdd) with  selenium
Continuous integration using thucydides(bdd) with selenium
Khyati Sehgal83 views
jQuery in the [Aol.] Enterprise by Dave Artz
jQuery in the [Aol.] EnterprisejQuery in the [Aol.] Enterprise
jQuery in the [Aol.] Enterprise
Dave Artz6K views
jQuery Rescue Adventure by Allegient
jQuery Rescue AdventurejQuery Rescue Adventure
jQuery Rescue Adventure
Allegient 1.5K views
international PHP2011_Bastian Feder_jQuery's Secrets by smueller_sandsmedia
international PHP2011_Bastian Feder_jQuery's Secretsinternational PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secrets
Jquery Complete Presentation along with Javascript Basics by EPAM Systems
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript Basics
EPAM Systems4.8K views

More from QAFest

QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин by
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилинQA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилинQAFest
979 views44 slides
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future by
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQAFest
931 views44 slides
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe... by
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...QAFest
322 views131 slides
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и... by
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QAFest
336 views92 slides
QA Fest 2019. Никита Галкин. Как зарабатывать больше by
QA Fest 2019. Никита Галкин. Как зарабатывать большеQA Fest 2019. Никита Галкин. Как зарабатывать больше
QA Fest 2019. Никита Галкин. Как зарабатывать большеQAFest
389 views40 slides
QA Fest 2019. Сергей Пирогов. Why everything is spoiled by
QA Fest 2019. Сергей Пирогов. Why everything is spoiledQA Fest 2019. Сергей Пирогов. Why everything is spoiled
QA Fest 2019. Сергей Пирогов. Why everything is spoiledQAFest
342 views33 slides

More from QAFest(20)

QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин by QAFest
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилинQA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин
QA Fest 2019. Сергій Короленко. Топ веб вразливостей за 40 хвилин
QAFest979 views
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future by QAFest
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The FutureQA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QA Fest 2019. Анна Чернышова. Self-healing test automation 2.0. The Future
QAFest931 views
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe... by QAFest
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...
QA Fest 2019. Doug Sillars. It's just too Slow: Testing Mobile application pe...
QAFest322 views
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и... by QAFest
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QA Fest 2019. Катерина Спринсян. Параллельное покрытие автотестами и другие и...
QAFest336 views
QA Fest 2019. Никита Галкин. Как зарабатывать больше by QAFest
QA Fest 2019. Никита Галкин. Как зарабатывать большеQA Fest 2019. Никита Галкин. Как зарабатывать больше
QA Fest 2019. Никита Галкин. Как зарабатывать больше
QAFest389 views
QA Fest 2019. Сергей Пирогов. Why everything is spoiled by QAFest
QA Fest 2019. Сергей Пирогов. Why everything is spoiledQA Fest 2019. Сергей Пирогов. Why everything is spoiled
QA Fest 2019. Сергей Пирогов. Why everything is spoiled
QAFest342 views
QA Fest 2019. Сергей Новик. Между мотивацией и выгоранием by QAFest
QA Fest 2019. Сергей Новик. Между мотивацией и выгораниемQA Fest 2019. Сергей Новик. Между мотивацией и выгоранием
QA Fest 2019. Сергей Новик. Между мотивацией и выгоранием
QAFest249 views
QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н... by QAFest
QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н...QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н...
QA Fest 2019. Владимир Никонов. Код Шредингера или зачем и как мы тестируем н...
QAFest338 views
QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV... by QAFest
QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV...QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV...
QA Fest 2019. Владимир Трандафилов. GUI automation of WEB application with SV...
QAFest227 views
QA Fest 2019. Иван Крутов. Bulletproof Selenium Cluster by QAFest
QA Fest 2019. Иван Крутов. Bulletproof Selenium ClusterQA Fest 2019. Иван Крутов. Bulletproof Selenium Cluster
QA Fest 2019. Иван Крутов. Bulletproof Selenium Cluster
QAFest282 views
QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе... by QAFest
QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе...QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе...
QA Fest 2019. Николай Мижигурский. Миссия /*не*/выполнима: гуманитарий собесе...
QAFest251 views
QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз... by QAFest
QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз...QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз...
QA Fest 2019. Володимир Стиран. Чим раніше – тим вигідніше, але ніколи не піз...
QAFest301 views
QA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automation by QAFest
QA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automationQA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automation
QA Fest 2019. Дмитрий Прокопук. Mocks and network tricks in UI automation
QAFest225 views
QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в... by QAFest
QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в...QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в...
QA Fest 2019. Екатерина Дядечко. Тестирование медицинского софта — вызовы и в...
QAFest243 views
QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa... by QAFest
QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa...QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa...
QA Fest 2019. Катерина Черникова. Tune your P’s: the pop-art of keeping testa...
QAFest376 views
QA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях IT by QAFest
QA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях ITQA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях IT
QA Fest 2019. Алиса Бойко. Какнезапутаться в коммуникативных сетях IT
QAFest209 views
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложении by QAFest
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложенииQA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложении
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложении
QAFest607 views
QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр... by QAFest
QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр...QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр...
QA Fest 2019. Катерина Шепелєва та Інна Оснач. Що українцям потрібно знати пр...
QAFest321 views
QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр... by QAFest
QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр...QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр...
QA Fest 2019. Антон Серпутько. Нагрузочное тестирование распределенных асинхр...
QAFest296 views
QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22 by QAFest
QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22
QA Fest 2019. Петр Тарасенко. QA Hackathon - The Cookbook 22
QAFest164 views

Recently uploaded

Creative Restart 2023: Christophe Wechsler - From the Inside Out: Cultivating... by
Creative Restart 2023: Christophe Wechsler - From the Inside Out: Cultivating...Creative Restart 2023: Christophe Wechsler - From the Inside Out: Cultivating...
Creative Restart 2023: Christophe Wechsler - From the Inside Out: Cultivating...Taste
39 views34 slides
Interaction of microorganisms with vascular plants.pptx by
Interaction of microorganisms with vascular plants.pptxInteraction of microorganisms with vascular plants.pptx
Interaction of microorganisms with vascular plants.pptxMicrobiologyMicro
75 views33 slides
What is Digital Transformation? by
What is Digital Transformation?What is Digital Transformation?
What is Digital Transformation?Mark Brown
46 views11 slides
Guess Papers ADC 1, Karachi University by
Guess Papers ADC 1, Karachi UniversityGuess Papers ADC 1, Karachi University
Guess Papers ADC 1, Karachi UniversityKhalid Aziz
109 views17 slides
ppt_dunarea.pptx by
ppt_dunarea.pptxppt_dunarea.pptx
ppt_dunarea.pptxvvvgeorgevvv
68 views5 slides

Recently uploaded(20)

Creative Restart 2023: Christophe Wechsler - From the Inside Out: Cultivating... by Taste
Creative Restart 2023: Christophe Wechsler - From the Inside Out: Cultivating...Creative Restart 2023: Christophe Wechsler - From the Inside Out: Cultivating...
Creative Restart 2023: Christophe Wechsler - From the Inside Out: Cultivating...
Taste39 views
Interaction of microorganisms with vascular plants.pptx by MicrobiologyMicro
Interaction of microorganisms with vascular plants.pptxInteraction of microorganisms with vascular plants.pptx
Interaction of microorganisms with vascular plants.pptx
What is Digital Transformation? by Mark Brown
What is Digital Transformation?What is Digital Transformation?
What is Digital Transformation?
Mark Brown46 views
Guess Papers ADC 1, Karachi University by Khalid Aziz
Guess Papers ADC 1, Karachi UniversityGuess Papers ADC 1, Karachi University
Guess Papers ADC 1, Karachi University
Khalid Aziz109 views
Artificial Intelligence and The Sustainable Development Goals (SDGs) Adoption... by BC Chew
Artificial Intelligence and The Sustainable Development Goals (SDGs) Adoption...Artificial Intelligence and The Sustainable Development Goals (SDGs) Adoption...
Artificial Intelligence and The Sustainable Development Goals (SDGs) Adoption...
BC Chew40 views
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE... by Nguyen Thanh Tu Collection
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...
BÀI TẬP BỔ TRỢ TIẾNG ANH 11 THEO ĐƠN VỊ BÀI HỌC - CẢ NĂM - CÓ FILE NGHE (FRIE...
Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf by TechSoup
 Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf
Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf
TechSoup 67 views
UNIT NO 13 ORGANISMS AND POPULATION.pptx by Madhuri Bhande
UNIT NO 13 ORGANISMS AND POPULATION.pptxUNIT NO 13 ORGANISMS AND POPULATION.pptx
UNIT NO 13 ORGANISMS AND POPULATION.pptx
Madhuri Bhande48 views
ANGULARJS.pdf by ArthyR3
ANGULARJS.pdfANGULARJS.pdf
ANGULARJS.pdf
ArthyR354 views
Research Methodology (M. Pharm, IIIrd Sem.)_UNIT_IV_CPCSEA Guidelines for Lab... by RAHUL PAL
Research Methodology (M. Pharm, IIIrd Sem.)_UNIT_IV_CPCSEA Guidelines for Lab...Research Methodology (M. Pharm, IIIrd Sem.)_UNIT_IV_CPCSEA Guidelines for Lab...
Research Methodology (M. Pharm, IIIrd Sem.)_UNIT_IV_CPCSEA Guidelines for Lab...
RAHUL PAL45 views

QA Fest 2017. Ярослав Святкин. Тестовый фреймворк GEB для тестирования WEB приложений и Mobile