Testes de software: como testar seu software corretamente

Existem diversos tipos de testes de software e eles são dividido em três principais categorias: Unitários, de integração e ponta a ponta.

Os testes, muitas vezes esquecidos ou até desprezados, fazem parte do desenvolvimento de todo software que se preze. Se uma falha acontecer na mão de um usuário, você não terá chance para se explicar. E assim, o negócio de alguém pode estar em risco por uma simples bobagem feita no código. Então, a melhor forma de garantir a qualidade do aplicativo que você está fazendo é testando ele.

Mas, afinal, de quem é a responsabilidade de testar a aplicação? É do desenvolvedor? Do analista de teste / tester (responsável por encontrar erros, falhas, bugs e outros tipos de problemas que não foram detectados durante o desenvolvimento de um software)? Do gerente de projeto / PO (profissional responsável por priorizar as atividades que maximizam o valor do produto e garantir o retorno do investimento)? A resposta é: todos. Sim, todos devem testar a aplicação, desde o início do desenvolvimento.

Para evitarmos futuras dores de cabeça e correções relâmpago, a equipe de desenvolvimento de software faz (ou pelo menos, deveria) testes em todas as aplicações produzidas. Testes de software são divididos primariamente em três categorias: unitários, de integração e ponta a ponta.

  • Testes unitários são feitos em partes isoladas do código, para cada componente. É como se testássemos cada “peça” de um aparelho antes de colocá-las. Vamos pensar que estamos montando um carro. Para garantir a segurança e evitar erros antes de unir todas as peças, é preciso testar cada uma delas separadamente. Por exemplo, para ter certeza que o veículo está funcionando normalmente antes de ir para o mercado, você tem que testar separadamente o freio, o volante, o câmbio, etc.
  • Testes de integração são testes unitários feitos em mais de uma parte do código. Eles juntam múltiplos componentes (normalmente 2) e verificam a comunicação e integração entre os mesmos. Este é o teste que garante que a ligação entre as peças está funcionando. Pense no caso do carro novamente: quando você utiliza o volante para dirigir-lo, a roda tem que responder ao pedido e mover o automóvel.
  • Testes de ponta a ponta são testes que validam todo tipo de comportamento possível dentro da aplicação, ou seja, simulam a atividade do usuário final. Se usarmos o exemplo do carro, esse tipo de teste seria dirigir o veículo após tudo estar finalizado, como se fosse o usuário normal. Garantindo assim que todas as peças do produto final e as comunicações entre elas estão funcionando corretamente.

Apenas os testes de ponta a ponta bastam?

Ora, mas se testes de ponta a ponta simulam um usuário real, então, em teoria, é a melhor escolha:

  1. O desenvolvedor fica feliz, afinal a responsabilidade de testar não é dele
  2. O analista de teste fica feliz, pois consegue testar simulando um usuário real, então seus testes de software são mais valiosos
  3. O gerente do projeto / PO fica feliz, pois isso vai garantir que o usuário final terá uma experiência melhor

MAS, infelizmente, não é bem assim que funciona. Se dependermos apenas de testes de ponta a ponta, o procedimento ficaria algo mais ou menos assim:

  1. O desenvolvedor faz uma feature/versão e passa para o tester do seu projeto
  2. Se o tester encontrar algum bug, ele cria um relatório do erro, e o desenvolvedor é notificado
  3. O desenvolvedor verifica o erro, checa o código, e corrige o bug
  4. Após toda a validação, uma versão de produção é lançada e enviada ao cliente

O que foi vantajoso nesse processo?

  • Erros que afetariam diretamente o usuário final foram detectados e corrigidos.

O que houve de errado nesse processo?

  • Os desenvolvedores tiveram que esperar o relatório de bugs para poder resolvê-los;
  • Bugs pequenos podem estar escondidos atrás de bugs maiores;
  • Encontrar a causa dos bugs pode levar um bom tempo.

