A formação mais procurada no Mundo.

Teste de Software com TestComplete – Parte 1

foto_ramos Teste de Software com TestComplete - Parte 1

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.
foto_ramos Teste de Software com TestComplete - Parte 1

Últimos posts por Ramos de Souza Janones (exibir todos)

No artigo “Qualidade de Software: Uma questão de eficiência” falei muito da importância de testes de software como fator de diferenciação, redução de custos e aumento vendas. (Se não leu, por favor, leia). 

Neste artigo quero apresentar a ferramenta TestComplete de automação de testes de software a qual considero a mais completa do mercado global. Há versões para testes de software Desktop, Web e Mobile nas mais diversas linguagens de programação:

  • C/C++
  • .NET application
  • WPF (XAML)
  • Visual Basic
  • Java
  • JavaFX
  • Delphi
  • C++Builder
  • Qt
  • Outros.

É muito comum encontrar desenvolvedores e empresas que ainda testam seus softwares apenas de forma manual. E com o aumento de alterações e novas funcionalidades que são incluídas nesses softwares fica difícil manter o ritmo e a qualidade dos testes que são aplicados, comprometendo assim a qualidade final do projeto.

Uma abordagem baseada puramente em testes manuais, normalmente não consegue acompanhar as demandas e o volume de homologações do sistema ao longo do ciclo de vida de desenvolvimento de software. Freqüentemente o sistema é liberado sem que tenha sido completamente testado em virtude de falta de tempo e recursos.

A automação de testes, quando utilizada corretamente, permite a execução ininterrupta de testes a qualquer hora do dia ou da noite. A automatização desse processo é sempre mais rápida do que um processo manual e menos suscetível a erros, afinal, a máquina nunca erra.

Um pouco de poesia

Use TestComplete para automatizar seus testes e você pode executá-los a qualquer hora, dia ou noite. Relax em casa, enquanto os testes automatizados de trabalho o tempo todo. TestComplete pode realizar testes para verificar a sua lógica de negócios, o software de medida e de desempenho do servidor, analisar dados e avaliar a experiência do usuário enquanto você está sonhando com clientes satisfeitos.

De manhã você será saudado por relatórios precisos documentar os resultados de cada teste com um calendário e notas detalhadas para cada etapa do teste.

Necessidade de fazer o dobro de muito ensaio? Basta adicionar outra estação de trabalho para executar mais testes ao mesmo tempo. Logo você vai se sentir como você tem um exército de testadores pronto para executar em seu comando.

Paradigmas da automação de testes

Os testes automatizados interagem com o sistema a ser testado. Alguns podem testar um sistema simulando o uso do mesmo por um usuário, como se os controles de um determinado formulário fossem clicados, enquanto que outros aplicam testes em uma parte mais interna do sistema, nas rotinas que formam as regras de negócio. Os tipos de automação são normalmente agrupados de acordo com a forma como os testes automatizados interagem com o sistema. Em geral temos: 

Baseados na Interface Gráfica 

Nessa abordagem os testes automatizados interagem diretamente com a interface gráfica do sistema simulando um usuário. Normalmente as ações dos usuários são gravadas (Capture) por meio da ferramenta. A ferramenta transforma as ações dos usuários em um script que pode ser reproduzido (Playback) posteriormente.

Vantagens: Não requer modificações no sistema para a automatização. Não é necessário tornar o sistema mais fácil de testar (testabilidade) porque eles se baseiam na mesma interface utilizada pelos usuários;

Desvantagens: Existe uma forte dependência da interface gráfica. Se a interface gráfica mudar, os testes falham. Por exemplo, um formulário é criado contendo um CheckBox e um teste é criado para verificar seu estado. Se amanhã esse CheckBox for substituído por um RadioButton o teste irá falhar, caso não seja reconstruído. Baixo desempenho para testes automatizados que exigem centenas de milhares de repetições, testes de funcionalidades que realizam cálculos complexos, integração entre sistemas diferentes e assim por diante. 

Baseados na Lógica de Negócio

Nessa abordagem os testes automatizados exercitam as funcionalidades do sistema sem interagir com a interface gráfica. A interface gráfica é apenas uma casca (camada) que tem o objetivo de fornecer um meio para a entrada dos dados e apresentação dos resultados. A camada que abriga a funcionalidade e o comportamento do sistema é a camada de lógica de negócio. Essa abordagem de testes é baseada no entendimento que 80% das falhas estão associados a erros na lógica de negócio, ou seja, existem poucos erros críticos na camada de interface com o usuário. Normalmente é necessário realizar modificações no sistema para torná-lo compatível com essa abordagem. Essas modificações resultam em mecanismos para expor ao mundo exterior as funcionalidades internas do sistema.

Vantagens: Foco na camada onde existe maior probabilidade de existir erros. Independência das mudanças da interface gráfica. Alto desempenho para testes automatizados que exigem centenas de milhares de repetições, testes de funcionalidades que realizam cálculos complexos, integração entre sistemas diferentes e assim por diante.

Desvantagens: Requer grandes modificações no sistema para expor as funcionalidades ao mundo exterior. Exige profissionais especializados em programação para criar os testes automatizados. Existem poucas ferramentas/frameworks que suportam essa abordagem (normalmente é necessário criar soluções caseiras).

Uma solução open-source

Há sempre opções gratuitas e até open-source para testes. Uma solução open-source são as Unit Testing, que podem ser feitos usando DUnit (para Delphi) ou NUnit (para .NET): cria-se testes automatizados para os métodos das classes, que são executados a cada mudança, verificando a introdução de erros. Isso já é um grande passo, pois à medida que temos testes confiáveis, estamos seguros que não introduzimos erros em nossos métodos, além de ter uma base de teste sempre confiável, que é executada sempre da mesma maneira.

O Unit Testing tem algumas limitações:

  1. Como garantir que a interação entre os métodos não criou novos erros? Embora tenhamos testado os métodos individualmente, nem sempre podemos garantir que a interação entre as classes esteja correta. Por exemplo, a classe funciona bem com uma instância, mas como funciona com duas instâncias ativas?
  2. Como fazer testes visuais: se um método é essencialmente visual (uma rotina de desenho na tela, por exemplo), como garantir que o resultado está correto sem verificá-lo manualmente?
  3. Como testar a interface de usuário? Devemos simular cliques do mouse ou teclar algo para obter um resultado – como fazer isso?
  4. Como verificar se a aplicação se comporta bem ao longo do tempo? Como saber se, após uma hora de uso, a aplicação não travará ou apresentará erros?

Podem-se criar testes que passem por cima de algumas dessas limitações, porém isso nem sempre é fácil, muitas vezes o teste a ser criado passa a ser tão ou mais complexo que o próprio código a ser testado (nesse caso, será que é necessário um projeto para testar o projeto de testes?).

Mas não existe melhor ferramenta que o TestComplete, confie em mim. 

No próximo artigo vamos dar sequencia e falar mais desta poderosa ferramenta. Baixe seu Trial em: https://smartbear.com/product/testcomplete/overview/

Compartilhe.

PinIt