fbpx
Escolha uma Página

O que é uma framework?

Ainda hoje vejo muita confusão em torno do termo framework  (ou arcabouço em português, mas ninguém usa esse termo em português. Eu sempre lembro de calabouço quando falo arcabouço).

É comum as pessoas confundirem biblioteca com framework, dentre outras confusões e dificuldades de explicar de forma simples o que é um framework.

Vou tentar desmistificar isso de uma vez por todas e de uma forma que espero que sera fácil lembrar:

Uma framework é um conjunto de componentes e regras para se fazer algo.

Não é algo exclusivo de computação nem de testes de software pois existem frameworks de gerência de projetos, processos de software, atendimento de usuário, desenvolvimento de alguma habilidade humana, etc.

No caso de frameworks de programação, elas podem ou não conter bibliotecas (lembrando que bibliotecas são pedaços de código bem desenvolvidos, testados e confiáveis para aproveitarmos nos nossos projetos e não precisar fazer tudo na unha do zero). As frameworks podem ser server side, client side, ambos, e por aí vai.

Exemplos: Rails, que é uma framework de ruby; spring que é uma framework de Java; Zend, Cake, que são frameworks de PHP.

Assim, uma Framework nada mais é do que “um jeito” de se fazer algo usando algumas ferramentas.

O que é uma framework de automação de teste de software?

Se uma framework, de forma geral, é “um jeito de se fazer algo usando alguns componentes”, o que é uma framework de testes automatizados? o que ela precisa conter?

Para montarmos uma framework de testes automatizados devemos pensar em quais componentes (programas que nos ajudarão a realizar os testes) e quais as regras que esses programas definirão sobre a forma com que escreveremos nossos testes.

Assim, nossa framework de teste é o conjunto dos programas necessários (cucumber, selenium, capybara, watyr, phantomjs, Rspec…) para realizar os testes juntamente com as regras de como esses testes serão escritos.

O formato de se escrever os testes depende então das ferramentas que usamos para montar nossa framework de teste.

Por exemplo, se em nossa framework usamos Cucumber, é certo que precisaremos ter uma pasta específica para colocar nossas features e os step definitions dessas features, pois isso é uma regra do Cucumber.

E assim por diante, para cada ferramenta que escolhemos usar na framework.

Exemplo de framework de automação de teste de software usando Ruby

Para exemplificar mais detalhadamente, suponha que estamos definindo uma framework para realizar testes automatizados web, e que queremos usar a linguagem Ruby para escrever os testes automatizados.

Assim, um exemplo de framework de testes automáticos usando ruby como linguagem poderá conter os 4 elementos a seguir:

1. Cucumber: para escrever as features (cenários) dos testes de uma forma mais próxima da linguagem humana, usando BDD e também para coordenar os testes. O cucumber funciona como um maestro, controlando a execução dos testes. Se quiser entender mais sobre essas histórias, basta ler esse texto aqui onde falo sobre isso;

2. Rspec: para dar mais poder às verificações e comparaçõs que realizaremos (Ex: eu espero que o texto do botão curtir do facebook seja “curtir”);

3. Capybara: para facilitar a mudança entre os drivers que de fato executam os testes nos browsers, fazendo com que os testes tenham baixo acoplamento nas camadas mais baixas (não sejam dependentes dos drivers que de fato executam as ações nos browsers);

4. Selenium: driver dos testes;

Além dessas ferramentas que se tornam padrão para todo teste que escrevemos a partir da definição da framework, ainda é possível a inclusão de varias outras bibliotecas (gemas no caso de ruby) para ajudar no teste, quando necessário.

Podemos por exemplo variar os drivers, e ao invés de usar Selenium, usar Rack::Test  no lugar do selenium, ou ainda incluir gemas para lidar com JSON, XML, etc.

O importante na hora de definir uma framework de testes automatizados é que o conjunto das ferramentas escolhidas para compor a framework auxilie na escrita e manutenibilidade desses testes e não seja motivo de confusão para a equipe tornando os mais complicados e ineficientes.

Conclusão

Viu que não tem segredo a definição de framework? espero que a partir de agora você possa não ter mais medo das frameworks, seja lá onde for usá-las.

Além disso, que tal usar os 4 elementos indicados acima para selecionar e montar sua própria framework de testes automatizados de software?

Deixa aí nos comentários quais as ferramentas estão presentes na sua framework de teste =}

Além disso, um bom vídeo para começar com a área de testes é esse aqui:

Grande Abraço, e até a próxima.

Referências

Se quiser saber mais sobre a história do selenium, tem esse ótimo texto aqui em inglês que explica o histórico da criação do selenium;

Esse outro texto compara umas ferramentas de teste;