Sou frequentemente encarregado de depurar um aplicativo no meu trabalho. É um Aplicativo de BI que implantamos nas empresas, que inclui um ambiente de teste e um ambiente de produção. Gostaria de saber se existem aplicativos / ferramentas / métodos que as pessoas possam sugerir, com base nessas restrições:
O depurador não pode ser usado no site do cliente ou localmente, porque o software depende de aplicativos de terceiros personalizados para os quais não temos ambientes de teste. (EDIT: para ser justo, é possível depurar localmente em alguns casos. Se não usarmos nada além do código principal. Grande parte do código problemático reside em uma dll que encapsula a comunicação específica de terceiros: soquetes, tubos de processo, chamadas de sabão, lógica personalizada que altera o comportamento do código principal. Normalmente, durante uma implementação ou aprimoramento para um cliente, estaríamos escrevendo um novo código nessa área.)
Praticamente não há registro feito em nossos aplicativos. Não há testes de unidade.
O controle de versão possui apenas 1 versão da solução completa (usando o source safe 2005). Portanto, não é possível obter uma versão anterior de toda a solução, apenas arquivos individuais. (A menos que alguém saiba maneiras de contornar isso).
Não é possível reproduzir localmente, muitas vezes não é possível reproduzir no ambiente de teste (alta chance de teste e produção não serem da mesma versão).
Há uma grande chance de que a versão que o cliente esteja usando seja diferente da versão segura no código-fonte. Isso ocorre porque os arquivos individuais são atualizados, que incorporaram lógica personalizada para esse cliente específico. Geralmente, o que acontece é que uma atualização é feita em um binário, o que requer alterações em vários outros binários, mas quando uma confirmação é concluída, ninguém tem nenhum registro ou conhecimento disso. Um erro um tanto comum que vejo é a 'Função / Método não encontrado' ou 'A chamada do método tem muitos / poucos parâmetros especificados' em um ambiente de clientes.
Esta é uma solução .net VB
Não é possível instalar nenhum software nos sites dos clientes, mas pode localmente
Nosso aplicativo é extremamente personalizável, mas, infelizmente, a lógica de personalização está espalhada por todas as classes e arquivos, desde o front-end até a camada de dados, incluindo alterações personalizadas feitas no banco de dados por cliente.
Praticamente não há comentários no código. Não há documentação sobre a arquitetura. Nenhuma documentação sobre a API. A única coisa que temos são centenas e centenas de cadeias de email que explicam o que está acontecendo. As únicas pessoas que conhecem o código são as que o escreveram originalmente, mas não são mais os desenvolvedores que dizem isso para não se envolverem tanto.
E antes que você diga ... sim eu sei; Eu quero me matar também. Não ajuda que exista código espaguete, centenas de avisos do compilador e polimorfismo quebrado que REALMENTE devam ser corrigidos, mas não tenho uma opinião a dizer.
Os tipos mais comuns de erros nos quais encontro erros de referência nulos, lançamentos inválidos e falta de correspondência de funções / assinatura de função. Às vezes, tenho sorte e o visualizador de eventos registra a classe, o método e a mensagem de exceção. Não é o mais útil, mas ainda é algo. O pior são os erros sem rastreamento, sem etapas de reprodução além de uma captura de tela e são mensagens de erro genéricas como as mencionadas acima. Às vezes, não é possível descobrir por que elas ocorreram, apenas para orar para que o ambiente não esteja configurado corretamente e que desapareça mais tarde.
Eu sei que isso parece um tanto divertido, e até certo ponto é. Mas estou desesperada por opções. Existem outros métodos / ferramentas que posso usar?