Buscar

08 teste de GUI

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Teste de GUI
Prof. André Takeshi Endo
 
Níveis/Fases de Teste
● Teste de Unidade
● Teste de Integração
● Teste de Sistema
 
Teste de GUI
● Casos de teste são elaborados com base na 
interface gráfica de usuário (GUI)
● Verificar se o SUT atende aos requisitos por meio de 
testes que são executados por meio de sua GUI
GUIs
Casos de Teste
teste manual
teste automatizado
 
Teste de GUI
● Casos de teste são elaborados com base na 
interface gráfica de usuário (GUI)
● Verificar se o SUT atende aos requisitos por meio de 
testes que são executados por meio de sua GUI
GUIs
Casos de Teste
teste manual
teste automatizado X
 
Teste de GUI
GUIs
Casos de Teste
teste manual
teste automatizado
 
Como elaborar um teste de GUI?
testador
Conhecimento
sobre o SUT
Casos de Teste
casos de uso
user stories
Critérios funcionais
- Part. em classes de equivalência
- Análise de valor limite
- Tabelas de decisão
- Teste baseado em modelo
- (...)
 
Selenium
● Teste de GUI para aplicações web
– Mais famosa ferramenta de teste de GUI
● Dividida em duas partes
● Selenium IDE
– Ferramenta de capture/replay
– Plugin para o Firefox
● Selenium WebDriver
– Codificar testes automatizados para GUI de 
aplicações Web
● Várias linguagens suportadas
– Java + JUnit
http://www.seleniumhq.org/ 
 
Selenium IDE
● Download em:
– https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/
● No navegador Firefox
Instalar e 
reiniciar.
Menu Ferramentas → 
Selenium IDE
 
Selenium IDE
● Tela do Selenium IDE URL onde começam
os testes.
Velocidade com que 
os testes são 
executados.
Casos de teste
elaborados.
Inicia a gravação
dos testes.
Executa os testes
Comandos gravados.
Ajuda nos comandos.
 
Selenium IDE
● Grave o caso de teste 
● Entre em: https://moodle.utfpr.edu.br/login/index.php
● Acesse como visitante
● Navegue até os cursos da graduação
● Procure pela disciplina “teste de software”
● Verifique (assertiva) que a disciplina existe
 
Selenium IDE
● Ao chegar na opção abaixo adicione o assertTitle
 
Selenium IDE
● Ao chegar na opção abaixo adicione o assertTitle
Os ids são campos
muitas vezes gerados 
dinamicamente. 
Vamos escolher uma
opção pelo rótulo!
 
Selenium IDE
● O teste pode ser salvo
● Pode reexecutá-lo quantas vezes necessário
● Grande quantidade destes testes são difíceis de 
manter (com a evolução do software)
● Em geral, prefere-se programar os testes de GUI ao 
invés de gravá-los
● Menu “arquivo” → exportar teste como → Java / 
JUnit 4 / Webdriver
– Caso de teste em JUnit usando o Selenium 
Webdriver
 
Selenium IDE
● Exercícios
● Gravar alguns testes em páginas web conhecidas
● Reexecutar os testes
● Explorar outros elementos de GUI
– Checkboxes
– Radio buttons
– Comboboxes
– (...)
 
Selenium Webdriver
● Arquitetura
 
Selenium Webdriver
● Instalação
– http://docs.seleniumhq.org/download/ 
● Usar o link direto do Moodle
● Versão 3.0+ precisa do Java versão 8
 
Selenium Webdriver
● Instalação - Chrome instalado na máquina
● Crie um projeto de aplicação Java no NetBeans e 
adicione todos os jars que estão na pasta /lib que 
você descompactou do Selenium
● Chrome Driver
– https://sites.google.com/a/chromium.org/chromedriver/d
ownloads
– Fazer o download e descompactar em uma pasta 
conhecida
● Existem drivers para outros navegadores
– http://www.seleniumhq.org/about/platforms.jsp#browsers 
 
Selenium Webdriver
● Primeiro Teste
 @Test
 public void test01() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 
 driver.get("https://www.google.com.br/");
 WebElement searchInput = driver.findElement( By.name("q") );
 searchInput.sendKeys("teste de software");
 searchInput.submit();
 
 WebDriverWait wait = new WebDriverWait(driver, 10);
 wait.until(new ExpectedCondition<Boolean>() {
 @Override
 public Boolean apply(WebDriver d) {
 return d.getTitle().toLowerCase().startsWith("teste");
 }
 });
 
 assertTrue(driver.getTitle().startsWith("teste de software"));
 driver.close();
 }
 
