Por que eu devo ler este artigo:

Este artigo trata de dois dos principais frameworks relacionados à comunicação com o back-end e geração de suítes de testes no front-end, respectivamente: o Backbone.js e o PhantomJS. Através da análise feita sobre uma aplicação implementada tendo como base o Backbone.js, aprenderemos a criar suítes de testes dos mais variados tipos (integração, unitários, etc.) que encapsulem todas as regras de negócio da aplicação, bem como auxiliem no processo de identificação de erros, o que, consequentemente, aumentará a produtividade do desenvolvimento do software e do andamento do projeto como um todo.

Além disso, faremos uma análise comparativa entre três ferramentas auxiliares na criação das suítes: o Mocha, o Chai e o SinonJS, entendendo como comunicar as mesmas, e distinguindo os objetivos de cada uma na prática.

O desenvolvimento de softwares web modernos assiste, hoje, a um verdadeiro renascimento do JavaScript, com a expansão da popularidade de aplicações dirigidas ao front-end, single-page, e que executam em tempo real. Para encabeçar a lista de tecnologias que dão suporte a tal status, temos um número considerável e crescente de frameworks web JavaScript que permitem aos desenvolvedores organizar suas aplicações dentro do que chamamos de “componentes modulares dirigidos a convenções”.

A medida que mais lógica e funcionalidades são transportadas do servidor para o browser, tais frameworks se fazem criticamente necessários para manter o estado da aplicação como um todo, evitando códigos ad hoc e desestruturados, provendo abstrações e o bom funcionamento de situações comumente encontradas no ciclo de desenvolvimento, como a comunicação com serviços de integração (banco de dados nos dispositivos locais, Web Services, etc.), geração de arquivos de exportação, relatórios, dentre outras.

Este artigo foca no framework Backbone.js, que se destaca por fornecer recursos de balanceamento de configuração, incluindo fortes abstrações em seu núcleo, bem como por ter um excelente suporte da sua comunidade de desenvolvimento. Ele provê um conjunto de interfaces (modelos, coleções, roteadores, views, etc.) para o desenvolvimento de uma aplicação enquanto mantém uma enorme flexibilidade ao permitir se comunicar com engines de geração de templates, bem como eventos extensíveis para comunicação entre diferentes componentes, e uma abordagem genérica para a interação entre código e padrões. Ele é usado em larga escala por aplicações de organizações como USA Today, LinkedIn, Hulu, Foursquare, Disqus, e muitas outras. Essencialmente, o Backbone.js provê ferramentas práticas para a construção de aplicações web cliente-heavy (que exigem muito poder de processamento do browser) sem exigir tanto esforço do programador para isso.

Entretanto, esse mundo de evoluções front-end está repleto de muitos obstáculos em potencial. Mais especificamente, enquanto as possiblidades de criação de aplicações das mais diversas formas com frameworks JavaScript modernos como o Backbone.js são infinitas, um dos principais problemas que circundam esse universo está relacionado à qualidade com que os softwares como um todo são entregues, tanto no que se refere ao código e arquitetura da aplicação, quanto em relação ao bom funcionamento dos mesmos. Isso se deve, principalmente, ao fato de ser uma tecnologia recente, e não ter tido ainda todas as boas práticas e padrões organizacionais absorvidos pelos desenvolvedores que a usam.

As estatísticas e a experiência de profissionais e empresas da área provam que o mundo JavaScript é notoriamente difícil de ser verificado, testado: eventos assíncronos no DOM e dados de requisições são sujeitos a problemas de timing (tempo limite de processamento) e até falhas maiores, uma vez que a exibição de comportamentos do sistema é difícil de ser separada da lógica da aplicação, além disso as suítes de teste dependem da interação com um browser em específico. Para acabar de completar, os frameworks front-end adicionam uma camada extra de complexidade com interfaces adicionais que precisam ser isoladas e testadas, com vários componentes interagindo concorrentemente, e a lógica de eventos propagando por sobre as camadas da aplicação.

Com base nisso, trataremos de expor aqui o desafio de identificar as partes de uma aplicação a ser testada, definindo os corretos funcionamentos dos vários componentes da mesma, e verificando se o programa funciona como foi planejado para o fazer em sua total integridade. Outrossim, será pré-requisito para a leitura e compreensão deste artigo conhecimentos básicos em JavaScript (o mínimo para que se sinta confortável com objetos, Orientação a Objetos, tipificação, etc.) e jQuery, uma vez que a biblioteca será usada para minimizar a ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 79 /mês
Assinar agora