Please download to get full document.

View again

All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Share
Transcript
   / 46  page objects_ O                          -           -                                 -          -                                        -                                                         -                  -                  -        Testes de Interface com o Usuário (UI)         -          -                                            -         -                          -                                 - PAGE OBJECTS Organizando seus Testes Funcionais         AUMENTANDO A MANUTENIBILIDADE DE TESTES FUNCIONAIS ATRAVÉS DA ORIENTAÇÃO A OBJETOS.   Testes são parte fundamental do processo de desenvolvimento de software. Testes são criados com o objetivo de garantir que os re-quisitos funcionais de um sistema são atendidos. Contudo, testar a interface de uma aplicação (especialmente Web) não é algo tri-vial. Ferramentas, como o Selenium, foram criadas com o objetivo de automatizar o processo de reprodução das ações de navegação em uma aplicação. O problema é que estas ferramentas automati- zadas nem sempre geram um código simples de se manter. Como solução para este problema, apresentamos o design pattern Page Object que tem como objetivo aplicar as técnicas da programação orientada a objetos aos testes funcionais.   47 \  Eder Ignatowicz | @ederign  Doutorando em Engenharia Elétrica na Unicamp, é mestre em Engenharia Elétrica pela Unicamp (2009) e formado em Ciência da Computação pela Universidade  Estadual de Londrina (2007). Atualmente é engenheiro de Software na Dextra Sistemas e leciona diversos cursos de  graduação e pós-graduação na Faccamp e Unisal e editor do InfoQ Brasil. Leandro Guimarães | @leguimas  Biólogo formado pela Unicamp (2007) e técnico em Processamento de Dados formado pelo Colégio Técnico da Unicamp (1999). Atua com de-senvolvimento de software há 11 anos sendo 8 deles com Java. Atualmente, é engenheiro de Software na Dextra Sistemas.         -                                                                                  -                          Utilizando Page Objects                  -         -           -                   -            -                                             »  Encapsulamento de detalhes da implementação:           -           -           -                         -                  -                      -           »  Métodos representam serviços:                                         »                 Figura 1.  Representação do pattern Page Object: as páginas de busca do Google são representadas por objetos PageObject que forne-cem métodos públicos, encapsulando os detalhes para manipulação da página e disponibilizando o acesso aos diversos testes que a utilizam.   / 48      »  Métodos retornam outros Page Objects:   -                   -                    -       -                  -                      -               -                  -         -                         Implementando o padrão          -              -                     sua    -                                -                                -                    Listagem 1.  Classe que implementa o teste a ser execu-tado. public   class  TestaMecanismoBusca {  private   static  WebDriver driver; @BeforeClass  public   static    void   preparaTestes () {           // browsers. Nesse caso        driver = new    FirefoxDriver (); } @Test  public    void   testaBuscaSeleniumTest () { PaginaDeBusca paginaDeBusca = PaginaDeBusca. acessa (driver); PaginaDeResultadoDaBusca paginaDeResultadoDaBusca = paginaDeBusca. realizaBusca ( “selenium test”); Assert. assertTrue (paginaDeResultadoDaBusca . encontrouSite (“seleniumhq.org”)); } @Test  public    void   testaBuscaPageObjectPattern () { PaginaDeBusca paginaDeBusca = PaginaDeBusca. acessa (driver); PaginaDeResultadoDaBusca paginaDeResultadoDaBusca = paginaDeBusca. realizaBusca  (“pageobject pattern”); Assert. assertTrue (paginaDeResultadoDaBusca . encontrouSite (“code.google.com/p/sele nium/wiki/PageObjects”)); } @AfterClass  public   static    void    () { driver. close (); }}         -                                          -         -                 Listagem 2. Implementação dos PageObjects refe-rentes à da Página de Busca e Resultado. public   class  PaginaDeBusca {  private   static     String URL = “http://www.google.com.br”;  private   static      long  WAIT_TIME = 2000l;  private  WebDriver driver;  private   PaginaDeBusca (WebDriver driver) {  this .driver = driver; }  public   static  PaginaDeBusca acessa ( WebDriver driver) {  // navega para a URL desta pagina driver. navigate (). to (URL);  // retorna uma nova instancia do objeto que  // representa a pagina da busca    49 \    return   new    PaginaDeBusca (driver); }  public  PaginaDeResultadoDaBusca realizaBusca (String conteudoDaBusca) {  // escreve o valor de conteudoDaBusca em um         driver.  (By. name (“q”)). sendKeys ( conteudoDaBusca);            // pelo nome btnG driver.  (By. name (“btnG”)). click ();  try   {  // aguarda um tempo ate a pagina do  // resultado de busca ser carregada Thread. sleep (WAIT_TIME); } catch  (InterruptedException e) {  throw    new    RuntimeException (“Can not wait for page to load.”, e); }  // retorna um novo objeto que representa a  // pagina do resultado da busca  return   new    PaginaDeResultadoDaBusca (driver); }} //--------------- public   class  PaginaDeResultadoDaBusca {  private  WebDriver driver;  public   PaginaDeResultadoDaBusca ( WebDriver driver) {  this .driver = driver; } public   boolean   encontrouSite (String urlSiteProcurado) {  // procura por todos os elementos li de classe  // css g que estiverem dentro de um div de id res List<WebElement> itensEncontrados = driver.  (By . cssSelector (“div#res li.g”));  boolean  elementoEncontrado = false ;  for  (WebElement itemEncontrado : itensEncontrados) {  // obtem o conteudo de um elemento cite  // dentro de cada item encontrado String linkDoElementoEncontrado = itemEncontrado.  (By. tagName ( “cite”)). getText (); elementoEncontrado = linkDoElementoEncontrado. contains  (urlSiteProcurado);  if   (elementoEncontrado) {  break ; } }  return  elementoEncontrado; }}                                   -          -       Desenvolvedor de Software, com 7 anos de experiência em projetos de desenvolvimento de sistemas cor-porativos na plataforma Java Enterprise Edition e Ruby on Rails. Formado em Ciência da Computação na Universidade de São Paulo/São Carlos, atuando ainda como consultor de arquitetura de sistemas e instrutor de treinamentos.                                    -                                   -                                                           /eu uso
Similar documents
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x