Não existe uma receita geral, mas algumas regras práticas ( supondo uma linguagem de tipo estaticamente, mas isso não deveria realmente importar):
1) Dê uma olhada na assinatura do método. Diz-lhe o que se passa em e espero que vem para fora . Do total estado deste deus de classe, eu acho que este é um primeiro ponto de dor . Suponho que mais de um parâmetro seja usado.
2) Use a função de pesquisa do seu editor / EDI para determinar Exit-Pontos (geralmente um retorno statement_ é usado)
Pelo que você sabe, o que a função precisa para testar e o que você espera em troca .
Assim, um primeiro teste simples seria chamar a função com os parâmetros necessários e esperar que o resultado é não nulo . Isso não é muito, mas um ponto de partida.
A partir daí, você pode entrar em um círculo hermenêutico (um termo cunhado por HG Gadamer - um filósofo alemão). O ponto é: você agora tem um entendimento rudimentar da classe e atualiza esse entendimento com novos conhecimentos detalhados e tem um novo entendimento de toda a classe.
Isso combinado com o método científico : faça suposições e veja se elas se sustentam.
3) Pegue um parâmetro e veja onde na classe ele é transformado de alguma forma:
Por exemplo, você está fazendo Java como eu, geralmente existem getter e setter para os quais você pode procurar. Searchpattern $objectname
. (ou $objectname\.(get|set)
se você estiver executando Java)
Agora você pode fazer outras suposições sobre o que o método faz.
Rastreie apenas os parâmetros de entrada ( primeiro ), cada um através do método Se necessário, faça alguns diagramas ou tabelas , onde você anota todas as alterações em cada uma das variáveis.
A partir disso, você pode escrever outros testes, descrevendo o comportamento do método. Se você tiver um entendimento aproximado de como cada parâmetro de entrada é transformado ao longo do método, comece a experimentar : passe nulo para um parâmetro ou entrada estranha . Faça suposições, verifique o resultado e varie entradas e suposições.
Se você fizer isso uma vez, terá uma "tonelada" de testes descrevendo o comportamento do seu método.
4) Em uma próxima etapa, eu procuraria dependências : o que o método precisa além de sua entrada para funcionar corretamente ? Existem possibilidades para reduzir ou reestruturar essas? Quanto menos dependências você tiver, mais claramente você verá os pontos onde realizar as primeiras divisões.
5) A partir daí, você pode percorrer toda a estrada de refatoração com padrões de refatoração e refatoração para padrões.
Aqui está um bom vídeo : GoGaRuCo 2014- O método científico de solução de problemas Trata-se de solução de problemas, mas útil para uma metodologia geral de entendimento de como algo funciona .
Você menciona que a função chamada não possui parâmetros de entrada : nesse caso especial, eu tentaria primeiro identificar as dependências e refatorá-las para parâmetros, para que você pudesse trocá-las como quiser.