O título diz tudo. Minha empresa está reutilizando um projeto de firmware herdado para um dispositivo de microcontrolador, totalmente escrito em C.
Obviamente, existem partes que estão erradas e precisam ser alteradas. Vindo de um background em C # / TDD, não gosto da ideia de refatorar aleatoriamente itens sem testes para garantir que a funcionalidade permaneça inalterada. Além disso, vi que erros difíceis de encontrar foram introduzidos em muitas ocasiões através de pequenas alterações (o que acredito que seria corrigido se o teste de regressão fosse usado). É preciso tomar muito cuidado para evitar esses erros: é difícil rastrear um monte de globais em todo o código.
Para resumir:
- Como você adiciona testes de unidade ao código fortemente acoplado existente antes da refatoração?
- Quais ferramentas você recomenda? (menos importante, mas ainda é bom saber)
Não estou diretamente envolvido na escrita desse código (minha responsabilidade é um aplicativo que irá interagir com o dispositivo de várias maneiras), mas seria ruim se bons princípios de programação fossem deixados para trás se houvesse uma chance de que eles pudessem ser usados.
fonte
Para técnicas, provavelmente o livro de Michael Feathers na resposta de Péter Török será bastante abrangente. Se você não quiser ir ao livro, sugiro um processo de três etapas:
Repita esse processo algumas vezes e você deve descobrir que a qualidade da base de código herdada aumentou significativamente.
Quanto às ferramentas, observe que o C ++ pode chamar o C; portanto, qualquer estrutura de teste de unidade do C ++ pode ser usada para testar o código C. Por exemplo, estamos usando o CPPUnit para testar unitariamente um monte de código C em nosso projeto.
fonte