Obtenha um procedimento mais efetivo

A melhor forma de conseguir sucesso durante o processo é utilizando testes unitários:

Testes unitários são testes de software feitos em partes isoladas do código, verificando métodos e funcionalidades específicas de um componente. Por estarem isolados, é muito mais fácil encontrar e corrigir erros. São testes rápidos e confiáveis.

O grande problema dos testes de software de ponta a ponta é a espera – você não sabe do erro até que ele ocorra na mão de um possível usuário, ou seja, quando já é tarde demais. Testes unitários conseguem ser precisos, ou seja, você sabe o que deu errado com mais precisão, sem esperar chegar ao usuário.

Apesar de todas essas vantagens, há uma coisa que o teste unitário não faz: simular um usuário real.

Evite possíveis bugs

A melhor maneira de nos prevenirmos contra bugs no desenvolvimento é utilizar cada teste corretamente e também usar o nosso tempo durante este processo de forma mais eficiente.

Por isso, utilizamos a pirâmide de testes de software proposta pela Google:

img_blog

 

A sugestão é que se faça uma divisão de 70/20/10, ou seja:

  • 70% de testes unitários;
  • 20% de testes de integração;
  • 10% de testes de ponta a ponta.

Isso serve para tentar sempre evitar uma pirâmide invertida (focada em testes de ponta a ponta), ou em formato de ampulheta (foco em testes unitários e ponta a ponta, mas nenhum em integração).

Texto: Leonardo Miyagi
Imagem: Rafaela Brum

*Este texto foi baseado em um artigo publicado pela própria Google, falando sobre testes de ponta a ponta (End-to-End Tests): https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html

Tutorial de como utilizar o Postman para documentar uma API

Texto: Daivid Silverio
Imagem: Vinicius Rocha

Desenvolver um aplicativo muitas vezes exige algum tipo de integração com outro sistema já existente. Por exemplo, se você quiser que as pessoas comprem o seu serviço por meio do seu app, é preferível que você faça uma integração com uma plataforma de pagamento que está atuando no mercado (IUGU, Mercado Pago, etc). Essas integrações são muito úteis para que o desenvolvedor não precise criar determinada funcionalidade do zero (pagamentos, mapas, login com redes sociais, etc.), e sim, apenas integrar o aplicativo com um serviço já existente. Ou até mesmo se você quiser utilizar no seu app uma plataforma já usada pela sua empresa ou algum banco de dados que você possua. Essa integração é feita por meio do consumo de uma API. E isso também te ajuda a economizar seus recursos na hora da produção.

Nós já entendemos que essa API é necessária quando se trata das funcionalidades que precisam de uma integração com outro sistema. Mas, é necessário que você entenda também como funciona este trabalho na maioria das empresas de desenvolvimento, inclusive aqui na Jera.

Tem dois caminhos para desenvolver este material: você pode alocar a equipe da empresa para desenvolver isso ou fazer por conta própria. Porém, atente-se bem se você escolher a segunda opção, pois cada empresa de desenvolvimento possui algumas regras que devem ser seguidas quando se trata de produzir em conjunto. E o máximo de atenção a isso é essencial para você não perder tempo e dinheiro com algo que depois não poderá ser utilizado.

Na Jera, quando o cliente prefere desenvolver a parte da API, nós fazemos a seguinte exigência: entregar a API documentada e fornecer uma Collection do Postman. Mas para você fazer isso, primeiro você precisa aprender a usar o Postman, certo?  

Postman é uma ferramenta que dá suporte a documentação das requisições feitas pela API. Ele possui ambiente para a documentação, execução e testes de APIs e requisições em geral. O objetivo deste texto é fornecer um tutorial introdutório para a criação de documentações vivas para a sua API por meio da plataforma Postman.

Saiba o que iremos aprender agora:

  • Criar Coleções
  • Criar Pastas
  • Criar Requests
  • Adicionar Parâmetros
  • Adicionar Headers
  • Criar e popular variáveis de ambiente/globais

