Por Claudinei Brito – Dev Mobile Monitora
O desenvolvimento de um projeto de software, normalmente é feito por uma equipe composta por diversas pessoas com diferentes skills e que complementam-se com o intuito de entregar um software que atenda aos requisitos especificados, dentro do prazo estipulado e que não ultrapasse o custo definido previamente.
A tríade escopo, tempo e custo já é bem conhecida no contexto de gerenciamento de projetos de software, entretanto, existe um outro atributo que é tão importante quanto os três mencionados anteriormente, que é a qualidade.
Por que é importante preocupar-se com qualidade?
A qualidade é o “grau de conformidade de um sistema, componente ou processo com as necessidades e expectativas de clientes ou usuários”, sendo assim, a qualidade de um projeto deve ser garantida para que os envolvidos no projeto estejam satisfeitos e que dessa forma, o software possa ser usado para o propósito que ele foi designado.
Levando tudo isso em consideração, é possível afirmar que um um projeto de software que cumpra seu escopo, prazo e custo, ainda assim, pode não ser considerado um projeto de sucesso caso a qualidade não esteja de acordo com as expectativas alinhadas.
Preocupação com agilidade
Para que um projeto possa ser bem sucedido atendendo a todos os atributos desejados, existem diversas ferramentas, metodologias e frameworks que facilitam o alcance deste objetivo, e entre as metodologias, existia a metodologia ágil, que conforme vimos no artigo As principais metodologias de desenvolvimento de software que você precisa saber, tem o foco no próprio projeto ou produto e tem como objetivo principal a realização de melhorias e alterações constantes, baseadas no feedback do cliente e até da equipe interna do projeto.
Integração do Tester com o Desenvolvedor
Dentro do contexto ágil de desenvolvimento de software, uma premissa importante é a comunicação da equipe interna, visando sempre a solução imediata de possíveis problemas. Sendo assim, é sempre muito importante a interação entre a equipe de desenvolvimento e os garantidores da qualidade (é daí que vem o termo QA, Quality Assurance), que em grande maioria são os testers. Mesmo com a interação entre a equipe de desenvolvimento e a equipe de QA, infelizmente são comuns frases como “Na minha máquina funciona” ou “Estava funcionando até agora”. Dessa forma, com o objetivo de mitigar este problema, existem dois processos que podem ser inseridos no contexto ágil, que são o Code Inspection e Dev Test. Os referidos processos têm em comum o objetivo de garantir maior qualidade no projeto de software.
Code Inspection
O Code Inspection é um processo que deve ser executado por um dev diferente do dev que desenvolveu a funcionalidade e o seu objetivo primário é a qualidade do projeto, mas concomitantemente, cumpre diversos outros objetivos secundários, que são: (i) a melhoria do código escrito; (ii) descobrimento de defeitos antecipadamente; (iii) transferência/aquisição de conhecimento; e (iv) aumento do senso de responsabilidade mútua.
Dessa forma, o processo de Code Inspection pode ser inserido entre a finalização de uma funcionalidade e o teste dessa mesma funcionalidade pelo tester, e tem como saída esperada: a devolução da feature para o dev responsável para que seja melhorado algum aspecto no código; ou, o tester receberá a feature com uma garantia maior de qualidade.
Em termos práticos, o Dev A finaliza a funcionalidade, o Dev B analisa o código desenvolvido pelo Dev A, e então, caso o código desenvolvido não atenda as expectativas, devolve a feature para o Dev A para que sejam implementadas melhorias no código, ou então, caso o código esteja de acordo, entrega-a para o Tester ou avança para o Dev Test caso este outro processo faça parte do processo de desenvolvimento da equipe.
Dev Test
O Dev Test é também um processo que deve ser executado por um dev diferente do dev responsável pelo desenvolvimento da funcionalidade, entretanto, pode ser executado pelo mesmo dev que fez o code inspection. O objetivo primário é a qualidade do projeto, mas concomitantemente, cumpre diversos outros objetivos secundários, que são: (i) descobrimento de defeitos antecipadamente, (ii) transferência/aquisição de conhecimento; e (iii) aumento do senso de responsabilidade mútua.
O processo de Dev Test pode ser incluído após o desenvolvimento da funcionalidade ou então, após a aprovação do Code Inspection, e antes do teste dessa mesma feature pelo tester, e tem como saída esperada: a devolução da funcionalidade para o dev responsável para que seja melhorado algum aspecto na funcionalidade da funcionalidade; ou, o tester receberá a funcionalidade com uma garantia maior de qualidade.
Em termos práticos, o Dev A finaliza a funcionalidade, o Dev B faz o teste da funcionalidade desenvolvida pelo Dev A, e então caso a funcionalidade desenvolvida não atenda as expectativas, devolve a funcionalidade para o Dev A para que sejam implementadas melhorias, ou então, caso a funcionalidade esteja de acordo, entrega-a para o Tester.
Um importante ponto no Dev Test é garantir que tempo não foi desperdiçado fazendo com que o dev realize o mesmo teste que o tester irá fazer, sendo assim, é importante definir os aspectos que são inerentes ao Dev Test e os aspectos que são inerentes ao tester, ou seja, é importante que a tarefa de Dev Test e o teste do tester sejam complementares.
Considerações finais
Resumidamente, o code inspection e o dev test fazem com que o tester receba funcionalidades com maior garantia de qualidade, consequentemente, reduz o custo de retrabalho durante o desenvolvimento, pois facilita o descobrimento precoce de defeitos.
Finalmente, a adoção desses processos, aproxima o projeto de se tornar um projeto bem-sucedido, atendendo ao escopo, prazo e custo, além de entregar o software com uma garantia de alta qualidade.
A Monitora é referência em Quality Assurance. Nosso objetivo é garantir aos nossos parceiros de negócio soluções atendam a tríade escopo, tempo e custo. Se você busca a melhor parceira de desenvolvimento para sua empresa, entre em contato conosco e saiba mais sobre as nossas soluções.
Escrito por Claudinei Brito Junior, Mobile Developer na Monitora