Abordagem para geração automática de código para framework de automação de testes - ARCOVERDE NETO, Euclides Napoleão (2007)
Engenharia de software visa criar software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais. Um de seus principais objetivos é obter um grau de qualidade mínimo que, em geral, significa uma baixa taxa de defeitos. Considerando que qualidade é crítico para o sucesso do software, o uso de testes vem crescendo. Testes objetivam revelar a presença de erros o mais cedo possível no ciclo de desenvolvimento. Embora teste de software seja uma atividade complexa, geralmente não é realizada sistematicamente devido a uma série de fatores como limitações de tempo, recursos e qualificação técnica dos envolvidos. Dessa forma, a automação de testes é uma tendência na área de testes. Esse trabalho está inserido no contexto de um projeto de pesquisa realizado pela Motorola em parceria com o Centro de Informática da Universidade Federal de Pernambuco denominado CInBTCRD (CIn and Brazil Test Center Research and Development Project). Na Motorola, a automação de testes faz-se por meio de um framework denominado de TAF (Test Automation Framework), o qual simula a interação de um ser humano com um aparelho celular, além de poder capturar o estado e outras informações importantes do aparelho. Testes reusam implementações já definidas no TAF para criar os scripts de teste, bem como novas implementações são criadas quando o reuso não é possível. Visto que bastante tempo é gasto para criar tais implementações, este trabalho propõe criar uma estratégia que, dado um script de teste, gere código para o TAF das funcionalidades ainda não implementadas automaticamente. Para gerar tais códigos, foi utilizada a linguagem formal CSP (Communicating Sequential Processes) como base. CSP foi criada para especificar e projetar comportamentos de sistemas concorrentes e distribuídos. CSP possui uma teoria de refinamentos associada, a qual é o alicerce de nossa proposta. O uso de refinamento em nossa proposta é relativamente simples: dado um teste em TAF descrito usando CSP e o comportamento de um celular também em CSP, a relação de refinamento só será satisfeita quando todos os elementos contidos no teste estiverem de acordo com o definido no comportamento do celular. Assim sendo, nesse trabalho usamos a ferramenta BxT (Behavior Extractor Tool) que desenvolvemos no contexto do projeto de pesquisa para extrair automaticamente um modelo CSP de um celular, bem como reusamos um outro trabalho que consegue representar casos de teste em CSP e criamos um algoritmo que usa esses elementos e a teoria da refinamento de CSP para completar certas partes do caso de teste com o auxílio do modelo do celular. Finalmente, o teste em CSP resultante é novamente escrito em TAF e dessa forma conseguimos atualizar o framework automaticamente