Como usar o Postman: Criar Coleções

Clique no ícone da pastinha para abrir um formulário para criar a coleção.

imagem-1

Preencha com o nome desejado para a sua coleção e clique em “Create”. Pronto! Coleção criada! Agora vamos adicionar algumas requests e pastas na sua coleção.

imagem-2

Como usar o Postman: Criar Pastas

Clique no ícone de reticências para abrir o submenu da Coleção. Clique em “Add Folder” para Adicionar uma nova pasta.

imagem-3

Escreva o nome da pasta que você acabou de criar e clique em “Create” para salvar. Você pode usar essa funcionalidade para organizar melhor suas requests, de acordo com os recursos ou funcionalidade que sua API provê.

imagem-4

Como usar o Postman: Criar Requests

Para criar uma request, basta você digitar o endereço da API que você está documentando na barra de endereço e selecionar o método HTTP que será usado na request.

imagem-5

Para salvar essa request na Coleção, clique em “Save”.

imagem-6

Um formulário irá aparecer, onde você poderá preencher o nome da request e informar em qual Coleção e Pasta você deseja salvá-la. Finalmente, clique no botão “Save” laranja pra salvar a request.

imagem-7

Como usar o Postman: Adicionar Parâmetros

Por exemplo, vamos utilizar o POST para localhost:3000/users, que criamos na seção anterior.

Para informar os parâmetros da request, selecione o formato desejado: form-data, x-www-form-urlencoded, raw (Text, JSON, XML etc), binary.

Por exemplo, supondo os parâmetros de criação de um usuário:
name: Test
email: test@test.com
password: 123456

Para testar, basta clicar no botão azul “Send”. O resultado da Request vem na parte de baixo onde está escrito “Response”

Em form-data:

imagem-8

Em JSON:

imagem-9

Você pode observar a resposta na aba “Body”, seguida pelos “Cookies” e “Headers” da mesma.

No exemplo, eu criei um header chamado “TOKEN”, para a demonstração.

imagem-10

Como usar o Postman: Adicionar Headers

Adicionar headers é ainda mais simples do quê adicionar parâmetros. Basta selecionar a aba “Headers”, ao lado de “Body”, logo abaixo a barra de endereço:
imagem-11Criei uma request adicional que exige um token de autenticação para fazer requests a recursos protegidos, como as informações do usuário, neste caso.
imagem-12

Caso a autenticação funcione, os dados do usuário são retornados. Podemos ver isto na imagem abaixo. 

imagem-13

Se acontecer o contrário, um erro é recebido, 401 (Unauthorized), que significa que não foi autenticado.

imagem-14

Como usar o Postman: Criar e popular variáveis de ambiente/globais

Ficar escrevendo todos esses valores para parâmetros e headers pode acabar ficando um pouco tedioso dependendo da sua API. Principalmente, se ela possuir autenticação via tokens que podem mudar.

Para facilitar nossa vida um pouco, podemos fazer uso das variáveis de ambiente e da aba extra “Tests”, encontrada logo abaixo da barra de endereços.

Primeiramente, vamos criar um ambiente. Clique no ícone com uma engrenagem no canto superior direito e logo em seguida, Manage Environments.

imagem-15

Na janela que aparecer, clique no botão “Add”. Um campo para preencher o nome do novo ambiente irá aparecer. Preencha com o nome desejado e clique em “Add”.

imagem-16

A partir desse momento você também já pode adicionar as variáveis que eu havia comentado.

Vamos adicionar uma variável chamada “Last User Token”. Clique em “Add” ou “Update” (caso você voltar nessa tela e estiver adicionando novas variáveis).

imagem-17

Agora vamos voltar na request que havíamos criado na seção “Criar Requests”. Tendo a request selecionada, clique onde está escrito “No Environment” e selecione o nome do ambiente que você acabou de criar.

