A atividade de teste é bastante complexa. Por isso, é dividida fases que se preocupam com questões específicas. É a ideia de dividir para conquistar. E é isso que a gente vai ver nesse vídeo. Então, diversos fatores podem ocasionar erros softwares. Dê uma olhada nesses casos apresentados. O caso primeiro é do Airbus modelo A320-211. 1993 avião desse modelo, operado pela Lufthansa, saiu de Frankfurt na Alemanha, com destino ao aeroporto de Varsóvia, capital da Polônia. As condições de tempo na hora do pouso não eram das melhores, o tempo estava ruim, chovia, vento forte, a velocidade do vento variava bastante e a pista molhada. Na aterrissagem, já no contacto do avião com a pista, o piloto acionou o sistema de controle de freios mas nada aconteceu. Então, demorou nove segundos depois, até que o avião tocou o solo, para que o sistema de travagem funcionasse de fato. Entretanto não existia pista suficiente para que o avião parasse com segurança e qual foi o resultado? Dois mortos e 56 feridos. Uma das causas desse acidente está relacionada com a especificação do software de controle de freio da aeronave não considerava aquelas condições de pouso. Tempo ruim, chuva, vento forte, mas principalmente a variação da velocidade do vento. O software concluiu que o avião não havia tocado o chão. Então, se o avião não tocou o chão para quê que o sistema de travamento vai ser acionado? Então, considerando o software o que a gente pode observar? O software se comportou da forma como ele foi especificado. Não havia erros de software. Então, esse é clássico exemplo de software confiável mas inseguro. Outro caso: Ariane 5. Então, quatro de junho de 1996 na Guiana Francesa, houve uma falha no lançamento do foguete Ariane. Na verdade, esse foguete é lançador descartável que é usado para colocar satélites artificiais órbitas geoestacionais. Após 40 segundos o lançador desviou o caminho de voo, o Ariane 5 desviou o caminho de voo, quebrou e explodiu. Iniciou-se então, após o acidente, uma investigação para identificar se os testes de qualificação e os testes de aceitação eram apropriados relação ao problema encontrado, e recomendar medidas corretivas para remover as causas da anomalia e outras possíveis lacunas nos sistemas relacionados. O sistema de orientação parou de funcionar. Essa foi a questão. Ele parou de funcionar porquê? Essa exceção interna no software de orientação foi causado durante a execução de uma conversão de dados de ponto flutuante de 64 bits para o valor inteiro assinado de 16 bits. O número de ponto flutuante que foi convertido teve valor maior do que o que poderia ser representado por inteiro de 16 bits. Então, isso resultou Erro de Operando. O quê que a gente conclui desses dois casos? A atividade de teste é complexa como eu já tinha falado antes e diversos são os fatores que podem ocasionar erros. Se a gente analisar esses dois casos, do Airbus e do Ariane 5, são casos distintos. Porquê? O do Airbus está relacionado mais com a questão de melhorar a política de segurança, prevenção de erros, simulação. O Ariane 5 está relacionado com problema no algoritmo que continha a função que fazia a conversão de valores. Ou seja, são tipos distintos de engano e níveis diferentes de abstração. Por conta desses questões é que a atividade de teste é dividida fases com objetivos bem distintos. Cada fase aborda diferentes tipos de erros e diferentes aspectos de software. Então, aqui a gente tem o resumo das fases. Então, a gente tem a fase de Teste de Unidade. Qual que é o foco de Teste de Unidade? São as menores unidades de software. O foco são, funções, procedimentos, métodos, classes, Que tipo de erros podem ser relatados ou revelados fazendo Teste de Unidade? Erros simples de programação, estruturas de dados incorretas, algoritmo mal implementado ou incorreto. E esse Teste de Unidade pode ser feito durante a própria implementação do sistema e pela própria equipe de desenvolvimento. Outra fase da atividade de teste é o Teste de Integração. Então o foco é na construção da estrutura do software, no relacionamento entre as unidades. E que tipo de erro pode ser relatado? Erro de interface, erro de comunicação entre as unidades si. Então, o Teste de Integração pode ser feito após testar as unidades, não tem sentido fazer Teste de Integração antes de verificar as unidades si. Ele pode ser executado ainda pela equipe de desenvolvimento porque é a equipe que conhece a estrutura interna do software. Não tem sentido o usuário fazer esse tipo de teste. Por fim, o Teste de Sistema. O foco é no sistema si, considerando tudo, unidade, integração entre elas, Que tipo de erros podem ser relatados? Erros de funções, características de desempenho que não estavam de acordo com a especificação do software. Basicamente isso. Então, pode ser feito após o sistema já estar completo ou após versões completas do sistema. Pode ser feito por uma equipe independente da equipe de desenvolvimento porque aí já se considera a especificação si. Pode se considerar requisitos funcionais e também não funcionais, por exemplo, segurança, requisito não funcional de performance. Agora, outro teste que pode ser considerado também é o Teste de Regressão. Mas ele já sai fora dessa atividade principal de desenvolvimento do software. Porquê? Porque ele é feito depois de manutenções. Então, supondo que software sofreu manutenções e durante a manutenção novos defeitos podem ter sido inseridos, por falha humana, por exemplo. Por isso, esse teste é feito após as manutenções para garantir que as modificações feitas por último estão corretas e, também para garantir que o que já tinha sido testado antes continuou funcionando perfeitamente. Então, aqui a gente tem resuminho das fases da atividade de teste. A atividade de teste é complexa, por isso é melhor a gente dividir para conquistar. De forma geral, as fases da atividade de teste são: Unidade, Integração e o Teste de Sistema; considerando que o Teste de Regressão também pode ser aplicado após as manutenções. Independente da fase, existem etapas para a execução da atividade de teste. Como dica de próximos passos para a sua aprendizagem eu deixo para você: identificar quais são as etapas da atividade de teste, identificar técnicas de teste que podem ser aplicadas casa fase, Teste de Unidade, Integração e Sistema e, exercitar conhecimentos adquiridos até agora por meio de exercícios e de casos.