Casos De Teste Do Sistema De Negociação
Codificação de Sistemas de Negociação: Testes, Solução de Problemas e Otimização Agora que você possui um sistema de negociação projetado e codificado, é hora de testá-lo para garantir que sua codificação esteja livre de erros técnicos e lógicos. Também analisaremos algo conhecido como otimização - um recurso em alguns programas de negociação que lhe permitem ajustar suas regras de negociação de acordo com as ações que você planeja negociar. Testando seu sistema de negociação A grande maioria dos aplicativos comerciais que suportam linguagens de programação também suporta ferramentas de teste. Essas ferramentas são divididas em duas categorias: 1. Técnicas As ferramentas de teste técnico buscam erros técnicos em seu código. Por exemplo, se você esquecer de adicionar um ponto-e-vírgula após uma declaração, a ferramenta de teste técnico irá notificá-lo de que sua declaração não é válida. A localização da ferramenta de teste técnico depende da aplicação comercial que está sendo usada. O MetaTrader exibe um erro ou resultados defeituosos quando você tenta compilar seu código, enquanto as aplicações comerciais como a Tradecision possuem um utilitário de verificação de código incorporado na interface que permite verificar seu código por erros antes de aplicá-lo. 2. As ferramentas de teste lógico logístico procuram erros lógicos no seu código. Por exemplo, se você usou um sinal maior que o sinal em vez de um sinal menor que o que não é um erro técnico, uma ferramenta de teste lógico irá mostrar que seus resultados não fazem sentido. A ferramenta de teste lógico mais popular é a ferramenta backtesting. Esta ferramenta permite que você tire dados anteriores e aplique seu sistema de negociação a esses dados. Isso dá uma idéia do seguinte: Se o seu sistema de negociação é lucrativo 13 Que condições se mostram mais lucrativas 13 Onde exista algum erro nas suas regras (Para obter mais informações, consulte Backtesting: Interpretando o Passado.) Solucionando problemas de negociação Sistema Como com qualquer outro tipo de programação, a solução de problemas pode ser uma tarefa tediosa e difícil. Encontrar erros no seu código exige ordenar sistematicamente seu código para identificar erros sintáticos que, embora menores de idade, possam interromper seu programa. Aqui estão alguns erros comuns a procurar: Semicolons faltantes após declarações - Estas devem ser após cada declaração. 13 Variáveis indefinidas - Lembre-se de que você deve declará-las antes de usá-las. 13 Erros ortográficos. Se algum nome ou função estiver escrito incorretamente, o aplicativo comercial retornará um erro (veja o exemplo abaixo). 13 Uso incorreto de () - Lembre-se de que atribui um valor a outro valor, enquanto significa igual. 13 Uso incorreto de funções internas - Consulte a documentação de aplicativos comerciais ou a interface de programação de aplicativos (API) para garantir que você esteja usando a sintaxe correta. Alguns aplicativos comerciais contêm um recurso que permitirá que você teste seu código antes de usá-lo ou compilá-lo. Este recurso permite que você veja qual é o erro e em que linha pode ser encontrada. Pegue a Tradecision, por exemplo: Aqui podemos ver que a Tradecision nos dá a localização (linha e coluna) do erro, uma descrição do erro e o tipo de erro (neste caso, é sintático). Se olharmos para a expressão, podemos ver que na coluna 8 xrossBelow não é uma função válida. Se substituímos o x (que está na coluna 8) com um c, então teremos um código válido. Se olharmos o MetaTrader, podemos ver que os erros surgiram quando tentamos compilar o programa: Aqui podemos ver que, na descrição, a variável BuyNow não foi definida. Clicar duas vezes nessa mensagem de erro nos levará ao local específico do erro no código. Como você pode ver, a maioria dos aplicativos comerciais oferece uma maneira fácil de localizar erros técnicos e corrigi-los. Reparar os erros simplesmente envolve sistematicamente passar por cada mensagem de erro e, em seguida, recompilar o código e ou aplicar o sistema de negociação em seus gráficos. Otimizando seu sistema de negociação Algumas aplicações comerciais permitem selecionar variáveis a serem otimizadas. Tradecision, por exemplo, permite que você selecione facilmente uma variável e substitua-a pelo código que tentará a otimização. A otimização em si é simplesmente um processo que encontra o valor ótimo para um elemento do sistema comercial específico com base em resultados e desempenho anteriores. Note-se que a sobre-otimização resulta em sistemas de negociação que não conseguem se adaptar às condições do mercado, é importante apenas otimizar algumas variáveis importantes, nem todas as variáveis. Aqui está o aspecto da funcionalidade de otimização na Tradecision: você pode ver que declaramos Duas novas variáveis e configurá-las como iguais. Simplesmente significa que o programa de negociação irá substituir isso pelo número ótimo. Em seguida, você pode ver que usamos as novas variáveis dentro de nossa estratégia comercial. Finalmente, estabelecemos um intervalo para os números (para que o programa não procure no infinito). Alguns outros programas de negociação possuem recursos que operam de forma semelhante, permitindo que você substitua o valor numérico por um e informe o aplicativo de negociação para otimizar. Conclusão Até agora, você deveria ter desenvolvido um sistema comercial comercial em que você possa ter confiança. Na próxima parte desta série, você aprenderá a aplicar o seu sistema de negociação aos gráficos e a como usá-lo para tomar decisões comerciais. Cálculo de sistemas de negociação: Usando seu Sistema de Sistema de Intenção Sistema de Teste de Caso Altova XMLSpy e MapForce ajudam a analisar resultados de 30.000 automatizados Testes do sistema. Localizado a aproximadamente 100 milhas a oeste de Londres, o Ingenuity System Testing Services Ltd. combina testes de sistema puro e técnicas de gerenciamento de qualidade com iniciativas de gerenciamento de risco de negócios para criar e gerenciar testes de sistemas de software complexos. A ingenuidade funciona como um parceiro com desenvolvedores e usuários finais durante o desenvolvimento de software para permitir aos clientes tomar decisões comerciais qualificadas sobre os sistemas de que dependem para o sucesso. A ingenuidade é especializada em testes de sistemas de software que suportam o mercado dinâmico em tempo real de negociação eletrônica de instrumentos de seguros. Esses sistemas de seguros geralmente incluem um mecanismo de cotação que comunica os recursos dos produtos individuais das seguradoras e um componente de processo de negócios EDI (Electronic Data Interchange) para completar as transações. Embora o padrão EDI forneça elementos fixos, como conjuntos de perguntas e formatos de mensagens, há variações significativas específicas do produto que também devem ser comunicadas, e é fundamental que esses sistemas representem cada produto seguro com precisão. Adicionando outro nível de complexidade, o software do sistema de seguros neste estudo de caso foi escrito por um terceiro contratado contratado pelas companhias de seguros e o sistema teve que se mostrar capaz de descrever muitas alternativas de produtos em um ambiente com mudanças freqüentes nos produtos. O engenho ganhou uma reputação de entrega, integridade e profissionalismo atempados, com mais de dez anos de experiência no campo e muitos clientes entre as 10 principais seguradoras em várias categorias. Suas ações lhes permitiram manter e aprimorar essa reputação diante de requisitos técnicos cada vez maiores. Ficou claro que o pacote Altova de ferramentas XML tinha sido concebido para que as coisas acontecessem, Simon Mills, Diretor Gerente de Engenharia O projeto exigiu a Ingenuity para colaborar com um desenvolvedor de software independente em um mecanismo de validação para uma grande atualização dos desenvolvedores de seguros existentes sistema. Este utilitário seria usado pela Ingenuity para testar completamente o sistema de desenvolvedores e seria fornecido às companhias de seguros para ajudá-los em seus próprios esforços para implementar a atualização e validar o sistema atualizado. A conclusão bem sucedida de testes independentes foi uma obrigação contratual entre a companhia de seguros e o desenvolvedor de software. O fornecimento exigido da Ingenuity foi a verificação, através de sua série de testes, de que o mecanismo de validação de software criado pelo desenvolvedor produziu resultados precisos e que o software do sistema de seguros atuou conforme o desenvolvedor representou. O mecanismo de validação foi projetado para enviar um conjunto de parâmetros para o sistema de seguro que simula um concurso de produto, um pedido de um usuário ou algum outro conjunto normal de entradas de sistema. O sistema processa os registros do motor de entrada e de validação e fornece saída para o testador que documenta os resultados. O testador então compara os resultados reais com os resultados esperados e reconcilia quaisquer diferenças para determinar se o sistema está funcionando corretamente ou não. O engenho simplesmente não executou testes de aceitação na versão final na conclusão do projeto. Os testadores de ingenuidade trabalharam em conjunto com os desenvolvedores de software, verificando cada iteração de desenvolvimento conforme foi concluída. Com base em esforços anteriores testando sistemas de negociação de seguros, a Ingenuity já possuía centenas de planos de testes e inúmeros milhares de testes unitários que seriam aplicáveis ao novo sistema. Os dados de teste das entradas de amostra e os resultados esperados foram armazenados em formatos específicos usados pelos sistemas anteriores. A coleção de resultados de teste continha variações complexas de resultados que o Ingenuity extraíria, reformataria em texto usando um utilitário de conversão interno rudimentar e entraria em um utilitário de comparação baseado em Lotus para análise. A nova versão do sistema, no entanto, não era compatível com os formatos de dados anteriores. O novo sistema exigiu a entrada de arquivos XML e forneceu resultados de resultados XML. A equipe de desenvolvimento de software usou um processo de desenvolvimento rápido e exigiu que os testadores continuassem. Os desenvolvedores também tiveram o hábito de alterar os esquemas XML para atender às demandas do momento e nem sempre documentaram adequadamente suas últimas mudanças. Estamos testando especialistas, não desenvolvedores de tempo integral, disse Simon Mills, diretor-gerente da Ingenuity. Mas somos altamente qualificados em criar nossos próprios utilitários. Para a nossa primeira rodada de testes contra o novo sistema, escolhemos usar o Lotus para mapear dados de entrada e saída no formato correto e, em seguida, formá-lo para XML. Nossa ferramenta de análise inicial para converter o formato anterior de nossos testes em XML e a interpretação dos arquivos de resultados, enquanto gerenciável, levaria cinco a seis dias-homem para fazer o robusto, Mills continuou. Além disso, tivemos que criar novas regras de análise para cada variação da produção de resultados, e poderíamos esperar repetir esse esforço com cada iteração de software à medida que os desenvolvedores mudaram seus esquemas. Como os arquivos de entrada e resultados de teste estavam em XML, uma abordagem XML nativa para gerenciar os dados do teste parecia mais lógica e potencialmente mais eficiente. A equipe do Ingenuity pesquisou tecnologias XML testando todos os utilitários de manipulação XML que poderiam encontrar na Internet, de acordo com a Mills. Ficou claro que a suíte Altova de ferramentas XML tinha sido planejada para fazer as coisas acontecerem, disse ele. Primeiro, a equipe do Ingenuity determinou que eles não precisavam confiar na documentação dos desenvolvedores de software dos XML Schemas para seus arquivos de entrada e resultados. Uma vez que tanto a entrada como os resultados foram arquivos XML, o Ingenuity usou o Altova XMLSpy para abrir arquivos de entrada e resultados fornecidos pelo desenvolvedor e gerar os esquemas automaticamente usando os aplicativos incorporados. Gerar o comando DTDSchema. A seleção do menu XMLSpy Generate DTDSchema facilita a criação de um esquema a partir de um documento XML de exemplo. A caixa de diálogo XMLSpy Generate DTDSchema permite controlar cenários de enumeração e representação de elementos complexos durante a criação do esquema. Em seguida, o Ingenuity utilizou o Altova MapForce para extrair os resultados relevantes, executar os cálculos necessários e produzir uma tabela facilmente compreensível no formato baseado em texto exigido pelo seu utilitário de análise local. Para mapear os dados no formato necessário, um esquema gerado XMLSpy da etapa anterior foi primeiro inserido no painel de design de aplicativos e vinculado a um documento de resultados XML correspondente como fonte de dados. Em seguida, um arquivo de texto foi especificado como o alvo do mapeamento de dados com todas as configurações apropriadas definidas. Para executar cálculos e manipular os dados na estrutura de saída necessária, as regras padrão de processamento de dados foram simplesmente arrastadas da janela das bibliotecas de funções do MapForce e caiu no design do mapeamento. Em seguida, as linhas de conexão foram retiradas dos elementos de dados de origem XML Schema, através das regras de processamento de dados conforme necessário, para os elementos de dados de destino no novo arquivo de texto. Isso foi tudo aí. A saída de cada mapeamento de dados foi salva em um arquivo e foi aberta de forma transparente no utilitário de análise do Ingenuitys. O tempo total de desenvolvimento desde a criação do esquema através do refinamento do mapeamento foi inferior a quatro horas para um único engenheiro de testes de Ingenuity. Os arquivos de texto em formato CSV ou delimitado por tabulações geralmente são o menos comum denominador entre sistemas incompatíveis. O MapForce oferece um extenso controle sobre arquivos de texto. A janela auxiliar MapForce Function Libraries facilita o acesso às funções de processamento de dados que podem ser executadas em dados de origem como parte da integração. Os testadores de engenhos criaram este mapeamento MapForce para extrair informações críticas do arquivo de resultados baseado em XML representado à esquerda e crie tabelas baseadas em texto mostradas à direita. A análise do arquivo de resultados de um teste de benchmark levou 45 minutos com o utilitário de análise original da Ingenuitys. Em contraste, o método MapForce processou os mesmos dados em 11 segundos. A abordagem que o Ingenuity levou com o MapForce permitiu que os resultados de 30.000 testes automatizados, criando 90.000 a 100.000 resultados, estejam disponíveis para comparação automática em menos de 6 minutos, do início ao fim. A ingenuidade estima que a diferença que isso fez com o esforço de teste global é mais do que 100 vezes, uma vez que os testes tiveram que ser repetidos em cada iteração de desenvolvimento do sistema de comércio de seguros. No passado, os planos de teste eram limitados por pressões de prazo. Nós sempre tivemos que nos concentrar nos melhores 100 a 200 testes usando apenas dois produtos de seguro de amostra, explicou Mills. Onde o conjunto completo de testes relevantes é de cerca de 700 e o número total de produtos de seguros tratados pelo sistema pode ser 36, a velocidade total do nosso novo processo nos permitiu expandir amplamente a definição de testes ideais. Isso não está fazendo mais testes porque podemos, está fazendo todos os testes que gostaríamos de fazer, mas essas limitações de tempo impedidas no passado. Estavam criando uma certeza muito maior para nossos clientes. Muitos de nós não tinham mais do que uma apreciação técnica do XML antes de ter que usá-lo e viver com ele para este projeto, disse Bill Gribble, Diretor Técnico de Ingenuidade. Os tutoriais que acompanham os produtos da Altovas revelaram-se perfeitamente suficientes para mover tecnicamente apreciadoramente tecnicamente adeptos em períodos de tempo muito curtos. Pretendemos mover todos os nossos exercícios de mapeamento, dos quais temos centenas, no ambiente Altova MapForce, concluiu. Descubra como o MapForce pode ajudar com o seu desafio de integração de dados. Teste de QA e Testes de Software do QUALQUER PRODUTO Questões Frequentes, Parte 1 O que é Software Software de Garantia de Software O QA envolve todo o processo de desenvolvimento de software - monitorando e melhorando o processo, certificando-se de que qualquer acordo - seguindo processos, padrões e procedimentos e garantindo que os problemas sejam encontrados e tratados. Está orientado para a prevenção. (Consulte a seção de livraria Categoria de software QA para uma lista de livros úteis sobre Software Quality Assurance.) O que é o Teste de Teste de Software envolve a operação de um sistema ou aplicativo sob condições controladas e avaliando os resultados (por exemplo, se o usuário estiver na interface A do Aplicativo enquanto usa o hardware B, e faz C, então D deve acontecer). As condições controladas devem incluir condições normais e anormais. O teste deve intencionalmente tentar fazer as coisas dar errado para determinar se as coisas acontecem quando não devem ou as coisas não acontecem quando deveriam. Está orientado para a detecção. (Consulte as categorias de Testes de Software da Seção de Livraria para obter uma lista de livros úteis sobre Testes de Software.) As organizações variam consideravelmente em como eles atribuem responsabilidade por QA e testes. Às vezes, eles são a responsabilidade combinada de um grupo ou indivíduo. Também são comuns equipes de projetos e equipes ágeis que incluem uma combinação de testadores e desenvolvedores que trabalham em estreita colaboração, com testes globais e processos de controle de qualidade monitorados por um gerente de projeto, um mestre scrum ou outra pessoa apropriada. Dependerá do que melhor corresponda ao tamanho de uma organização, abordagem de desenvolvimento e estrutura de negócios. Observe que o teste pode ser feito por máquinas ou pessoas. Quando feito por máquinas (computadores geralmente), é freqüentemente chamado de testes automatizados - veja a página SoftwareQATest LFAQ para obter mais informações sobre testes automatizados. Claro que um humano ainda tem que desenvolver a estratégia de automação e os casos de teste e escrever o código de automação de teste. Quais são algumas das principais falhas do sistema de computador causadas por erros de software. Várias companhias aéreas principais sofreram diversos problemas importantes do sistema informático durante o período de julho a outubro de 2016, resultando em milhares de atrasos ou cancelamentos de voos em todo o mundo. Entre outros impactos, isso levou a um inquérito ao Congresso dos Estados Unidos sobre o motivo pelo qual os sistemas informáticos da linha aérea se tornaram tão propensos ao fracasso. A agência espacial européia ExoMars Schiaparelli acidente espacial aterrissou em Marte em outubro de 2016 como resultado de problemas na manipulação de pequena quantidade de dados de sensor ruim nos sistemas informáticos de naves espaciais. Acredita-se que uma solução de software em vez de uma solução de hardware mais difícil resolverá o problema para futuras missões. Uma atualização de setembro de 2016 de um sistema operacional principal do smartphone resultou em perda de usuários de muitos usuários de seus smartphones. Uma série de versões de bug-fix durante os meses seguintes resolveu muitos problemas, mas às vezes introduziu problemas adicionais. Li Insetos no sistema informático de um grande departamento de polícia urbana relataram ter comprometido potencialmente milhares de casos criminais ao longo de um período de anos. Os relatórios de notícias de março de 2015 indicaram que uma revisão extensiva de casos criminais passados estava em andamento para determinar quais os casos afetados. Em fevereiro de 2015, relatou-se que um sistema de controle de tráfego aéreo de todas as nações caiu devido a um erro em uma única linha de código (entre milhões de linhas de código nos sistemas de controle de tráfego aéreo). O sistema foi consertado de forma segura dentro de uma hora, no entanto milhares de viajantes foram deixados à terra e tiveram atrasos nos voos. Um dos principais sistemas operacionais encontrou um bug que existe há pelo menos 19 anos, de acordo com relatórios em novembro de 2014. A falha de segurança crítica potencialmente permitia o controle remoto de um computador de usuários por hackers. A falha foi corrigida até o momento do anúncio. Uma atualização de bug-fix para outro sistema operacional principal foi retirada dentro de poucas horas após sua liberação em setembro de 2014 após uma grande quantidade de relatórios de novos erros importantes. A empresa pediu desculpas e lançou outra nova atualização, um dia depois. Em julho de 2014, os problemas de software com um aplicativo de exames profissionais em todo o país resultaram em envios on-line atrasados ou atrasados das respostas ao serviço de gerenciamento de exames. Os prazos de entrega dos exames tiveram que ser estendidos para permitir o processamento final. A empresa de gerenciamento de exames emitiu uma desculpa. Depois de gastar 130 milhões em sua problemática troca de seguro de saúde, um dos 14 estados dos EUA que optou por criar sua própria troca de seguro de saúde (em vez de utilizar uma troca fornecida pelo governo federal) contratou um novo contratado em abril de 2014 para refazer o site. Entre os muitos problemas com o site inicial, já que aconteceu em outubro de 2013, segundo informações, centenas de inscritos receberam informações de inscrição com nomes e datas de nascimento de outros inscritos. Foi estimado que a renovação custaria mais 60 milhões. Além disso, o contratante primário e o subcontratado do site estão envolvidos em uma ação judiciária entre si e, no último relatório, foram em arbitragem. Eventualmente, foi relatado que o contratante principal concordou em pagar 45 milhões ao governo para evitar uma ação judicial. Em abril de 2014, o sistema de chamada de emergência 911 para 7 Estados Unidos estava supostamente indisponível por 6 horas devido a um erro de software que resultou em mais de 6000 chamadas de emergência não atendidas. Um grande número de relatórios e discussões surgiram na mídia em fevereiro de 2014, em relação a erros em uma moeda digital descentralizada popular. Embora uma grande troca de moeda digital tenha culpado certos dos insetos como uma causa de uma grande perda monetária equivalente a centenas de milhões de dólares, houve uma controvérsia considerável quanto ao significado dos insetos em contribuir com quaisquer perdas. Embora a troca problemática tenha sido encerrada, outras trocas permaneceram abertas e a moeda digital continua popular. Um grande fabricante de automóveis lembrou cerca de 2 milhões de veículos em fevereiro de 2014 para corrigir um problema de software que poderia causar problemas nos veículos eletrônicos ou poderia fazer com que ele fosse parcialmente desligado. O teste de entrada on-line cronometrado para uma das escolas secundárias de tecnologia mais seletiva nos EUA experimentou problemas no sistema, incluindo telas congeladas e ensaios perdidos em janeiro de 2014. Depois, as autoridades escolares avaliaram a situação para determinar como lidar com os muitos estudantes cujas aplicações eram Bloqueados ou desfavorecidos por causa dos problemas. Em janeiro de 2014, um grande serviço de e-mail gratuito falhou, juntamente com muitos outros serviços populares, devido a um bug de software, resultando em interrupções de serviços para milhões de usuários. A empresa conseguiu resolver o problema para a maioria dos usuários em menos de uma hora e emitiu uma desculpa. Relatos generalizados apareceram na mídia em outubro de 2013 sobre bugs significativos em um site de aplicativos universitários on-line usado por estudantes para se candidatar a uma ou mais centenas de universidades nos Estados Unidos e em vários outros países. Houve relatórios sobre o upload de problemas, perda de peças ou todos os ensaios necessários, problemas com formatação, problemas com cartas de recomendação e muito mais. Algumas faculdades ofereceram o prazo de inscrição para ajudar a mitigar o problema. Em outubro de 2013, o governo federal dos EUA abriu um novo site de troca de seguros de saúde que, durante seus primeiros meses de operação, gerou uma grande cobertura de imprensa nacional e mundial de seus muitos problemas relatados. Os problemas foram atribuídos, entre outras coisas, ao tempo inadequado para o teste do sistema. Uma onda tecnológica bem divulgada foi iniciada para tentar melhorar o site. Um importante mercado acionário asiático foi divulgado em um dia em agosto de 2013, alegadamente devido a bugs em um sistema de pedidos de títulos de corretagem asiáticos que resultou em mais de 3 bilhões de ordens de negociação incorretas. Também foi relatado que causou uma perda de 32 milhões para a corretora, uma queda significativa no preço das ações e restrições e investigações da agência reguladora do país. Durante um período curto na segunda metade de agosto de 2013, uma variedade diversificada de grandes negócios em categorias como mídia, serviços em nuvem, e-mail, mercados de ações, motores de busca, varejo on-line e banco de investimento sofreu interrupções e interrupções em linha devido a problemas de software , Problemas de rede ou causas não relatadas. Durante um conjunto de interrupções relacionadas, foi relatado que o tráfego mundial de internet caiu 40. Um erro de software no sistema de negociação de um grande banco de investimentos teria causado uma grande porcentagem de operações de derivativos errôneas durante os primeiros 15 minutos do dia de negociação em Uma grande bolsa de valores em agosto de 2013. As trocas trabalharam durante o dia para determinar quais transações tiveram que ser canceladas. Em abril de 2013, foi relatado que uma grande troca financeira não pôde abrir para negociação devido a uma falha de software. Uma vez que as correções foram realizadas, as negociações foram retomadas 3 horas atrasadas. Centenas de fechaduras de cárter controladas por computador foram abertamente abertas em uma prisão de 1000 prisioneiros em abril de 2013 devido ao que se acreditava ser um problema de software, de acordo com relatórios da mídia. Uma emergência de segurança foi declarada e nenhum preso escapou. Foi o segundo incidente desse tipo dentro de uma semana. No último relatório, os sistemas ainda estavam sendo testados para determinar a causa do mau funcionamento. Em fevereiro de 2013, um fabricante de dispositivos móveis chegou a um acordo de acordo com o governo dos EUA, porque, entre outras coisas, não conseguiu fornecer treinamento de segurança a sua equipe de engenharia, não conseguiu revisar ou testar o software em seus dispositivos móveis para potenciais vulnerabilidades de segurança. . A empresa concordou com uma série de ações corretivas. Em setembro de 2012, o CEO de um importante fabricante de smartphones lançou uma carta pedindo desculpas pela má qualidade de uma nova aplicação de mapeamento amplamente utilizada. Os problemas com o novo software de negociação instalado por um grande fabricante de mercado de ações resultaram em uma perda de um dia para a empresa de mais de 400 milhões de acordo com notícias em agosto de 2012. A atividade do mercado de ações em muitas ações foi significativamente interrompida. Cinco meses após o evento, o preço das ações da empresa, que faz o mercado, ainda baixou mais de 60. Em julho de 2012, um show de fogos de artifício inteiro de 17 minutos e 7000 shell foi desativado involuntariamente de uma só vez no início da exibição, alegadamente devido A uma falha no sistema de computador que controla a seqüenciamento de fogos de artifício. Um erro em um grande gerenciamento de sistemas operacionais de segundos de salto (um ajuste ocasional para os relógios atômicos do mundo) resultou em problemas de sistema relatados em todo o mundo em julho de 2012. Embora uma correção para o bug tenha sido desenvolvida no início do ano, algumas versões do O sistema operacional ainda não havia sido corrigido. Uma falha de software em um grande banco europeu resultou em milhões de clientes que não conseguiram acessar seu dinheiro por quatro dias em junho de 2012, de acordo com relatórios da mídia. O problema ocorreu após uma atualização de software e foi devido a um teste ruim ou um planejamento de contingência ruim, de acordo com os relatórios. Em março de 2012, a Oferta Pública Inicial de ações de uma nova bolsa de valores foi cancelada devido a bugs de software em sua plataforma de negociação que interferiram na negociação de estoques, incluindo seu próprio estoque de IPO, de acordo com relatórios da mídia. A plataforma de negociação de alta velocidade já estava lidando com mais de 10% de todas as negociações em títulos dos EUA, mas o processamento da negociação inicial de IPO era novo para o sistema e, embora tivesse sido submetido a testes, não conseguiu lidar adequadamente com a inicialização do IPO Comércios. O problema também afetou brevemente a negociação de outras ações e outras bolsas de valores. Um erro do dia útil foi causado a interrupção do serviço para muitos clientes de um grande fornecedor de infraestrutura de nuvem pública em fevereiro de 2012. A empresa posteriormente declarou que estariam tomando medidas para melhorar seus testes. Foi relatado que os problemas de software em um sistema automatizado de cobrança de rodovias rodoviárias causaram encargos errôneos para milhares de clientes em um curto período de tempo em dezembro de 2011. Um município dos EUA descobriu que seus programas informáticos estaduais atribuíam milhares de eleitores para locais de votação inválidos em novembro de 2011 Para uma próxima eleição devido aos problemas de sistemas que aceitam novas informações de limites do distrito de votação. Em agosto de 2011, um grande varejista norte-americano iniciou seu próprio site de comércio eletrônico on-line, depois de contratá-lo por muitos anos. Foi relatado que, nos primeiros meses, o site caiu seis vezes, os links da página inicial foram encontrados para não funcionar, os registros de presentes foram relatados não funcionando corretamente, e o presidente das divisões online deixou a empresa. Um novo sistema de tratamento de queixas de cartão de crédito com o governo dos EUA não estava funcionando corretamente de acordo com os relatórios de agosto de 2011. Os bancos eram obrigados a responder às queixas encaminhadas para eles do sistema, mas devido a erros de sistema, as queixas não estavam sendo constantemente encaminhadas para as empresas conforme o esperado. Contudo, o sistema não foi devidamente testado. Os relatórios de notícias na Ásia, em julho de 2011, informaram que os erros de software em um sistema nacional de testes e classificação computadorizados resultaram em resultados de teste incorretos para dezenas de milhares de estudantes do ensino médio. O ministério nacional da educação teve que reeditar relatórios de notas para quase 2 milhões de estudantes em todo o país. Em meados de 2011, foi relatado que o novo e caro software do sistema de tribunais do governo provincial tinha milhares de erros durante o primeiro ano de operação que causou erros como datas incorretas para a suspensão de licenças de motorista, adultos sentenciados em tribunais de menores, registros incorretos de Um arguido apareceu no tribunal e informações incorretas em mandados. Em abril de 2011, foram encontrados erros no popular software de smartphone que resultaram em armazenamento de dados de longo prazo no telefone que poderiam ser utilizados no rastreamento de localização do telefone, mesmo quando se acreditava que os serviços do localizador no telefone estavam desligados. Uma atualização de software foi lançada várias semanas mais tarde, o que deveria resolver os problemas. Em março de 2011, um grande banco asiático experimentou falhas no sistema informático, resultando em milhares de caixas eletrônicos indisponíveis, internet banking indisponíveis por 3 dias, atrasos nos pagamentos de salários a centenas de milhares de trabalhadores e mais de 10 bilhões em transações com falhas, de acordo com novos relatórios . A causa foi atribuída à incapacidade dos sistemas para lidar com um aumento nas transações. O banco teve que consultar os bancos rivais para obter ajuda para lidar com o enorme número de transações com falhas e, dentro de alguns meses, o presidente dos bancos e chefe de TI renunciaram. Uma agência reguladora de valores mobiliários exigiu que uma empresa de investimentos pague uma multa de 25 milhões de euros. Por ocultar um erro significativo no código do computador. E para pagar 217 milhões de clientes. Para reparar danos com o erro de codificação. De acordo com o site das agências regulatórias em fevereiro de 2011. Os erros de codificação foram declarados no modelo de investimento quantitativo usado pela empresa de investimentos para gerenciar os investimentos dos clientes. Problemas de software em uma nova atualização de software para farecards em um importante sistema de trânsito urbano, teria resultado em uma perda de meio milhão de dólares antes que o software fosse resolvido, de acordo com notícias de outubro de 2010. Em outubro de 2010, um grande município para o novo sistema de votação eleitoral foi aberto ao público por um período de testes em que os usuários foram convidados a tentar quebrá-lo. Dentro de alguns dias, o site foi penetrado por hackers estudantes universitários e sua funcionalidade alterada. Uma empresa de software de jogos lançou um novo produto em meados de 2010, que teria sido tão buggy que o CEO enviou aos clientes uma carta pedindo desculpas pela má qualidade inicial do jogo. Um aplicativo de banco on-line em smartphone foi relatado em julho de 2010 para ter um bug de segurança que afeta mais de 100 mil clientes. Os usuários conseguiram atualizar para uma versão de software mais recente que corrigiu o problema. Em julho de 2010, uma grande fabricante de smartphones informou que seu software continha um erro de longa data que resultou em indicadores incorretos de força do sinal na interface do telefone. Contudo, os clientes se queixaram do problema há vários anos. A empresa forneceu uma solução para o problema várias semanas depois. Os relatórios de notícias em abril de 2010 indicaram que um importante fornecedor de software de antivírus forneceu um arquivo de atualização de assinatura defeituoso que causou que os computadores travassem, reinicializassem continuamente ou perdessem a conectividade de rede. Isto foi devido a uma mudança problemática no processo de teste dos vendedores. As histórias dos sistemas afetados incluíram departamentos de polícia reduzidos a relatórios manuscritos, hospitais que afastaram pacientes e fechamento de supermercados. O vendedor de software foi vendido dentro de um ano e já não era uma empresa independente. Verificou-se que um grande fabricante de automóveis descobriu que um problema de software foi a causa das reações tardias de frenagem do veículo em um de seus modelos populares, de acordo com relatórios da mídia de fevereiro de 2010. Os serviços de e-mail de um importante sistema de smartphones foram interrompidos ou indisponíveis por nove horas em dezembro de 2009, a segunda interrupção do serviço em uma semana, de acordo com notícias. Acredita-se que os problemas sejam devidos a erros nas novas versões do software do sistema de e-mail. Foi relatado em agosto de 2009 que um grande distrito escolar suburbano introduziu um novo sistema informático que estava atormentado com insetos e resultou em muitos estudantes que começaram o ano letivo sem horários ou com horários incorretos e muitos problemas com notas. Os alunos e os pais que se incomodaram começaram a criar um site de redes sociais para compartilhar queixas. Em fevereiro de 2009, os usuários de um site principal de mecanismos de busca foram impedidos de clicar em sites listados nos resultados de pesquisa por parte de um dia. Foi supostamente devido a um software que não efetivamente lida com um arquivo de referência auxiliar interno colocado equivocadamente, que foi atualizado freqüentemente para uso pelo mecanismo de pesquisa. Os usuários, em vez de poder clicar em sites listados, foram redireccionados para um site intermediário que, como resultado da enorme carga repentina, foi tornado inutilizável. Uma grande companhia de seguros de saúde teria sido banida por reguladores de vender certos tipos de apólices de seguro em janeiro de 2009 devido a problemas contínuos do sistema informático que resultaram em negação de cobertura para medicamentos necessários e sobrecarga equivocada ou cancelamento de benefícios. A agência reguladora foi citada afirmando que os problemas representavam uma séria ameaça para a saúde e a segurança dos beneficiários. Um relatório de notícias em janeiro de 2009 indicou que uma grande empresa de consultoria de TI e gerenciamento ainda estava lutando anos de problemas na implementação de seus próprios sistemas contábeis internos, incluindo uma implementação de 2005 que teria sido tentada sem testes adequados. Em agosto de 2008, relatou-se que mais de 600 vôos de companhias aéreas americanas foram significativamente atrasados devido a uma falha de software no sistema de controle de tráfego aéreo americano da FAA. O problema foi afirmado como uma mudança de pacote que falhou devido a uma incompatibilidade do banco de dados e ocorreu na parte do sistema que lida com os planos de vôo necessários. Os problemas do sistema de software em uma grande companhia de seguros de saúde em agosto de 2008 foram a causa de uma violação de privacidade de informações de saúde pessoal por várias centenas de milhares de clientes, de acordo com notícias. Foi alegado que o problema era devido ao software que não foi testado de forma abrangente. Um revendedor de roupas importante foi supostamente atingido com problemas significativos de software e sistema ao tentar atualizar seus sistemas de varejo em linha em junho de 2008. Os problemas permaneceram em curso por algum tempo. Quando a empresa realizou seu relatório financeiro trimestral público, os problemas do software e do sistema foram reivindicados como a causa dos fracos resultados financeiros. Os problemas de software no sistema automatizado de classificação de bagagem de um grande aeroporto em fevereiro de 2008 impediram que milhares de passageiros verificassem bagagem para seus vôos. Foi relatado que a falha ocorreu durante uma atualização de software, apesar do pré-teste do software. O sistema continuou a ter problemas nos meses subseqüentes. Os relatórios de notícias em dezembro de 2007 indicaram que problemas de software significativos continuavam ocorrendo em um novo sistema de folha de pagamento ERP para um grande sistema escolar urbano. Acredita-se que mais de um terço dos funcionários receberam salários incorretos em várias ocasiões desde que o novo sistema entrou em operação em janeiro anterior, resultando em pagamentos em excesso de 53 milhões, bem como em pagamentos insuficientes. Um sindicato de funcionários trouxe uma ação judicial contra o sistema escolar, o custo do sistema ERP deveria aumentar em 40, e a parte não-folha de pagamento do sistema ERP foi adiada. Testes inadequados contribuíram para os problemas. O sistema escolar ainda estava trabalhando na limpeza após os problemas em dezembro de 2009, chegando a trazer ações judiciais contra alguns funcionários para que eles devolvessem pagamentos em excesso. In November of 2007 a regional government reportedly brought a multi-million dollar lawsuit against a software services vendor, claiming that the vendor minimized quality in delivering software for a large criminal justice information system and the system did not meet requirements. The vendor also sued its subcontractor on the project. In June of 2007 news reports claimed that software flaws in a popular online stock-picking contest could be used to gain an unfair advantage in pursuit of the games large cash prizes. Outside investigators were called in and in July the contest winner was announced. Reportedly the winner had previously been in 6th place, indicating that the top 5 contestants may have been disqualified. A software problem contributed to a rail car fire in a major underground metro system in April of 2007 according to newspaper accounts. The software reportedly failed to perform as expected in detecting and preventing excess power usage in equipment on new passenger rail cars, resulting in overheating and fire in the rail car, and evacuation and shutdown of part of the system. Tens of thousands of medical devices were recalled in March of 2007 to correct a software bug. According to news reports, the software would not reliably indicate when available power to the device was too low. A September 2006 news report indicated problems with software utilized in a state governments primary election, resulting in periodic unexpected rebooting of voter checkin machines, which were separate from the electronic voting machines, and resulted in confusion and delays at voting sites. The problem was reportedly due to insufficient testing. In August of 2006 a U. S. government student loan service erroneously made public the personal data of as many as 21,000 borrowers on its web site, due to a software error. The bug was fixed and the government department subsequently offered to arrange for free credit monitoring services for those affected. A software error reportedly resulted in overbilling of up to several thousand dollars to each of 11,000 customers of a major telecommunications company in June of 2006. It was reported that the software bug was fixed within days, but that correcting the billing errors would take much longer. News reports in May of 2006 described a multi-million dollar lawsuit settlement paid by a healthcare software vendor to one of its customers. It was reported that the customer claimed there were problems with the software they had contracted for, including poor integration of software modules, and problems that resulted in missing or incorrect data used by medical personnel. In early 2006 problems in a governments financial monitoring software resulted in incorrect election candidate financial reports being made available to the public. The governments election finance reporting web site had to be shut down until the software was repaired. Trading on a major Asian stock exchange was brought to a halt in November of 2005, reportedly due to an error in a system software upgrade. The problem was rectified and trading resumed later the same day. A May 2005 newspaper article reported that a major hybrid car manufacturer had to install a software fix on 20,000 vehicles due to problems with invalid engine warning lights and occasional stalling. In the article, an automotive software specialist indicated that the automobile industry spends 2 billion to 3 billion per year fixing software problems. Media reports in January of 2005 detailed severe problems with a 170 million high-profile U. S. government IT systems project. Software testing was one of the five major problem areas according to a report of the commission reviewing the project. In March of 2005 it was decided to scrap the entire project. In July 2004 newspapers reported that a new government welfare management system in Canada costing several hundred million dollars was unable to handle a simple benefits rate increase after being put into live operation. Reportedly the original contract allowed for only 6 weeks of acceptance testing and the system was never tested for its ability to handle a rate increase. Millions of bank accounts were impacted by errors due to installation of inadequately tested software code in the transaction processing system of a major North American bank, according to mid-2004 news reports. Articles about the incident stated that it took two weeks to fix all the resulting errors, that additional problems resulted when the incident drew a large number of e-mail phishing attacks against the banks customers, and that the total cost of the incident could exceed 100 million. A bug in site management software utilized by companies with a significant percentage of worldwide web traffic was reported in May of 2004. The bug resulted in performance problems for many of the sites simultaneously and required disabling of the software until the bug was fixed. According to news reports in April of 2004, a software bug was determined to be a major contributor to the 2003 Northeast blackout, the worst power system failure in North American history. The failure involved loss of electrical power to 50 million customers, forced shutdown of 100 power plants, and economic losses estimated at 6 billion. The bug was reportedly in one utility companys vendor-supplied power monitoring and management system, which was unable to correctly handle and report on an unusual confluence of initially localized events. The error was found and corrected after examining millions of lines of code. In early 2004, news reports revealed the intentional use of a software bug as a counter-espionage tool. According to the report, in the early 1980s one nation surreptitiously allowed a hostile nations espionage service to steal a version of sophisticated industrial software that had intentionally-added flaws. This eventually resulted in major industrial disruption in the country that used the stolen flawed software. A major U. S. retailer was reportedly hit with a large government fine in October of 2003 due to web site errors that enabled customers to view one anothers online orders. News stories in the fall of 2003 stated that a manufacturing company recalled all their transportation products in order to fix a software problem causing instability in certain circumstances. The company found and reported the bug itself and initiated the recall procedure in which a software upgrade fixed the problems. In August of 2003 a U. S. court ruled that a lawsuit against a large online brokerage company could proceed the lawsuit reportedly involved claims that the company was not fixing system problems that sometimes resulted in failed stock trades, based on the experiences of 4 plaintiffs during an 8-month period. A previous lower courts ruling that . six miscues out of more than 400 trades does not indicate negligence. was invalidated. In April of 2003 it was announced that a large student loan company in the U. S. made a software error in calculating the monthly payments on 800,000 loans. Although borrowers were to be notified of an increase in their required payments, the company will still reportedly lose 8 million in interest. The error was uncovered when borrowers began reporting inconsistencies in their bills. News reports in February of 2003 revealed that the U. S. Treasury Department mailed 50,000 Social Security checks without any beneficiary names. A spokesperson indicated that the missing names were due to an error in a software change. Replacement checks were subsequently mailed out with the problem corrected, and recipients were then able to cash their Social Security checks. It was reported that in April 2002, problems with the integration of several merged bank systems in Japan resulted in millions of errors in ATM transactions, automatic bill payments errors, delayed debits, duplicate debits, and other problems. Reportedly the problems were caused by a delay in the start of the systems integration work and subsequent inadequate testing, and it took more than a month to restore banking operations to normal In March of 2002 it was reported that software bugs in Britains national tax system resulted in more than 100,000 erroneous tax overcharges. The problem was partly attributed to the difficulty of testing the integration of multiple systems. A newspaper columnist reported in July 2001 that a serious flaw was found in off-the-shelf software that had long been used in systems for tracking certain U. S. nuclear materials. The same software had been recently donated to another country to be used in tracking their own nuclear materials, and it was not until scientists in that country discovered the problem, and shared the information, that U. S. officials became aware of the problems. According to newspaper stories in mid-2001, a major systems development contractor was fired and sued over problems with a large retirement plan management system. According to the reports, the client claimed that system deliveries were late, the software had excessive defects, and it caused other systems to crash. In January of 2001 newspapers reported that a major European railroad was hit by the aftereffects of the Y2K bug. The company found that many of their newer trains would not run due to their inability to recognize the date 31122000 the trains were started by altering the control systems date settings. News reports in September of 2000 told of a software vendor settling a lawsuit with a large mortgage lender the vendor had reportedly delivered an online mortgage processing system that did not meet specifications, was delivered late, and didnt work. In early 2000, major problems were reported with a new computer system in a large suburban U. S. public school district with 100,000 students problems included 10,000 erroneous report cards and students left stranded by failed class registration systems the districts CIO was fired. The school district decided to reinstate its original 25-year old system for at least a year until the bugs were worked out of the new system by the software vendors. A review board concluded that the NASA Mars Polar Lander failed in December 1999 due to software problems that caused improper functioning of retro rockets utilized by the Lander as it entered the Martian atmosphere. During an attempt to put a commercial sateliite into orbit in October 1999, the 2nd launch of a new private rocket launch business reportedly failed due to a software error that caused problems in a valve in the rockets second-stage. In October of 1999 the 125 million NASA Mars Climate Orbiter spacecraft was believed to be lost in space due to a simple data conversion error. It was determined that spacecraft software used certain data in English units that should have been in metric units. Among other tasks, the orbiter was to serve as a communications relay for the Mars Polar Lander mission, which failed for unknown reasons in December 1999. Several investigating panels were convened to determine the process failures that allowed the error to go undetected. Bugs in software supporting a large commercial high-speed data network affected 70,000 business customers over a period of 8 days in August of 1999. Among those affected was the electronic trading system of the largest U. S. futures exchange, which was shut down for most of a week as a result of the outages. In April of 1999 a software bug caused the failure of a 1.2 billion U. S. military satellite launch, the costliest unmanned accident in the history of Cape Canaveral launches. The failure was the latest in a string of launch failures, triggering a complete military and industry review of U. S. space launch programs, including software integration and testing processes. Congressional oversight hearings were requested. A small town in Illinois in the U. S. received an unusually large monthly electric bill of 7 million in March of 1999. This was about 700 times larger than its normal bill. It turned out to be due to bugs in new software that had been purchased by the local power company to deal with Y2K software issues. In early 1999 a major computer game company recalled all copies of a popular new product due to software problems. The company made a public apology for releasing a product before it was ready. The computer system of a major online U. S. stock trading service failed during trading hours several times over a period of days in February of 1999 according to nationwide news reports. The problem was reportedly due to bugs in a software upgrade intended to speed online trade confirmations. In April of 1998 a major U. S. data communications network failed for 24 hours, crippling a large part of some U. S. credit card transaction authorization systems as well as other large U. S. bank, retail, and government data systems. The cause was eventually traced to a software bug. January 1998 news reports told of software problems at a major U. S. telecommunications company that resulted in no charges for long distance calls for a month for 400,000 customers. The problem went undetected until customers called up with questions about their bills. In November of 1997 the stock of a major health industry company dropped 60 due to reports of failures in computer billing systems, problems with a large database conversion, and inadequate software testing. It was reported that more than 100,000,000 in receivables had to be written off and that multi-million dollar fines were levied on the company by government agencies. A retail store chain filed suit in August of 1997 against a transaction processing system vendor (not a credit card company) due to the softwares inability to handle credit cards with year 2000 expiration dates. In August of 1997 one of the leading consumer credit reporting companies reportedly shut down their new public web site after less than two days of operation due to software problems. The new site allowed web site visitors instant access, for a small fee, to their personal credit reports. However, a number of initial users ended up viewing each others reports instead of their own, resulting in irate customers and nationwide publicity. The problem was attributed to . unexpectedly high demand from consumers and faulty software that routed the files to the wrong computers. In November of 1996, newspapers reported that software bugs caused the 411 telephone information system of one of the U. S. RBOCs to fail for most of a day. Most of the 2000 operators had to search through phone books instead of using their 13,000,000-listing database. The bugs were introduced by new software modifications and the problem software had been installed on both the production and backup systems. A spokesman for the software vendor reportedly stated that It had nothing to do with the integrity of the software. It was human error. On June 4 1996 the first flight of the European Space Agencys new Ariane 5 rocket failed shortly after launching, resulting in an estimated uninsured loss of a half billion dollars. It was reportedly due to the lack of exception handling of a floating-point error in a conversion from a 64-bit integer to a 16-bit signed integer. Software bugs caused the bank accounts of 823 customers of a major U. S. bank to be credited with 924,844,208.32 each in May of 1996, according to newspaper reports. The American Bankers Association claimed it was the largest such error in banking history. A bank spokesman said the programming errors were corrected and all funds were recovered. In August 1991 the concrete base structure for a North Sea oil platform imploded and sank off the coast of Norway, reportedly due to errors in initially-used design software. The enormous structure, on hitting the seabed, reportedly was detected as a magnitude 3.0 seismic event and resulted in a loss of 700 million. The base structure was eventually redesigned and the full platform was completed two years later, and was still in use as of 2008. On January 1 1984 all computers produced by one of the leading minicomputer makers of the time reportedly failed worldwide. The cause was claimed to be a leap year bug in a date handling function utilized in deletion of temporary operating system files. Technicians throughout the world worked for several days to clear up the problem. It was also reported that the same bug affected many of the same computers four years later. Software bugs in a Soviet early-warning monitoring system nearly brought on nuclear war in 1983, according to news reports in early 1999. The software was supposed to filter out false missile detections caused by Soviet satellites picking up sunlight reflections off cloud-tops, but failed to do so. Disaster was averted when a Soviet commander, based on what he said was a . funny feeling in my gut, decided the apparent missile attack was a false alarm. The filtering software code was rewritten. For more lists of software bugs see Collection of Software Bugs. a large collection of bugs and links to other bug lists maintained by Prof. Thomas Huckle at the Institut fr Informatik in Germany, and a List of software bugs in various categories maintained on Wikipedia. Does every software project need testers While all projects will benefit from testing, some projects may not require independent test staff to succeed. Which projects may not need independent test staff The answer depends on the size and context of the project, the risks, the development methodology, the skill and experience of the developers, and other factors. For instance, if the project is a short-term, small, low risk project, with highly experienced programmers utilizing thorough unit testing or test-first development, then test engineers may not be required for the project to succeed. In some cases an IT organization may be too small or new to have a testing staff even if the situation calls for it. In these circumstances it may be appropriate to instead use contractors or outsourcing, or adjust the project management and development approach (by switching to more senior developers and test-first development, for example). Inexperienced managers sometimes gamble on the success of a project by skipping thorough testing or having programmers do post-development functional testing of their own work, a decidedly high risk gamble. For non-trivial-size projects or projects with non-trivial risks, a testing staff is usually necessary. As in any business, the use of personnel with specialized skills enhances an organizations ability to be successful in large, complex, or difficult tasks. It allows for both a) deeper and stronger skills and b) the contribution of differing perspectives. For example, programmers typically have the perspective of what are the technical issues in making this functionality work. A test engineer typically has the perspective of what might go wrong with this functionality, and how can we ensure it meets expectations. A technical person who can be highly effective in approaching tasks from both of those perspectives is rare, which is why, sooner or later, organizations bring in test specialists. Why does software have bugs miscommunication or no communication - as to specifics of what an application should or shouldnt do (the applications requirements). software complexity - the complexity of current software applications can be difficult to comprehend for anyone without experience in modern-day software development. Multi-tier distributed systems, applications utilizing multiple local and remote web services, use of cloud infrastructure, data communications, enormousdistributed datastores, security complexities, and sheer size of applications have all contributed to the exponential growth in softwaresystem complexity. programming errors - programmers, like anyone else, can make mistakes. dependencies among code modules, services, systems, other projects, etc may not be well understood, and may cause unexpected problems. in some fast-changing business environments, continuously changing specifications may be a fact of life, thus introducing significant added risk. Agile software development approaches - if effectively implemented - can help mitigate this. See more about agile approaches in Part 2 of the FAQ. time pressures - scheduling of software projects is difficult at best, often requiring a lot of guesswork. When deadlines loom and the crunch comes, mistakes will be made. egos - people prefer to say things like: poorly designeddocumented code - its tough to maintain and modify code that is badly written or poorly commenteddocumented the result is bugs. In many organizations management provides no incentive for programmers to write clear, understandable, maintainable code. In fact, its usually the opposite: they get points mostly for quickly turning out code, and theres job security if nobody else can understand it (if it was hard to write, it should be hard to read). software development tools - IDEs, libraries, external appsservices, compilers, scripting tools, etc. often introduce their own bugs or are poorly documented, or have usability issues, resulting in added bugs. How can new Software QA processes be introduced in an existing organization A lot depends on the size of the organization and the risks involved. For large organizations with high-risk (in terms of lives or property) projects, serious management buy-in is required and a more formalized QA process may be necessary. Where the risk is lower, management and organizational buy-in and QA implementation may be a slower, step-at-a-time process. QA processes should be balanced with productivity so as to keep bureaucracy from getting out of hand. For small groups or projects, a more ad-hoc process may be appropriate, depending on the type of customers and projects. A lot will depend on team leads or managers, feedback tofrom developers, and ensuring adequate communications among customers, managers, developers, testers, and other stakeholders. The most value for effort will often be in (a) requirementuser story management processes, with a goal of clear, complete, testable specifications embodied in requirements, appropriately-sized user stories, or design documentation, (b) design reviews and code reviews, and (c) post-mortemsretrospectives. Agile approaches utilizing extensive regular communication among the development team and product owner and other stakeholders can coordinate well with improved QA processes. Other possibilities include incremental approaches such as LeanKaizen methods of continuous process improvement, the Deming-Shewhart Plan-Do-Check-Act cycle, and others. Also see How can QA processes be implemented without reducing productivity in the LFAQ section.(See the Softwareqatest Bookstore sections Software QA, Software Engineering, and Project Management categories for useful books with more information.) What is verification validation Verification typically involves reviews and meetings to evaluate documents, plans, code, requirements, and specifications. This can be done with checklists, issues lists, walkthroughs, and inspection meetings. Validation typically involves actual testing and takes place after verifications are completed. The term IV amp V refers to Independent Verification and Validation. What is a walkthrough A walkthrough is an informal meeting for evaluation or informational purposes. Little or no preparation is usually required. Whats an inspection An inspection is more formalized than a walkthrough, typically with 3-8 people including a moderator, reader, and a recorder to take notes. The subject of the inspection is typically a document such as a requirements spec or a test plan, and the purpose is to find problems and see whats missing, not to fix anything. Attendees should prepare for this type of meeting by reading thru the document most problems will be found during this preparation. The result of the inspection meeting should be a written report. Thorough preparation for inspections is difficult, painstaking work, but is one of the most cost effective methods of ensuring quality. Employees who are most skilled at inspections are like the eldest brother in the parable in Why is it often hard for organizations to get serious about quality assurance. Their skill may have low visibility but they are extremely valuable to any software development organization, since bug prevention is far more cost-effective than bug detection. What kinds of testing should be considered black box testing - not based on any knowledge of internal design or code. Tests are based on requirements and functionality. white box testing - based on knowledge of the internal logic of an applications code. Tests are based on coverage of code statements, branches, paths, conditions. unit testing - the most micro scale of testing to test particular functions or code modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. Not always easily done unless the application has a well-designed architecture with tight code may require developing test driver modules or test harnesses. API testing - testing of messagingdata exchange among systems or components of systems. Such testing usually does not involve GUIs (graphical user interfaces). It is often considered a type of mid-level testing. incremental integration testing - continuous testing of an application as new functionality is added requires that various aspects of an applications functionality be independent enough to work separately before all parts of the program are completed, or that test drivers be developed as needed done by programmers or by testers. integration testing - testing of combined parts of an application to determine if they function together correctly. The parts can be code modules, services, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to multi-tier and distributed systems. functional testing - black-box type testing geared to functional requirements of an application this type of testing should be done by testers. This doesnt mean that the programmers shouldnt check that their code works before releasing it (which of course applies to any stage of testing.) system testing - black-box type testing that is based on overall requirements specifications covers all combined parts of a system. end-to-end testing - similar to system testing the macro end of the test scale involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate. sanity testing or smoke testing - typically an initial testing effort to determine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing systems every 5 minutes, bogging down systems to a crawl, or corrupting databases, the software may not be in a sane enough condition to warrant further testing in its current state. regression testing - re-testing after fixes or modifications of the software or its environment. It can be difficult to determine how much re-testing is needed, especially near the end of the development cycle. Automated testing approaches can be especially useful for this type of testing. acceptance testing - final testing based on specifications of the end-user or customer, or based on use by end-userscustomers over some limited period of time. load testing - testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the systems response time degrades or fails. stress testing - term often used interchangeably with load and performance testing. Also used to describe such tests as system functional testing while under unusually heavy loads, heavy repetition of certain actions or inputs, input of large numerical values, large complex queries to a database system, etc. performance testing - term often used interchangeably with stress and load testing. Ideally performance testing (and any other type of testing) is defined in requirements documentation or QA or Test Plans. usability testing - testing for user-friendliness. Clearly this is subjective, and will depend on the targeted end-user or customer. User interviews, surveys, video recording of user sessions, and other techniques can be used. Programmers and testers are usually not appropriate as usability testers. accessibility testing (sometimes called 508 testing, in reference to Section 508 of a U. S. federal law, covering government-related software systems), is a type of usability testing oriented toward users with disabilites. installuninstall testing - testing of full, partial, or upgrade installuninstall processes. recovery testing - testing how well a system recovers from crashes, hardware failures, or other catastrophic problems. failover testing - typically used interchangeably with recovery testing security testing - testing how well the system protects against unauthorized internal or external access, willful damage, etc may require sophisticated testing techniques. compatibility testing - testing how well software performs in a particular hardwaresoftwareoperating systemnetworketc. environment. exploratory testing - often taken to mean a creative, informal software test that is not based on formal test plans or test cases testers may be learning the software as they test it. ad-hoc testing - similar to exploratory testing, but often taken to mean that the testers have significant understanding of the software before testing it. context-driven testing - testing driven by an understanding of the environment, culture, and intended use of software. For example, the testing approach for life-critical medical equipment software would be completely different than that for a low-cost computer game. user acceptance testing - determining if software is satisfactory to an end-user or customer. comparison testing - comparing software weaknesses and strengths to competing products. alpha testing - testing of an application when development is nearing completion minor design changes may still be made as a result of such testing. Typically done by end-users or others, not by programmers or testers. beta testing - testing when development and testing are essentially completed and final bugs and problems need to be found before final release. Typically done by end-users or others, not by programmers or testers. mutation testing - a method for determining if a set of test data or test cases is useful, by deliberately introducing various code changes (bugs) and retesting with the original test datacases to determine if the bugs are detected. Proper implementation requires large computational resources. (See the Bookstore sections Software Testing category for useful books on Software Testing.)What are 5 common problems in the software development process poor requirements or user stories - if these are unclear, incomplete, too general, or not testable, there may be problems. unrealistic schedule - if too much work is crammed in too little time, problems are inevitable. inadequate testing - no one may know whether or not the software is any good until customers complain or systems crash. misunderstandings about dependencies. miscommunication - if developers dont know whats needed or stakeholders have erroneous expectations, problems can be expected. In agile projects, problems often occur when the project diverges from agile principles (such as forgetting that Business people and developers must work together daily throughout the project. or The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. - see the Manifesto for Agile Software Development .) (See the Softwareqatest Bookstore sections Software QA, Software Engineering, and Project Management categories for useful books with more information.) What are 5 common solutions to software development problems solid requirementsuser stories - clear, complete, appropriately detailed, cohesive, attainable, testable specifications that are agreed to by all players. In agile-type environments, continuous close coordination with product owners or their representatives is necessary to ensure that changingemerging requirements are understood. realistic schedules - allow adequate time for planning, design, testing, bug fixing, re-testing, changes, and documentation personnel should be able to complete the project without burning out, and be ableto work at a sustainable pace. adequate testing - start testing early on, re-test after fixes or changes, plan for adequate time for testing and bug-fixing. Early testing could include static code analysistesting, test-first development, unit testing by developers, built-in testing and diagnostic capabilities, etc. Automated testing can contribute significantly if effectively designed and implemented as part of an overall testing strategy. stick to initial requirements where feasible - be prepared to defend against excessive changes and additions once development has begun, and be prepared to explain consequences. If changes are necessary, they should be adequately reflected in related schedule changes. If possible, work closely with customersend-users to manage expectations. In agile environments, requirements may change often, requiring that true agile processes be in place and followed. communication - require walkthroughsinspectionsreviews when appropriate make extensive use of group communication tools - groupware, wikis, bug-tracking tools, change management tools, audiovideo conferencing, etc. ensure that informationdocumentationuser stories are available, up-to-date, and appopriately detailed promote teamwork and cooperation use prototypes, frequent deliveries, andor continuous communication with end-users if possible to clarify expectations. In effective agile environments most of these should be taking place. (See the Softwareqatest Bookstore sections Software QA, Software Engineering, and Project Management categories for useful books with more information.)What is software quality Quality software is reasonably bug-free, delivered on time and within budget, meets requirements andor expectations, and is maintainable. However, quality is obviously a subjective term. It will depend on who the customer is and their overall influence in the scheme of things. A wide-angle view of the customers of a software development project might include end-users, customer acceptance testers, customer contract officers, customer management, the development organizations managementaccountantstesterssalespeople, future software maintenance engineers, stockholders, magazine columnists, etc. Each type of customer will have their own slant on quality - the accounting department might define quality in terms of profits while an end-user might define quality as user-friendly and bug-free. (See the Softwareqatest Bookstore sections Software QA category for useful books with more information.) What is good code Good code is code that works, is reasonably bug free, secure, and is readable and maintainable. Some organizations have coding standards that all developers are supposed to adhere to, but everyone has different ideas about whats best, or what is too many or too few rules. There are also various theories and metrics, such as McCabe Complexity metrics. It should be kept in mind that excessive use of standards and rules can stifle productivity and creativity. Peer reviews, buddy checks pair programming, code analysis tools, etc. can be used to check for problems and enforce standards. For example, in CC coding, here are some typical ideas to consider in setting rulesstandards these may or may not apply to a particular situation: minimize or eliminate use of global variables. use descriptive function and method names - use both upper and lower case, avoid abbreviations, use as many characters as necessary to be adequately descriptive (use of more than 20 characters is not out of line) be consistent in naming conventions. use descriptive variable names - use both upper and lower case, avoid abbreviations, use as many characters as necessary to be adequately descriptive (use of more than 20 characters is not out of line) be consistent in naming conventions. function and method sizes should be minimized less than 100 lines of code is good, less than 50 lines is preferable. functionmethod descriptions should be clearly spelled out in comments preceding a functionsmethods code. organize code for readability. use whitespace generously - vertically and horizontally each line of code should contain 70 characters max. one code statement per line. coding style should be consistent throughout a program (e. g. use of brackets, indentations, naming conventions, etc.) in adding comments, err on the side of too many rather than too few comments a common rule of thumb is that there should be at least as many lines of comments (including header blocks) as lines of code. no matter how small, an application should include documentation of the overall program function and flow (even a few paragraphs is better than nothing) or if possible a separate flow chart and detailed program documentation. make extensive use of error handling procedures and status and error logging. for C, to minimize complexity and increase maintainability, avoid too many levels of inheritance in class hierarchies (relative to the size and complexity of the application). Minimize use of multiple inheritance, and minimize use of operator overloading (note that the Java programming language eliminates multiple inheritance and operator overloading.) for C, keep class methods small, less than 50 lines of code per method is preferable. for C, make liberal use of exception handlers Also see Googles collection of code style guides for many different languages. which can be useful in considering your particular code guidelinesstyles. What is good design Design could refer to many things, but often refers to functional design or internal design. Good internal design is indicated by software code whose overall structure is clear, understandable, easily modifiable, and maintainable is robust with sufficient error-handling and status logging capability and works as expected when implemented. Good functional design is indicated by an application whose functionality can be traced back to customer and end-user requirements or user stories. (See further discussion of functional and internal design in FAQ Whats the big deal about requirements ). For programs that have a user interface, its often a good idea to assume that the end user will have little computer knowledge and may not read a user manual or even the on-line help some common rules-of-thumb include: the program should act in a way that least surprises the user it should always be evident to the user what can be done next and how to exit the program shouldnt let the users do something stupid without warning them. What is SEI CMM CMMI ISO IEEE ANSI Will it help SEI Software Engineering Institute at Carnegie-Mellon University initiated by the U. S. Defense Department to help improve software development processes. CMM Capability Maturity Model, now called the CMMI (Capability Maturity Model Integration), developed by the SEI and as of January 2013 overseen by the CMMI Institute at Carnegie Mellon University. In the staged version, its a model of 5 levels of process maturity that help determine effectiveness in delivering quality software. CMMI models are collections of best practices that help organizations to improve their processes. It is geared to larger organizations such as large U. S. Defense Department contractors. However, many of the QA processes involved are appropriate to any organization, and if reasonably applied can be helpful. Organizations can receive CMMI ratings by undergoing assessments by qualified auditors. CMMI V1.3 (2010) also supports Agile development processes. See the searchable CMMI assessment results database. ISO International Organisation for Standardization - The ISO 9001:2015 standard (the latest in the periodically-updated ISO standard) concerns quality systems that are assessed by outside auditors, and it applies to many kinds of production and manufacturing organizations, not just software. It covers documentation, design, development, production, testing, installation, servicing, and other processes. The full set of standards consists of: (a)ISO 9001-2015 - Quality Management Systems: Requirements (b)ISO 9000-2015 - Quality Management Systems: Fundamentals and Vocabulary (c)ISO 9004-2009 - Quality Management Systems: Guidelines for Performance Improvements. (d)ISO 19011-2011 - Guidelines for auditing management systems. To be ISO 9001 certified, a third-party auditor assesses an organization, and certification is typically good for about 3 years, after which a complete reassessment is required. Note that ISO certification does not necessarily indicate quality products - it indicates only that documented processes are followed. There are also other software-related ISO standards such as ISOIEC 25010:2011 which includes a quality in use model composed of five characteristics and a product quality model that covers eight main characteristics of software. Also see iso. org for the latest information. In the U. S. the standards can also be purchased via the ASQ web site at asq. orgquality-press ISOIEC 25010 is a software quality evaluation standard that defines (a) a quality in use model of five characteristics that relate to the outcome of interaction when a product is used in a particular context of use, and (b) a product quality model composed of eight characteristics that relate to static properties of software and dynamic properties of the computer system. ISOIECIEEE 29119 series of standards for software testing. ISOIECIEEE 29119-1: Concepts Definitions (published Sept. 2013) ISOIECIEEE 29119-2: Test Processes (published Sept. 2013) ISOIECIEEE 29119-3: Test Documentation (published Sept. 2013) ISOIECIEEE 29119-4: Test Techniques (expected publication late 2014) ISOIECIEEE 29119-5: Keyword Driven Testing (expected publication 2015) IEEE Institute of Electrical and Electronics Engineers - among other things, creates standards such as IEEE Standard for Software Test Documentation (IEEEANSI Standard 829), IEEE Standard of Software Unit Testing (IEEEANSI Standard 1008), IEEE Standard for Software Quality Assurance Plans (IEEEANSI Standard 730), and others. ANSI American National Standards Institute, the primary industrial standards body in the U. S. publishes some software-related standards in conjunction with the IEEE and ASQ (American Society for Quality). Other software developmentIT management process assessment methods besides CMMI and ISO 9000 include SPICE, Trillium, TickIT, Bootstrap, ITIL. MOF, and CobiT. See the Softwareqatest Other Resources section for further information available on the web. What is the software life cycle The life cycle begins when an application is first conceived and ends when it is no longer in use. It includes aspects such as initial concept, requirements analysis, functional design, internal design, documentation planning, test planning, coding, document preparation, integration, testing, maintenance, updates, retesting, phase-out, agile sprints, and other aspects. (See the Softwareqatest Bookstore sections Software QA, Software Engineering, and Project Management categories for useful books with more information.) About the Software QA and Testing Resource Center and its author Information about the authors consulting services Send any commentssuggestionsideas regarding this web site to: rickhowerearthlink. net copy 1996-2016 by Rick Hower Last revised: December 29, 2016
Comments
Post a Comment