imagem-18

Em seguida, selecione a aba “Tests” para começar a facilitar a vida de quem for utilizar sua API.

Nessa aba você pode executar scripts javascript que serão executados após as requests. Assim, você poderá capturar os resultados contidos nos corpos e headers das suas respostas.

Como um exemplo bem simples, vamos capturar o e-mail do usuário contido no corpo da resposta e header TOKEN da mesma.

postman.setEnvironmentVariable(“Last User Email”, JSON.parse(responseBody).email); 
postman.setEnvironmentVariable(“Last User Token”, postman.getResponseHeader(“TOKEN”));

imagem-19

Agora podemos modificar o método que obtém informações do usuário para usar o header de autenticação. Para isso, utilize o Token salvo na variável de ambiente “Last User Token”

Selecione a request que precisa usar a variável de ambiente. Então, vá até o campo do Header, Parâmetros ou Corpo da Request e utilize a variável usando a notação {{Nome da Variável}} para recuperar o valor salvo.

No exemplo da autenticação, ficamos com: Authorization:Bearer {{Last User Token}}

imagem-20

Podemos usar esse mecanismo não apenas nos parâmetros, mas também nos parâmetros/corpos das requests.

Ex:

imagem-21

O postman também te possibilita salvar suas requests e coleções na nuvem. Ele também tem a capacidade de importar/exportar Coleções via um link único ou um arquivo .json. Basta clicar no ícone de reticências na coleção e escolher a opção “Export”.

imagem-22O Postman é uma ferramenta muito poderosa e fácil de ser utilizada. Pode ser usada como um meio de comunicação entre equipes de times/empresas diferentes quando houver necessidade de integração de APIs e com certeza tem o potencial de facilitar a vida de muita gente!

Mais exemplos e documentação oficial: https://www.getpostman.com/docs/ 

Como lançar um aplicativo de sucesso no mercado

A era digital chegou e com ela a busca em facilitar os serviços que nós utilizamos no nosso dia a dia. Hoje os aplicativos tomam a frente quando se trata de otimizar e inovar nas ações diárias das pessoas. Por exemplo, não precisar mais ir ao banco e ter a facilidade de realizar as atividades que levariam horas em minutos na tela do seu Smartphone. Ou até mesmo, você se lembra qual foi a última vez que você ligou para pedir um táxi? 

Um estudo feito pela Kantar Worldpanel Comtech mostrou que 56% da população brasileira usava Smartphone no primeiro semestre de 2016, em comparação com 6% no ano de 2012,  e esse número só cresce. Os preços dos aparelhos estão cada vez mais acessíveis e com o crescimento pela busca de um celular mais moderno, vem também a busca por funções e facilidades melhores. Dê uma olhada nesses dados sobre de que forma e para que uma pessoa utiliza seu celular atualmente:

utilidades

Os tempos mudaram e agora se uma empresa não inova, não investe na tecnologia, ela fica para trás.  Afinal, isso é essencial para conquistar novos clientes, melhorar seus processos, lançar novos produtos, agilizar o atendimento, entre outros. Então, se você já pensou em investir na área de apps, aqui estão alguns pontos que precisa saber.

Como tirar a minha ideia do papel?

Assim como em todo segmento do mercado, a concorrência na área dos aplicativos é grande. Muitos projetos acabam não indo para a frente porque não correspondem à realidade do que as pessoas realmente necessitam.

A primeira coisa a se fazer antes de começar a produzir o seu app, é saber se a sua ideia resolve algum problema e descobrir se as pessoas necessitam da mesma. A melhor forma de fazer isso é através de uma pesquisa com o público. E também verificar se o que você quer produzir seria algo que eles usariam.

