Na minha posição atual, o controle de qualidade se tornou um gargalo. Tivemos a infeliz ocorrência de recursos sendo mantidos fora da versão atual para que o controle de qualidade pudesse terminar o teste. Isso significa que os recursos que estão sendo desenvolvidos podem não ser testados por duas a três semanas após o desenvolvedor já ter prosseguido. Com o desenvolvedor avançando mais rápido que o controle de qualidade, esse intervalo de tempo só aumentará.
Continuo folheando minha cópia do Code Complete, procurando um trecho "Hard Data" que mostre que o custo de correção de defeitos cresce exponencialmente quanto mais tempo ele existe. Alguém pode me indicar alguns estudos que apoiam esse conceito? Estou tentando convencer os poderes de que o gargalo do controle de qualidade é muito mais caro do que eles pensam.
fonte
Respostas:
Você não precisa de nenhuma referência, IMHO. Aqui está o que você poderia (e deveria ) fazer:
Quantifique o custo do atraso! Vamos supor que leva 1 semana para testar os recursos. Um atraso de duas a três semanas implica que o recurso não estará disponível até a quarta semana. E isso também assumindo 100% de sucesso. Adicione um tempo de fixação de mais uma semana, para que isso ocorra com cerca de 5 semanas de atraso.
Agora, se possível, acesse o prazo esperado do projeto / recurso. Até quando o cliente espera isso? Será que vai escorregar? Caso contrário, outras pessoas escaparão como consequência? Então, em quanto tempo o 'lançamento' será adiado como resultado?
Qual é o 'custo para a empresa' dessa liberação, ou seja, quanto o cliente espera lucrar com essa liberação? Se eles esperam US $ 5200 / ano de lucro desse lançamento, todas as semanas caem custando US $ 100 em receita perdida. Essa é a visão do cliente. Você pode ou não ter acesso a esses dados, mas vale a pena levar em consideração e declarar como o atraso pode afetar o relacionamento.
Agora, qual é a perda para os desenvolvedores? Depois que o desenvolvedor passa para outros recursos, você pede que ele interrompa o ciclo e 'conserte' o recurso anterior. Qual é a perda de tempo / esforço? Converta-o em custo para a empresa usando o salário como um múltiplo para cada hora desperdiçada como resultado. Você pode usar isso para dizer a quantidade de "lucro / receita" na qual o lixo está "consumindo".
O que você encontrou pode ser convenientemente quantificado usando o "Custo do Atraso" - defendido por Don Reinerstein no fluxo Princípios de Desenvolvimento de Produto e também por Dean Leffingwell no Agile Software Requirements. Você deve ser capaz de apoiar todas essas reivindicações por fatores econômicos para convencer as 'potências superiores', cuja língua principal é $$ - você deve falar a língua deles para convencê-las :)
Besta da sorte! (trocadilho :)
fonte
Eu realmente não acho que o Code Complete seja o recurso certo para você aqui. Este não é um problema de código, é um problema de processo e talvez um problema de gerenciamento.
Se parte do seu processo é particularmente fraca, é hora de eliminar a Teoria das Restrições :
Identifique a restrição.
Isso significa encontrar a parte mais lenta ou ineficiente do processo geral. No seu caso, está testando. Mas que parte dos testes? É isso:
Todos esses são problemas muito diferentes e exigem soluções diferentes. Você precisa decidir qual é o mais caro / importante. Justificar isso à gerência não deve ser difícil, pois todas as atividades acima custam tempo (dinheiro AKA) e apenas algumas delas são de valor agregado.
Explorar a restrição.
Em outras palavras, otimizar em torno do processo de constrangimento. Nunca deixe os testadores ficarem ociosos. Isso equivale essencialmente a:
Esse estágio não é sobre a otimização do processo de teste em si (ainda), é mais sobre a redução de custos indiretos. Não perca tempo com os testadores. Eliminar o tempo realmente desperdiçado também deve ser uma venda fácil para a gerência.
Subordine outras atividades à restrição.
Nesse ponto, os testadores são o mais produtivos possível, por isso, precisamos começar a pedir emprestado a produtividade de outras áreas:
Eleve a restrição.
Se os testadores estiverem trabalhando com capacidade total - em termos de produtividade e de sobrecarga mínima - e ainda não forem rápidos o suficiente, será necessário começar a investir mais em testes.
Volte para a Etapa 1.
Eu gostaria de dizer que tudo isso é senso comum, mas infelizmente não é, pelo menos não na maioria das organizações. Se você está recebendo muita resistência do gerenciamento, uma técnica inestimável é o Value Stream Mapping (uma técnica da manufatura enxuta), que você pode usar para mostrar quanto tempo e, portanto, o dinheiro é realmente desperdiçado todos os dias por um candidato a liberação ser incapaz para passar para a próxima etapa. É difícil entender o custo de oportunidade, mas essa é uma das melhores maneiras que encontrei para visualizá-lo e demonstrá-lo.
E se nada disso funcionar ... então talvez você esteja em uma empresa disfuncional, saia antes que seja tarde demais!
Mas você não resolverá esse problema simplesmente largando alguns papéis na mesa do gerente e pedindo que joguem dinheiro no problema, porque eles assumirão (corretamente) que jogar dinheiro nele pode não ser realmente resolvido, e pode até gerar pior. Você precisa fornecer soluções , e é disso que se trata esta resposta. Se você apresentar o problema como "aqui está uma lista de maneiras pelas quais podemos começar a resolver esse problema, em ordem decrescente de custo / benefício", em vez de "precisamos de mais testadores", você terá muito mais sucesso.
fonte
As páginas 29 e 30 podem ter os dados que você está procurando, embora possa ser necessário um acompanhamento.
Eu examinaria a pesquisa mencionada nesta frase na página 30:
BTW, foi sua pergunta que me levou a pegar o livro novamente para atualizá-lo :-)
fonte
O que você está descrevendo é um gargalo em um processo. A teoria Lean afirma que sempre haverá um gargalo em um processo, mas sua gravidade pode variar amplamente. Se o controle de qualidade contratou mais um, o desenvolvimento pode se tornar um gargalo.
Para entender o custo, imagine a seguinte situação. Você escolheu um dos desenvolvedores. Seu trabalho nunca seria garantido pela qualidade, mas sempre seria enfileirado indefinidamente. Imagine que isso significaria que o controle de qualidade poderia garantir o trabalho dos demais desenvolvedores em tempo hábil e não haveria custo de atraso.
Nesse cenário, o custo do atraso é o custo do salário do desenvolvedor, porque seu trabalho seria desperdiçado.
A razão pela qual discuto em termos de custo e não do valor criado pelo processo, é simplesmente porque é mais difícil documentar o valor de um processo, mesmo que seja muito melhor.
fonte
O custo exponencial de encontrar um bug parece basear-se em um estudo do NIST . O estudo foi uma pesquisa que pressupõe estágios distintos em cascata:
( tabela aqui daqui )
Um dos objetivos das metodologias de desenvolvimento de software Agile é remover esses estágios distintos e reduzir esses custos. As figuras não se aplicam ao usar outras metodologias para cascata.
fonte
Seu problema não é com o controle de qualidade; na verdade, se ele estiver realizando testes, os atrasos serão praticamente a menor das suas preocupações. Deixe-me expulsar (novamente, como é um equívoco comum no setor de programação) ... QA Garante a qualidade do produto supervisionando todo o SDLC, desde Requisitos (talvez mais cedo), até o desenvolvimento, verificação, liberação e suporte. O teste garante que não haja defeitos óbvios no código. Há uma diferença muito grande e importante. Se você tivesse um controle de qualidade real, eles estariam por todo o departamento de Teste / V&V perguntando por que estavam custando o tempo de negócios (e, portanto, dinheiro) atrasando as liberações, ou por todo o gerenciamento do projeto, garantindo que eles estavam gerenciando o cronograma do projeto corretamente ou fazendo toda a gestão Certifique-se de que havia testadores suficientes para o código que está sendo produzido, etc ...
Então, assumindo o controle de qualidade, você realmente quer dizer Teste, voltando à questão original. O Code Complete acertou - o custo de um defeito é o tempo que leva da inserção à correção. A detecção precoce só é útil se você também a corrigir precocemente, mas a interpretação da maioria das pessoas está errada.
(Nota: eu estou interpretando o advogado do Diabo aqui, não leve nada disso literalmente, pois não sei nada de você.) O atraso causado pelo seu departamento de Teste é um custo, absolutamente, no entanto, tenho que perguntar se você está esperando que eles encontrem seus defeitos, o que você está fazendo - caso não encontre seus próprios defeitos? Talvez se eles tivessem menos trabalho (através de uma entrada de qualidade superior com menos defeitos de sua parte), o atraso não seria tão significativo e o custo seria menor - como gerente, eu perguntaria como você planeja reduzir os defeitos no código que entrega para teste, pois (com base no seu argumento) esses defeitos custam mais se encontrados por teste do que você.
Além disso, como gerente, posso afirmar que não é o trabalho de testes que encontra seus defeitos. O trabalho deles é encontrar que não há defeitos - se você espera que eles encontrem defeitos, talvez você não tenha feito seu trabalho suficientemente bem.
Cuidado ao abordar isso. Se você não tiver uma solução para o problema, provavelmente ficará em segundo lugar.
fonte