• Nenhum resultado encontrado

Existem informac~oes utilizadas pelo gerador de codigo de sistema visto na Sec~ao 4.3 que podem ser geradas automaticamente pelo gerador de codigo de teste. Por exemplo, indicamos, atraves da palavra chavestatic, as paginas do sistema que s~ao inicialmente consideradas estaticas. Alem disto, tambem utilizamos a propriedade template, como visto a seguir, para indicar o caminho do arquivo HTML que originou a denic~ao deste tipo.

static WebPage PaginaInicial {

template = "c:\wsat\exemplo\www\paginaInicial.html" }

Com isto, o testador deve remover a palavra chave static da denic~ao de subtipos de WebPage para indicar as paginas que, na verdade, s~ao geradas dinamicamente no sistema real. Foi considerado aqui que, em geral, o esforco de identicar as paginas Web estaticas do sistema e maior do que a identicac~ao das paginas din^amicas. Em casos onde isto n~ao e verdade, a ferramenta pode ser congurada para n~ao gerar esta informac~ao, cando o testador responsavel agora pela identicac~ao das paginas estaticas do sistema. Na verdade, este gerador pode ser congurado para n~ao escrever o codigo a ser utilizado apenas pelo gerador de codigo de sistema e n~ao durante a execuc~ao dos testes propriamente ditos.

4.2.3 Executando o Gerador

Para executar o gerador de codigo de teste, basta invocar o metodo generateFile passando o caminho do diretorio que contem o prototipo de telas. Desta forma, criamos na classe WSatGeneratoro seguinte metodo:

public static void main(String] args) { try {

File file = new File(args0])

WSatGenerator generator = new WSatGenerator() generator.generateFile(file)

FileWriter writer = new FileWriter(args1], false) try { writer.write(generator.getGeneratedCode()) } finally { writer.close() } } catch (Exception e) { e.printStackTrace() } }

O metodo main pode ser executado a partir da linha de comando Java. Ele recebe um

array de String contendo o diretorio do prototipo de telas e o caminho completo do arquivo a ser criado com o programa WSat gerado. O programa WSat resultante vai

sendo escrito incrementalmente em memoria, sendo em seguida escrito denitivamente em um arquivo texto.

Uma vez gerado o codigo WSat, o testador pode livremente altera-lo para que ele descreva com mais detalhes a estrutura da GUI do sistema ou para aumentar sua legibi- lidade. Por exemplo, podemos alterar o nome dos tipos criados nomes mais intuitivos, facilitando assim o entendimento deste tipo. Alem disto, podemos tambem descrever o comportamento do sistema atraves da denic~ao de func~oes e casos de teste.

4.3 Gerador de Codigo de Sistema Web

Devido as caracter sticas especiais de WSat como a descric~ao estrutural expl cita da GUI do sistema atraves da denic~ao de tipos que representem componentes Web, tre- chos de codigo de sistema podem ser gerados a partir de casos de teste escritos em WSat. Nesta sec~ao, mostramos como trechos de codigo de sistemas Web podem ser gerados automaticamente a partir de programas WSat escritos para testar tais sitemas. Em particular, apresentamos o projeto e implementac~ao de um gerador de codigo que tem este objetivo. Em primeiro lugar, apresentamos o ambiente de desenvolvimento de sistemas Web considerado e que sera congurado por trechos de codigo gerados automa- ticamente. Em seguida, apresentamos que tipos de trechos de codigo podem gerados e o projeto e implementac~ao do gerador. Por m, mostramos como este gerador de codigo e executado.

4.3.1 O Ambiente e Arquitetura de Desenvolvimento

A gerac~ao de codigo de sistemas Web e, em parte, dependente do ambienteutilizado para o desenvolvimento destes sistemas. Um exemplo disto e a linguagem de programac~ao utilizada. Desta forma, para criar um gerador de codigo do qual seus usuario possam tirar o maximo proveito, faz-se necessario determinar o ambiente de desenvolvimento dos sistemas Web considerados.

Para escolher qual seria o ambiente de desenvolvimento destino do gerador de codigo de sistema, foram estudados alguns padr~oes de projeto e ferramentas utilizadas no de- senvolvimento de tais sistemas. Este estudo foi realizado com o intuito de descobrir que tipos de codigo podem ser gerados automaticamente a partir de programas WSat, porem sem analisar a ecacia da utilizac~ao de tais padr~oes e ferramentas para n~ao fugir do escopo do trabalho. O ambiente escolhido e, na verdade, uma composic~ao de pa- dr~oes de projeto e ferramentas utilizados em diversas empresas. Os detalhes sobre este ambiente s~ao vistos a seguir.

A linguagem Java 19] e utilizada por um grande numero de empresas locais no desenvolvimento de sistemas Web. Por este motivo, ela foi escolhida como a linguagem de programac~ao do ambiente de desenvolvimento. Para o desenvolvimento de sistemas Web em Java, o uso de Servlets e bastante comum. Entretanto, diversas tecnicas de projeto para a estruturac~ao dos Servlets podem ser aplicadas. Entre as encontradas, o padr~ao Web Handler 2] foi escolhido por fornecer benef cios interessantes como uma boa modularizac~ao do codigo e por ter seu maior impacto negativo, o grande numero de classes necessarias para sua implementac~ao, amenizado pelo uso deste gerador.

Sistemas Web necessitam, em geral, validar os par^ametros recebidos em suas requi- sic~oes. Para validar estes par^ametros, a tecnica mais interessante encontrada foi o uso de regras de validac~ao escritas em arquivos XML 30]. Estes arquivos XML possuem informac~oes sobre regras para validac~ao dos par^ametros recebidos em uma requisic~ao como, por exemplo, os valores permitidos para cada um destes par^ametros.

Outro fator a ser considerado no desenvolvimento de sistemas Web e a separac~ao entre codigos Java e HTML. Para isto, foi notado em varias empresas o uso da API FreeMarker 17]. O funcionamento desta API e baseado em templates HTML. Tem- plates HTML s~ao arquivos textos que armazenam codigos HTML e variaveis que s~ao substitu das por informac~oes calculadas em tempo de execuc~ao. Esta API foi escolhida pelo seu grande uso no mercado e pela experi^encia de uso do autor deste trabalho.

Para a realizac~ao de testes unitarios no ambiente escolhido, utilizamos o framework

JUnit 15]. Este framework dene como classes de teste devem ser criadas e utiliza- das na realizac~ao de testes unitarios e e indicado por metodologias como a Extreme Programming3].

A execuc~ao de sistemas Web s~ao realizadas atraves de servidores Web. Entre os servidores utilizados, o servidor Jakarta Tomcat 14] foi escolhido por ser um servidor de codigo aberto largamente utilizado pela comunidade.

Como podemos ver na proxima sec~ao, a utilizac~ao do padr~ao de projeto Visitor

permiteque o codigo do gerador implementadoseja facilmentealterado para gerar codigo de sistemas desenvolvidos em ambientes diferentes do apresentado.

4.3.2 Projeto e Implementac~ao

Similarmente ao compilador de WSat para Java, foram criados diversos classes que implementam visitors que percorrem a arvore sintatica de WSat para a gerac~ao de codigo de sistema. Cada um destes visitors possui uma funcionalidade espec ca como, por exemplo, gerar o codigo dos handlers de requisic~oes Web ou de seus arquivos de congurac~ao. No decorrer desta sec~ao, mostramos a funcionalidade, projeto e trechos de codigo da implementac~ao de cada visitor criado.