Selenium Webdriver
● Primeiro Teste
 @Test
 public void test01() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 
 driver.get("https://www.google.com.br/");
 WebElement searchInput = driver.findElement( By.name("q") );
 searchInput.sendKeys("teste de software");
 searchInput.submit();
 
 WebDriverWait wait = new WebDriverWait(driver, 10);
 wait.until(new ExpectedCondition<Boolean>() {
 @Override
 public Boolean apply(WebDriver d) {
 return d.getTitle().toLowerCase().startsWith("teste");
 }
 });
 
 assertTrue(driver.getTitle().startsWith("teste de software"));
 driver.close();
 }
* Espefica onde está o 
Chrome driver
* Instancia a classe que
interage com o browser
 
Selenium Webdriver
● Primeiro Teste
 @Test
 public void test01() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 
 driver.get("https://www.google.com.br/");
 WebElement searchInput = driver.findElement( By.name("q") );
 searchInput.sendKeys("teste de software");
 searchInput.submit();
 
 WebDriverWait wait = new WebDriverWait(driver, 10);
 wait.until(new ExpectedCondition<Boolean>() {
 @Override
 public Boolean apply(WebDriver d) {
 return d.getTitle().toLowerCase().startsWith("teste");
 }
 });
 
 assertTrue(driver.getTitle().startsWith("teste de software"));
 driver.close();
 }
* Espefica o timeout implícito
que o selenium espera quando
tenta recuperar um elemento
via findElement(..)
 
Selenium Webdriver
● Primeiro Teste
 @Test
 public void test01() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 
 driver.get("https://www.google.com.br/");
 WebElement searchInput = driver.findElement( By.name("q") );
 searchInput.sendKeys("teste de software");
 searchInput.submit();
 
 WebDriverWait wait = new WebDriverWait(driver, 10);
 wait.until(new ExpectedCondition<Boolean>() {
 @Override
 public Boolean apply(WebDriver d) {
 return d.getTitle().toLowerCase().startsWith("teste");
 }
 });
 
 assertTrue(driver.getTitle().startsWith("teste de software"));
 driver.close();
 }
* vai para a página
* busca pelo elemento HTML com
name igual a “q”
* preenche o campo com uma
string
* envia o formulário
 
Selenium Webdriver
● Primeiro Teste
 @Test
 public void test01() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
 
 driver.get("https://www.google.com.br/");
 WebElement searchInput = driver.findElement( By.name("q") );
 searchInput.sendKeys("teste de software");
 searchInput.submit();
 
 WebDriverWait wait = new WebDriverWait(driver, 10);
 wait.until(new ExpectedCondition<Boolean>() {
 @Override
 public Boolean apply(WebDriver d) {
 return d.getTitle().toLowerCase().startsWith("teste");
 }
 });
 
 assertTrue(driver.getTitle().startsWith("teste de software"));
 driver.close();
 }
* para verificar se a busca foi realizada,
vamos checar o título da página
* precisamos esperar pelo elemento
para que ele apareça
 
Selenium Webdriver
● Primeiro Teste
 @Test
 public void test01() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 
 driver.get("https://www.google.com.br/");
 WebElement searchInput = driver.findElement( By.name("q") );
 searchInput.sendKeys("teste de software");
 searchInput.submit();
 
 WebDriverWait wait = new WebDriverWait(driver, 10);
 wait.until(new ExpectedCondition<Boolean>() {
 @Override
 public Boolean apply(WebDriver d) {
 return d.getTitle().toLowerCase().startsWith("teste");
 }
 });
 
 assertTrue(driver.getTitle().startsWith("teste de software"));
 driver.close();
 }
* faço uma assertiva do JUnit, verificando
se o título da página começa com a string
fornecida.
* fecho a conexão (fecha o browser)
 
Selenium Webdriver
● Como identificar os elementos (no Chrome)
– TagName, id, name, Xpath, ...
Botão direito no componente
de interesse → inspecionar
 
Selenium Webdriver
● Pegando a expressão em XPath
 