Antes de lançar algo, é essencial que o empreendedor primeiro valide-o através de um Mínimo Produto Viável (MVP). Isso quer dizer, desenvolver um produto apenas com as funcionalidades essenciais para lançar de imediato no mercado. Gastando assim menos tempo, investimento e esforço. É preciso também verificar se ele será utilizado pelas pessoas ou se realmente é uma necessidade. Se não for, é necessário adaptá-lo para a realidade dos consumidores.

mvp1

Mas por que começar pelo MVP?

É extremamente importante para os negócios que ainda não estão estabelecidos no mercado começar com um MVP! Imagine assim, você tem uma ideia e acredita que fará muito sucesso (e deve acreditar mesmo), e devido a isso, investiu muito para fazer o produto perfeito, com todas as funcionalidades que você quer fazer. Mas na hora de lançá-lo, não era uma necessidade do seu público. Ou então, as pessoas acharam ele muito complexo ou confuso e por isso acabou não sendo vendido ou utilizado.

Todos devem confiar na capacidade dos seus projetos, mas não basta só o empreendedor ver esta necessidade, é preciso que o mercado enxergue isso também.

Vamos imaginar um segundo cenário, onde o empreendedor antes de começar com a produção, fez uma pesquisa e verificou se há necessidade. Após isso, ele criou um MVP com o menor investimento possível baseado nas informações que recolheu. Porém, mesmo assim, acabou lançando algo que não era exatamente o que aquele público precisava ou que é muito complexo e confuso.  Devido a isso, as pessoas não souberam exatamente como usar e assim o projeto não obteve o sucesso pretendido no primeiro momento.

Triste, mas acontece não é? Por isso o MVP é importante, enquanto no primeiro cenário gastou-se mais tempo e dinheiro, no segundo cenário, o empreendedor errou antes e gastou pouco. Com isso, ele pôde utilizar o restante do investimento para refazer o que foi produzido ou aprimorar de acordo com o feedback dos clientes.

Independente do tipo de público que você esteja planejando ter como alvo, sempre antes de investir tudo em algo novo é preciso validá-lo primeiro.  No desenvolvimento de aplicativos isso não é diferente.

Tenho a minha ideia para um app, já posso começar a desenvolver?

Como em qualquer negócio, a primeira coisa que você deve ter para desenvolver o produto é o investimento. No mercado de software esse valor pode variar de 30 a 90 mil reais por plataforma (Web, iOS, Android, etc). Esta variação também acontece de acordo com as funcionalidades que você deseja ter no seu aplicativo.

Quando se trata de desenvolvimento de software, assim como de um edifício, mais importante do que “o que desenvolver” é “como desenvolver”. Por isso, antes de partir para o desenvolvimento de qualquer funcionalidade, é necessário que você comece pelo design dele. Este design irá definir como funcionará o aplicativo, e traçará o fluxo de cada uma das telas do mesmo. Apenas com o design é possível para a maioria das empresas de desenvolvimento de software, inclusive a Jera, passar um orçamento mais preciso.

Na Jera, o período médio para realizar o design é de duas semanas.

semana-1

Pense no design como a planta de um edifício, antes de passar para a construção, é preciso você ter este planejamento de como ele irá ficar, para saber qual será a melhor forma ou técnica que o construtor deverá utilizar para fazê-lo. O mesmo é com o desenvolvimento de software! Portanto, o design é a primeira etapa para tirar a sua ideia do papel.

E se você está procurando por investidores, o design das telas será um grande aliado seu. Pois com esses desenhos você pode apresentar algo mais palpável para o seu futuro investidor, algo mais real e visual. E com isso aumentar as suas chances de obter um maior investimento para realizar o desenvolvimento.

Quero começar o desenvolvimento, mas não tenho muito dinheiro. Existe alguma opção mais em conta?

