Concrete Logo
Hamburger button

Ferramentas e práticas de iOS na Concrete Solutions

  • Blog
  • 8 de Julho de 2015
Share

Post publicado originalmente no meu Medium. Veja aqui.

Neste ano, estamos passando por uma fase de crescimento muito acentuado, que se traduz em diversas vagas para áreas distintas. Com a entrada de novos desenvolvedores e muitos projetos começando a cada semana, nosso desafio atualmente é crescer. Porém, só crescer não basta, precisamos continuar promovendo a nossa cultura, mantendo e aprimorando sempre o que nos fez chegar até aqui: a qualidade das entregas, do time e dos processos e metodologias que adotamos.

Para tal, é de fundamental importância que novos desenvolvedores absorvam os conhecimentos adquiridos ao longo de diversos projetos, absorvam nossas práticas e passem a semeá-las para os próximos recém-chegados. Depois de experimentar algumas formas, chegamos a um formato de screencasts e posts para exemplificar algumas ferramentas e práticas que adotamos. Esse formato de post com screencast vai servir tanto para novos “concreteiros” quanto para pessoas de fora da empresa que tenham interesse em aprender mais e/ou conhecer um pouco da forma como nós trabalhamos.

Lembrando que estamos contratando! Interessados podem fazer os desafios de iOS ou Android e nos enviar um pull request.

‘nuff talk show me the…

Neste post, vou mostrar como criar uma app iOS usando uma stack de tecnologias e práticas bem interessantes que buscamos adotar em nossos projetos. Vou falar de:

  • Dependências
  • Testes
  • Pipeline Automatizado
  • Continous Integration
  • Continous Delivery

Dependências

Para instalar as dependências necessárias para desenvolver este projeto vou usar o faststrap, uma biblioteca que propõe ser o bootstrap de projetos iOS. No caso vamos utilizar :

    • Cocoapods
    • Homebrew
    • lcov
    • fastlane
    • jenkins
    • xctool

Criando o projeto

Vamos criar um dummy project para conseguir exemplificar esses conceitos, seguindo sempre o lema de que primeiro garantimos que está funcionando manualmente e só depois automatizamos. Vamos “deployar” no nosso servidor de entrega contínua e rodar os testes do projeto usando o processo manual, depois automatizaremos.

Pipeline Automatizado | Continous Integration | Continous Delivery

Como padrão, nos nossos projetos normalmente temos um sprint zero com a finalidade de construir a infraestrutura que dará suporte aos desenvolvedores durante todo o projeto. Isso significa montar e estruturar a integração contínua, o deployment contínuo e automatizar os processos de desenvolvimento e suporte. Uma vez que isso tenha sido feito, os benefícios são nítidos :

  • Aumento da transparência;
  • Aumento do feedback;
  • Releases frequentes e iterativos;
  • Diminuição da surpresa e sensação de desconforto pelo cliente;
  • Desenvolvedores não “precisam” mais se preocupar com tarefas de builds, archives e deploys, podendo por consequência focar no que realmente importa: entregar código bem feito com qualidade e com o maior valor possível para o negócio.

Para automatizar a nossa pipeline de desenvolvimento usaremos o fastlane, um conjunto de ferramentas desenvolvido por @KrauseFX para automatizar inúmeros processos que antes eram manuais na plataforma da Apple. Usaremos o jenkins como nosso servidor de integração contínua e usarei o mobrelease, nosso servidor inhouse de entrega contínua, semelhante ao hockeyapp.



Continous Integration no jenkins com Coverage Reports

Testes

A plataforma da Apple evoluiu muito no que diz respeito a testes, inclusive este ano no WWDC eles apresentaram suporte a testes de interface e cobertura de código direto no xcode|XcodeServer. Neste post vou cobrir como fazer testes de view controllers e unitários, e isso vai garantir rastreabilidade e aumentar a qualidade do código. Também usarei alguns frameworks que facilitam a escrita dos testes, tais como: Specta, Expecta eOCMock. Para finalizar, vou mostrar como adicionar cobertura de código e como usar esses relatórios no jenkins para ter insights de quais partes do códgio ainda podem melhorar ou precisam de mais atenção.




Fechando…

Quem tiver alguma dúvida ou sugestão ou quiser trocar alguma ideia deixe um comentário ou me adicione no Twitter | Github.