Selenium Webdriver
● Github
 @Test
 public void test02() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 driver.get("https://github.com/");
 
 WebElement signUpButton = driver.findElement( By.xpath("_________________") );
 signUpButton.click();
 
 //check msg: "There were problems creating your account."
 WebElement errorMsg = driver.findElement( By.xpath("___________") );
 assertEquals("There were problems creating your account.", errorMsg.getText().trim());
 
 //check msg: "Login can't be blank"
 WebElement errorMsg02 = driver.findElement( By.xpath("___________") );
 assertEquals("Login can't be blank", errorMsg02.getText().trim());
 
 //fill the username
 WebElement username = driver.findElement( By.id("____________") );
 username.sendKeys("andreendo22");
 
 //click on button "create account"
 WebElement caButton = driver.findElement( By.id("_____________") );
 caButton.click();
 
 try{
 errorMsg02 = driver.findElement( By.xpath("//*[@id=\"signup-form\"]/dl[1]/dd[2]") );
 fail();
 }
 catch(NoSuchElementException e) { }
 driver.close();
 }
 
Selenium Webdriver
● Github
 @Test
 public void test02() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 driver.get("https://github.com/");
 
 WebElement signUpButton = driver.findElement( By.xpath("/html/body/div[4]/div[1]/div/div/div[2]/div[1]/form/button") );
 signUpButton.click();
 
 //check msg: "There were problems creating your account."
 WebElement errorMsg = driver.findElement( By.xpath("//*[@id=\"signup-form\"]/div[2]") );
 assertEquals("There were problems creating your account.", errorMsg.getText().trim());
 
 //check msg: "Login can't be blank"
 WebElement errorMsg02 = driver.findElement( By.xpath("//*[@id=\"signup-form\"]/dl[1]/dd[2]") );
 assertEquals("Login can't be blank", errorMsg02.getText().trim());
 
 //fill the username
 WebElement username = driver.findElement( By.id("user_login") );
 username.sendKeys("andreendo22");
 
 //click on button "create account"
 WebElement caButton = driver.findElement( By.id("signup_button") );
 caButton.click();
 
 try{
 errorMsg02 = driver.findElement( By.xpath("//*[@id=\"signup-form\"]/dl[1]/dd[2]") );
 fail();
 }
 catch(NoSuchElementException e) { }
 driver.close();
 }
 
Selenium Webdriver
● IMC
 @Test
 public void test03() {
 System.setProperty("webdriver.chrome.driver", "/home/utfpr/install/chromedriver");
 WebDriver driver = new ChromeDriver();
 driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
 driver.get("http://www.calcule.net/imc.calculo.indice.de.massa.corporal.a.php");
 
 WebElement altura = driver.findElement( By.id("___") );
 altura.sendKeys("180"); 
 WebElement peso = driver.findElement( By.id("___") );
 peso.sendKeys("7000"); 
 
 Select sexo = new Select( driver.findElement( By.name("___") ) );
 sexo.selectByVisibleText("____");
 
 WebElement calcButton = driver.findElement( By.name("___") );
 calcButton.click();
 
 WebElement resposta = driver.findElement( By.xpath("//*[@id=\"conteudo3\"]/table/tbody/tr/td[3]/p[4]/span/b[5]") );
 
 assertEquals("Normal", resposta.getText().trim());
 driver.close();
 }
 
Bibliografia
● [Pfleeger07] S. L. Pfleeger, “Engenharia de Software: 
Teoria e Prática”, 2007.
● [Pressman11] R. S. Pressman, “Engenharia de Software: 
uma abordagem profissional”, 2011.
● [Sommerville03] I. Sommerville, “Engenharia de 
Software”, 2003.
● [Brooks87] “No Silver Bullet: Essence and Accidents of 
Software Engineering”, 1987. 
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1663532
● [IEEE90] “IEEE Standard Glossary of Software 
Engineering Terminology”, 1990. 
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=159342
 
Bibliografia
● [Myers] G. J. Myers, T. Badgett, C. Sandler, “The art of 
software testing”, 2012.
● [Pezze] M. Pezze, M. Young, “Teste e análise de 
software: Processos, princípios e técnicas”, 2008.
● [DMJ07] DELAMARO, Márcio Eduardo; MALDONADO, 
José Carlos; JINO, Mario. Introdução ao teste de 
software. Rio de Janeiro, RJ: Elsevier, 2007. 394 p. ISBN 
9788535226348.
● [UUU] Materiais didáticos elaborados pelos grupos de 
engenharia de software do ICMC-USP, DC-UFSCAR e 
UTFPR-CP.
 
Bibliografia
● http://startingwithseleniumwebdriver.blogspot.com.br/201
3/11/here-we-try-to-configure-selenium-web.html
● ..
	Slide 1
	Slide 2
	Slide 3
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31

Continue navegando