• Nenhum resultado encontrado

2.9 FREVO – Um Framework e uma Ferramenta para Automação de

2.9.1 Descrição do Framework FREVO

2.9.1.2 Classe BaseTestCase

A classe BaseTestCase é considerada a principal classe do framework FREVO. Ela é a classe base a partir de onde todos os casos de teste desenvolvidos no framework FREVO devem estender. Por sua vez, essa classe estende a classe UiAutomatorTestCase do UI Automator, mantendo assim o ambiente padrão de execução de um caso de teste do Android. As principais funções da classeBaseTestCase são destacadas da seguinte forma por Melo [4]:

• Definição do fluxo de execução;

• Padronização na codificação descripts;

• Controle e monitoramento da execução, considerando o timeout de um caso de teste; • Armazenamento de informações/características do caso de teste;

• Gravação dos resultados em um banco de dados; • Captura de screenshots em cada assert efetuado; • Disponibilização de novos asserts.

A execução de um caso de teste noframework FREVO obedece o seguinte diagrama de estados da Figura 2.8.

Figura 2.8 – Diagrama de estados da execução de um caso de teste desenvolvido

no framework FREVO.

Fonte: FREVO - Um Framework e uma Ferramenta para Automação de Testes [4].

Segundo Melo [4], os métodos (init(), setUpTestCase(), main(), tearDownTest-

Case()), destacados na Figura 2.8, representam não só o fluxo de execução que os testes obedecem, mas, através dessa sequência lógica, é possível também estabelecer uma padro- nização no desenvolvimento dos scripts no framework FREVO. Dessa maneira, todas as classes de testes que estendem a classe BaseTestCase precisam obrigatoriamente implemen- tar esses quatro métodos para que seja possível garantir tal uniformidade e manutenção de um padrão nos scripts de teste. No framework FREVO, cada classe corresponde a script de teste (caso de teste).

As conexões da classeBaseTestCase com outras unidades integrantes do framework FREVO, bem como os principais atributos e métodos são exibidos na Figura 2.9.

O diagrama de classes da Figura 2.9 permite visualizar a adição de novos métodos assertivos (asserts) bem como a conexão da classe BaseTestCase com outras classes integrantes do framework FREVO.

TimeCounter: TimeCounter é a classe responsável por realizar a medição do tempo gasto durante a execução de um caso de teste, bem como por controlar o tempo máximo permitido para sua execução.

Figura 2.9 – Diagrama de classes de BaseTestCase e sua conexão com os demais

integrantes do framework FREVO.

Fonte: FREVO - Um Framework e uma Ferramenta para Automação de Testes [4].

FrevoTestCase: FrevoTestCase é a classe responsável por estruturar todos os dados da execução, organizando informações relacionadas para cada teste executado (idioma da execução, validações internas, tempo de execução e o resultado final do teste).

O banco de dados do framework FREVO foi elaborado para armazenar todas as informações da execução de um caso de teste, onde as validações internas de um caso de teste (assert) são consideradas como um subteste. Cada subteste contém as informações necessárias para realizar a validação, como a descrição do que está sendo validado, o resultado atual e o esperado para aquela validação, um screenshot da validação e o resultado desse subteste. Dessa forma percebe-se a necessidade de utilização dos

asserts disponíveis pelo framework através da classe BaseTestCase, uma vez que os dados

validados através desses métodos irão ser armazenados no banco de dados doframework. Posteriormente, esse banco de dado será lido pela ferramenta FREVO e será possível visualizar em detalhes todas as validações contidas nos casos de testes executados.

Melo [4] faz uma relação entre os nomes dos métodos padrões disponíveis no

framework UI Automator e os métodos correspondentes no framework FREVO como

observado na Tabela 6.

O Código 2.2 (extraído de Melo [4]) ilustra como se dá uma implementação de um teste no framework FREVO. Note que a classe ExemploFrevoUiAutomator estende a classe BaseTestCase, sendo necessária a implementação dos métodos obrigatórios descritos na Tabela 6.

Código 2.2 – Exemplo de implementação de um script no framework FREVO.

Tabela 6 – Relação entre os métodos padrões nos frameworks UI Automator e

FREVO.

UI Automator FREVO Descrição

setUp() setUpTestCase() Preparação do ambiente para execução do teste.

test() main() Método onde o teste será desenvolvido.

tearDown() tearDownTestCase() Finalização do ambiente de execução do teste.

- init() Método onde as informações específicas do teste serão informadas.

Fonte: Adaptado de FREVO - Um Framework e uma Ferramenta para Automação de Testes [4].

private final String LAUNCH_APP = "Chrome";

private final String PACKAGE_APP = "com.android.chrome";

private UiDevice mDevice;

@Override

public void init() throws Exception {

// Define descricao do teste

mTestCase.setDescription("Abrir a aplicacao Chrome no dispositivo sob

teste");

// Define a versao do sistema para a qual o script eh indicado mTestCase.setBuildId(BuildEnum.M.getId());

// Define um timeout de 30s (30000ms) para o teste. mTestCase.setTimeoutExecutionMillis(30000);

}

@Override

public void setUpTestCase() throws Exception {

mDevice = UiDevice.getInstance();

// Acende a tela do dispositivo e pressiona a tecla HOME mDevice.wakeUp();

mDevice.pressHome(); }

@Override

public void main() throws Exception {

// Recuperar o botao central para abrir a bandeja de aplicativos

UiObject appTrayItem = new UiObject(new

appTrayItem.click();

UiScrollable scrollableList = new UiScrollable(new

UiSelector().scrollable(true));

// Ao abrir a bandeja, faz um scroll pesquisando a aplicacao definda em // LAUNCH_APP

scrollableList.scrollTextIntoView(LAUNCH_APP);

UiObject appItem = new UiObject(new UiSelector().text(LAUNCH_APP));

// Efetua um clique para abrir a aplicacao definida em LAUNCH_APP

if (appItem.exists()) {

appItem.clickAndWaitForNewWindow(); sleep(3000);

mSubTestDescription = "1. Verifique que a aplicacao Chrome foi

executada com sucesso"; mExpectedResult = PACKAGE_APP;

mActualResult = mDevice.getCurrentPackageName();

this.assertValidateEquals(mSubTestDescription, mExpectedResult,

mActualResult); }

}

@Override

public void tearDownTestCase() throws Exception {

// Pressiona a tecla HOME mDevice.pressHome(); }

}

O código acima clica na tecla Home, abre a bandeja de aplicativos, executa o navegador Chrome, verifica se a janela aberta foi de fato o Chrome e finaliza teclando em

Home novamente.

Documentos relacionados