Uma abordagem de sucesso em equipes de teste agile é o entendimento das funções dos software. Para poder entregar o melhor possível para seus clientes e consumidores, é preciso entender quais funções eles desejam e como implementá-las nos projetos.
Antes de sair mexendo em código ou criando cenários de testes, é importante que desenvolvedores e testadores tenham uma correta compreensão do comportamento, da finalidade e relevância de cada função, na perspectiva do usuário. Para isso, é importante que novas funções sejam apresentadas e discutidas com toda a equipe.
Separamos uma “colinha” com perguntas a se fazer quando sua equipe se deparar com uma demanda de desenvolvimento de uma função nova. Estas perguntas ajudarão a perceber a utilidade da função e onde ela pode se encaixar no dia a dia do usuário. Também levantam respostas que podem até mesmo perceber que esta função pode se encaixar em um projeto futuro.
Usabilidade da função para usuários/negócio
- Qual a importância desta função?
- Que problema ela resolverá para o usuário?
- Como saber se esta função funcionará quando lançada? Como podemos mensurar o sucesso dela? Será preciso uma nova métrica para avaliar?
Comportamento da função
- Qual o cargo e responsabilidades de quem usará esta função?
- Qual o pior erro que pode ocorrer usando esta função?
- Qual o melhor resultado que esta função pode prover?
- O tamanho desta função é muito grande? Podemos entregar uma pequena fatia dela e ter feedback?
Performance de qualidade
- A função pode afetar a performance geral? Como iremos testar isto?
- Isto pode introduzir falhas de segurança? Como testar isto?
- Além disso, será que pode afetar a usabilidade? Como podemos deixar fácil de usar?
- Que métricas de performance são importantes para esta função, em qual contexto?
Riscos
- Precisamos prever endpoints, APIs ou comandos de servidor? Quais?
- Temos conhecimento na equipe para implementar esta função? Devemos pedir ajuda externa?
- Essa funcionalidade deve ser tratada como uma feature flag? Devemos permitir habilitá-la ou desabilitá-la?
- Versões mobile/web correm risco de serem afetados?
- Outras partes do sistema podem se comprometidas?
Testabilidade
- Como iremos testar isto?
- Quais testes automatizados iremos usar?
- Serão necessários muitos testes exploratórios?
- Temos os dados corretos para estes testes?
- Será necessário atualizar os testes atuais ou adicionar novos? Se o caso for adicionar, haverá uma curva de aprendizado para utilizar este novo teste?
Com estas perguntas, a função que a sua empresa/cliente deseja será mais facilmente compreendida e implementada. Vale ressaltar que estas perguntas ajudam a encontrar um norte, mas sozinhas não são suficientes para decidir a validade da função. Troque informações com os colegas, debatam sobre o que querem implementar e até que ponto isto é viável. Uma boa equipe agile está a todo momento trocando ideias e sugestões, é um excelente hábito.