Existem duas formas de desenvolver um aplicativo: híbrido ou nativo. O híbrido é o mais recomendável para quem tem um orçamento limitado ou ainda está validando o produto. Ele é desenvolvido em uma plataforma só (a web) e depois encapsulado para Android ou iOS.  Para utilizá-lo, o usuário deve ter acesso à internet, porque quando ele entra no app, na verdade ele está entrando em uma página da web que foi adaptada para a tela do celular. Mas não precisa se preocupar se isso irá atrapalhar a experiência do usuário na hora de navegar pelo celular. Ele fica parecendo que foi desenvolvido nativamente, mal dá para notar a diferença.

O nativo é aquele que é desenvolvido nas linguagens nativas do Android e do iOS. Normalmente o orçamento para desenvolver este tipo é mais caro que o normal. Isto porque ele é feito em duas plataformas e leva o dobro do tempo, diferente do híbrido.

Mas tenho uma notícia boa, se você quiser lançar rápido a sua ideia, você pode, na maioria das vezes, alocar dois times para desenvolver paralelamente nas duas plataformas e assim otimizar o tempo. Mas saiba que desenvolver um app não é algo que pode ser feito da noite para o dia. Aqui na Jera, por exemplo, leva-se normalmente de 2 a 3 meses por plataforma.

nativoxhibrido

Se o seu aplicativo precisar utilizar funcionalidades nativas do celular, como câmera, GPS, etc, o mais indicado é desenvolver  nativamente. Pois assim, as ferramentas próprias do celular funcionarão melhor e tornarão a experiência do seu usuário mais satisfatória.

É só ter um app para o meu negócio que o sucesso está garantido?

Calma lá, não é bem assim! De fato, este tipo de serviço te ajuda a expandir sua empresa. Só que para isso acontecer, não basta apenas ter a mercadoria, deve também possuir um diferencial. É um erro pensar que só é preciso desenvolver um aplicativo e ele fará dinheiro sozinho. Não se esqueça que a tecnologia é feita para as pessoas. Investir em tecnologia, mas não proporcionar um atendimento qualificado para seus clientes e não aprimorar a forma como eles experimentam o seu produto, de nada adianta.

Junto com a tecnologia, também tem que vir a experiência que as pessoas terão com a sua empresa. E eu tenho certeza que você deseja que ela seja extraordinária!

*Icons created by Guilherme Simoes from the Noun Project

 

Como instalar apps Android para teste

A primeira coisa a se fazer é mudar as configurações de permissão de instalações externas no seu dispositivo Android. Para isso vá em “Configurações” > “Segurança” > “Fontes desconhecidas”;
Screenshot_2015-01-30-15-27-43[1]
Depois é só baixar o aplicativo Android, diretamente no celular  que tenha a extensão .apk. É importante destacar, no entanto, que é preciso ter cuidado ao baixar programas de sites desconhecidos, pois há uma possibilidade do app estar escondendo algum malware que pode infectar seu aparelho;

Clique no arquivo e aguarde o Android instalá-lo. Se for necessário, escolha a opção “Instalador de pacotes” na tela. Selecione “Instalar” na tela seguinte e espere o processo terminar.

Screenshot_2015-01-30-15-29-11[1]Pronto! O aplicativo foi instalado e você poderá começar a testar.
Abraços.

Instalando aplicativos pelo iTunes

Em nosso processo de desenvolvimento de aplicativos iOS, com entregas semanais, costumamos disponibilizar versões dos aplicativos à medida que as funcionalidades são finalizadas.

Como o teste e o feedback do mesmo são importantíssimos para nós, normalmente solicitamos que o cliente instale em seu smartphone ou tablet para abrirmos discussão sobre alterações e melhorias no app.

Normalmente utilizamos uma ferramenta chamada Testflight para facilitar o envio do aplicativo, porém em alguns poucos casos as pessoas enfrentam dificuldades na instalação por problemas adversos.

Por isso, gravamos um vídeo explicando como fazer a instalação do app no celular ou tablet via iTunes, o player de música e gerenciador de conteúdo da Apple.

Acompanhe: Como instalar aplicativos via iTunes