Técnicas de teste de software

Tamanho: px
Começar a partir da página:

Download "Técnicas de teste de software"

Transcrição

1 Teste de Software A última etapa do desenvolvimento de um software é a fase de testes. A fase de testes é de fundamental importância, pois através dela é possível detectar e solucionar erros no software. No decorrer de todo o desenvolvimento, atividades de garantia de qualidade do software são executadas, porém, a possibilidade de continuar encontrando erros é enorme, mesmo depois de concluído o desenvolvimento do software. Segundo Pressman (1995), na fase de testes, os engenheiros executam uma série de atividades que consistem em varrer o software criado a procura de qualquer tipo de erro ou falha na codificação, que possam vir a interferir no correto funcionamento do aplicativo. O teste é responsável por detectar o maior número possível de erros, pois encontrar todos é praticamente impossível. Os testes de software são responsáveis por executar o software utilizando valores reais, com a finalidade de encontrar erros. Caso os testes sejam realizados e nenhuma falha seja descoberta, provavelmente, os casos de testes não foram bem elaborados. Seguindo o raciocínio de Pressman (1995), os casos de testes devem elevar a probabilidade de detecção de erros, caso contrário, os testes não serão bem sucedidos. Pressman (1995) defende ainda que o teste bem sucedido, além de apontar falhas ainda não constatadas, deve fazer isso com o mínimo tempo e esforço. Os testes são realizados com a inserção de dados atuais para que se possam obter os resultados esperados de acordo com os requisitos e especificações previamente estabelecidos. Se os dados de saída são os esperados, significa que as informações geradas pelo software são legítimas e totalmente confiáveis. Apesar de todos os esforços exigidos na fase de teste, é comum que o software não funcione completamente sem a ausência de erros. Falhas fazem parte do código de programação, isso muitas vezes acontece devido à complexidade do desenvolvimento de software e da negligência dos desenvolvedores nas fases iniciais da elaboração de um sistema. Mesmo que os testes, por mais eficazes que sejam, não consigam detectar e remover todos os erros contidos no software, estes são indispensáveis pois aumentam o grau de segurança, e consequentemente, a confiança no produto pelo desenvolvedor e pelo cliente. Inthurn (2001) afirma que há um gasto frequente muito grande de tempo e dinheiro em correções de software, em que o desenvolvimento não foi adequado e a fase de testes não foi satisfatória. Assim, entende-se que os testes são importantes, também, para evitar surpresas desagradáveis no futuro. Além disso, os testes são responsáveis por mostrar que o software possui erros e que os mesmos devem ser corrigidos, mas isso não significa que a partir das correções, o software estará imune a possíveis falhas posteriores. Novos erros podem ser inseridos ao software no momento em que outros erros são corrigidos, através de alterações realizadas no código a fim de corrigir os erros descobertos até o momento. De acordo com Inthurn (2001), os testes bem sucedidos conseguem, em média, corrigir aproximadamente 60% das falhas contidas no software. O custo dos testes realizados dentro do processo de desenvolvimento é relativamente pequeno se comparado ao gasto com manutenção corretiva do software pronto, sem mencionar que para, um software ter qualidade, é necessário que haja uma rotina exaustiva de testes, que se estende por todo o desenvolvimento do projeto. Jamais a atividade de teste deve trabalhar de maneira isolada, mas sim de maneira conjunta com as demais atividades e de forma iterativa. Os casos de teste devem testar as partes produzidas em cada etapa do projeto e o produto completo ao final do projeto. Só assim a qualidade do produto final é garantida. A atividade de testes é dividida de diferentes

2 maneiras por diversos autores. Por exemplo, segundo Peters (2001), a atividade de testes é constituída das atividades chaves, planos de teste, projetos de teste, casos de teste, procedimentos de teste, execução de teste e relatório de teste. Já Pressman (1995) divide como técnicas de teste de software e estratégias de teste de software. Segue os estudos das atividades de teste de software focando as definições deste último autor. Técnicas de teste de software Segundo Pressman (1995), técnicas de teste de software consistem em elaborar casos de teste capazes de varrer o software a procura de erros ainda não constatados. As atividades de testes não visam culpar alguém por falhas ou, ainda, testar o software com finalidade destrutiva. Os testes são realizados com o objetivo de encontrar as falhas e, posteriormente, corrigi-las, garantindo assim a qualidade do mesmo. Dentro das atividades de testes todos os resultados obtidos são avaliados, essa avaliação é realizada comparando-se os resultados obtidos com os esperados. Caso sejam encontrados erros, é feita a depuração. Projeto de casos de teste Um projeto de teste requer uma atenção especial dos engenheiros, pois os testes a serem realizados devem possuir uma alta probabilidade de descobrir os erros ainda não detectados, em um prazo relativamente curto e com esforços irrelevantes. Outro fato que exige que o projeto seja bem elaborado é a questão dos valores, pois o custo de manutenção para correção de erros após o término do desenvolvimento pode ser de 60 a 100 vezes mais do o custo da manutenção realizada durante o desenvolvimento (PRESSMAN, 1995). Um software pode ser testado de duas formas. A primeira, quando se conhecem as suas funções e quais as saídas esperadas quando se recebem tais entradas, é popularmente conhecida como teste de caixa preta. E a segunda, quando se conhece a estrutura e o funcionamento interno, a maneira que os métodos estão interligados, quais as responsabilidades de cada um deles, dentre outros detalhes, é chamada de teste de caixa branca. Segundo Inthurn (2001), um projeto de teste é responsável por gerenciar a fase de teste identificando e descrevendo qual tipo de teste será aplicado em determinado momento. O projeto de teste é dependente de um plano de teste, esse plano mostra as estratégias para a execução do teste com base numa lista de casos de teste. Plano de teste Dentre outros objetivos, o plano de teste deve identificar os componentes do software que serão testados e os recursos necessários para a correta execução dos mesmos, recomendando e descrevendo as estratégias de teste a serem aplicadas. O plano de teste deve conter e disponibilizar a documentação referente ao projeto em desenvolvimento, seus requisitos funcionais e não funcionais, a fim de entender o que será testado no software. O plano de teste deve conter as estratégias de teste, pois nela encontra-se a maneira como o teste será realizado e quais técnicas e critérios serão utilizados. Listas contendo os tipos de testes a serem aplicados, ferramentas, recursos de hardware e de pessoas disponíveis também são parte do plano de teste. A cada teste realizado, informações sobre o que foi realizado, data e hora de inicio e fim da atividade, nome do responsável pela mesma e resultados obtidos são registrados (INTHURN, 2001).

3 Caso de teste Um caso de teste pode ser definido como um documento que descreve as etapas a serem seguidas para realização de um teste. Desde os dados de entrada, a atividade em execução e o resultado de saída. É utilizado para observar se o resultado de saída é realmente o esperado. Em caso positivo o teste foi realizado com êxito (INTHURN, 2001). O caso de teste serve para verificar se o sistema segue as definições impostas no projeto e se o mesmo foi devidamente construído. Segundo Bartié (2002), o caso de teste é o documento que registra todo o planejamento dos testes, nele devem ser abordados os seguintes itens: Suíte de teste ƒ identificação das condições de testes; ƒ identificação do que será testado; ƒ definição de cada caso de teste identificado; ƒ detalhamento das classes de dados de entrada; ƒ detalhamento da saída gerada; ƒ responsáveis pela atividade de teste; ƒ definição de como será realizada a bateria de testes; ƒ cronograma das atividades. É o documento que faz o detalhamento final dos testes, nele é identificado o comportamento de cada caso de teste durante a execução. A suíte de teste estabelece a ordem de execução e a maneira que cada caso de teste irá proceder (BARTIÉ, 2002). O objetivo do conjunto de teste é auxiliar no exercício de verificar as especificações dos requisitos funcionais e não funcionais do sistema, ou seja, constatar se o sistema procede normalmente durante a execução das funções. Teste estrutural ou teste de caixa branca Pressman (1995) define o teste de caixa branca como um método de projeto de casos de testes voltado a testar a estrutura interna do software. O teste de caixa branca, ao contrário de teste de caixa preta, se preocupa em como o código fonte foi construído e a lógica de programação utilizada no desenvolvimento dos métodos. O teste é totalmente realizado na estrutura interna do software (INTHURN, 2001). O teste estrutural visa confirmar ou se certificar de que a estrutura interna do software esteja correta. Para isso, é preciso que o caso de teste percorra todos os caminhos internos possíveis. A atividade de teste estrutural pode ser considerada complexa porque deve abranger todos os níveis de hierarquia, no caso de classes com herança. O fato de um método funcionar corretamente em uma classe não garante que o mesmo não apresente erros na classe que a herde (INTHURN, 2001). Teoricamente, um teste de caixa branca seria capaz de avaliar e classificar um software como 100% correto, isso porque o teste de caixa branca percorre todos os caminhos lógicos possíveis, o que resulta num teste exaustivo e complexo, pois mesmo em um programa pequeno, os caminhos lógicos são muitos (PRESSMAN, 1995). O teste de caixa branca, também, pode ser conhecido como testes de caixa de vidro, ou ainda, testes de caixa clara (SOMMERVILLE, 2003). Bartié (2002) aponta dificuldades em aplicar o teste de caixa branca em alguns casos. O teste de caixa branca deve ser realizado por um profissional competente e extremamente experiente, pois o responsável por aplicar o teste deve conhecer minuciosamente a estrutura do software. O teste será executado pelos próprios desenvolvedores, e como os

4 desenvolvedores normalmente trabalham sob pressão, o software tem que ficar pronto rapidamente. Este fato faz com que a preocupação do desenvolvedor seja maior com a implementação, de forma que os testes acabam ficam em segundo plano. Teste funcional ou teste de caixa preta Segundo Inthurn (2001), o teste de caixa preta consiste em verificar na interface do software se todas as funcionalidades estão operando corretamente. Este teste é aplicado com a finalidade de encontrar: funções incorretas ou ausentes, erros de interface, erros nas estruturas de dados ou no acesso ao banco de dados, erros de desempenho e, ainda, erros de inicialização e término. O teste funcional, como o próprio nome já diz, é realizado com base nos requisitos funcionais do software, assim, é possível analisar as entradas e saídas de todas as unidades. Para isso os dados de entrada devem ser normalmente aceitos pelo sistema e a saída deve ser a esperada. Caso a saída não seja a esperada, o erro é constatado. Esse tipo de teste não se preocupa em saber como o código fonte foi produzido e sim se o mesmo faz o que lhe foi especificado. As técnicas de caixa preta são responsáveis por garantir que todos os requisitos do sistema funcionem de acordo com o especificado durante a elaboração do projeto. Cabe aos testes de caixa preta averiguar que o sistema forneça todos os resultados esperados. Uma vantagem do teste de caixa preta em relação ao teste de caixa branca é que nesse não é necessário que a equipe de testes conheça ou entenda a estrutura interna, a tecnologia utilizada e a maneira como foi implementado, e sim, que verifique se faz o que foi proposto e se atenderá as necessidades do futuro usuário. No teste de caixa preta o profissional responsável pela execução do teste necessita apenas entender os requisitos e analisar os resultados produzidos (BARTIÉ, 2002). O teste de caixa preta consiste em validar os requisitos funcionais do sistema, o objetivo é encontrar erros de interface, erros relacionados ao desempenho, ao acesso ao banco de dados, erros de inicialização e término, falha ou ausência de funções (PRESSMAN, 1995). Este último autor define alguns tipos de teste de caixa preta, entre eles o particionamento da equivalência e análise do valor limite. No primeiro, os dados de entrada são divididos em classes de forma que os casos de teste possam ser derivados. O particionamento de equivalência permite que seja definido um caso de teste capaz de encontrar uma ou mais classes de erros. Um exemplo poderia ser um caso de teste que identifique problemas sempre que um tipo específico de dado é utilizado. O particionamento de equivalência é normalmente representado por um conjunto de dados de entrada, válidos ou inválidos para o sistema. Na segunda, análise do valor limite, a intenção do teste é colocar em prova os valores fronteiriços, ou seja, analisar as extremidades do sistema. Difere-se um pouco do particionamento de equivalência porque além de testar os dados de entrada, analisa também os dados de saída. O teste pode ser feito da seguinte forma: se os parâmetros de entrada devem respeitar o intervalo entre 0 e 4, inserir números normais, ou seja, entre 0 e 4, depois um número abaixo do especificado e em seguida um número acima do especificado. Assim, é possível testar se as condições de entrada estão sendo validadas. O mesmo critério deve ser utilizado para analisar dos dados obtidos na saída.

5 Teste de caminho básico O teste de caminho básico é conhecido como uma técnica de teste de caixa branca. Através do teste de caminho básico é possível definir os diversos caminhos de execução do software e garantir que cada um deles seja executado ao menos uma vez (PRESSMAN, 1995). O número de caminhos é proporcional ao tamanho e complexidade do software. Devido aos módulos não trabalharem sozinhos, ou seja, são apenas partes de um sistema, fica inviável a utilização dos testes de estrutura. Dessa forma, testes de caminho básico são mais utilizados nos testes de unidade (SOMMERVILLE, 2003). Antes de executar o teste de caminho básico é importante criar o modelo de representação do trecho de código a ser testado, para facilitar o entendimento do fluxo de controle. Nessa representação são utilizados fluxogramas e grafos. A figura 01 mostra um fluxograma simplificado de um teste de caminho básico. Fluxograma de um teste do caminho básico O fluxograma acima pode ser facilmente representado em forma de grafos de fluxo, como mostrado a seguir.

6 Grafo de fluxo do fluxograma da figura 1. As linhas do grafo traçam os possíveis caminhos. É importante que a cada laço o teste utilize um caminho independente até que todos os caminhos sejam percorridos. Caminhos independentes são aqueles que executam instruções que ainda não foram executadas (PRESSMAN, 1995). Para encontrar o número de caminhos independentes é necessário realizar o cálculo da complexidade ciclomática do grafo de fluxo do programa, esse cálculo é feito através da fórmula (SOMMERVILLE, 2003): CC(G) = Número (ramos) Número (nós) + 2 sendo as setas correspondentes aos ramos e os círculos correspondentes aos nós, para o grafo de fluxo na figura 02, CC(G) = = 4. Quatro é o número de caminhos independentes. Caminhos independentes: Caminho 1: 1-11 Caminho 2: Caminho 3: Caminho 4: Caminho não independente: Caminho 5: O caminho 5 não é independente porque todas as suas instruções já foram executadas anteriormente, ou seja, não encontrou instruções ainda não executadas.

7 Pressman (1995) mostra duas outras maneiras de encontrar o número de caminhos independentes, além da fórmula apresentada por Sommerville (2003). Uma é encontrando o número de regiões (fechamento dos nós), que corresponde ao número de caminhos. A outra, o número de nós predicativos (nó que apresenta condicional) mais um corresponde ao número de caminhos independentes. De acordo com o grafo de fluxo: CC(G) = Ramos Nós + 2 = = 4 CC(G) = Nós predicativos + 1 = = 4 CC(G) = Regiões = 4 Genericamente, o teste de caminho básico não testa todas as combinações possíveis de todos os caminhos do software, pois, devido ao grande número de laços de repetições existentes, a quantidade de combinações de caminhos é infinita (SOMMERVILLE, 2003). O teste de caminho básico é simples e eficaz, e ainda pode ser complementado por outros tipos de testes, para, assim, encontrar e corrigir o maior número possível de falhas, são eles o teste de condição, teste de fluxo de dados e o teste de laços (PRESSMAN, 1995). Teste de condição O teste de condição é um método de projeto de casos de testes responsável por certificar que todas as condições lógicas de um módulo do programa funcionem corretamente. Uma condição simples pode ser definida como duas expressões aritméticas separadas por um operador relacional (PRESSMAN, 1995): E1 <operador relacional> E2, em que E1 e E2 são as expressões aritméticas e o operador relacional sendo qualquer um desses (<,, =,, >, ) ou ainda operadores booleanos (OR, AND e NOT). Uma condição composta é definida com a união de duas ou mais condições simples. O teste de condição consiste em testar cada condição existente no programa à procura de erros. Uma condição é considerada incorreta quando pelo menos um componente da condição está incorreto, ou seja, operadores lógicos ou booleanos ausentes ou a mais. O mesmo acontece com os parênteses, além de erros na própria expressão aritmética ou operador relacional. Para encontrar erros nos operadores relacionais, três testes são realizados, considerando que as expressões aritméticas estejam corretas, a E1 deve receber valores, maior, menor e igual a E2. Teste de laços Normalmente o número de estruturas de repetição, laços ou loops, como são conhecidos, utilizados na implementação de sistemas é muito grande, mesmo em pequenos softwares, isso porque essas estruturas são extremamente necessárias, ou melhor, é inviável a construção de um sistema sem a utilização de estruturas de repetição. O teste de laços consiste em validar a estrutura dos laços. Existem quatro classes de laços: laços simples, laços concatenados, laços aninhados e laços não-estruturados (PRESSMAN, 1995): ƒ Laços simples: cinco testes são realizados, 1) não entrando no laço; 2) somente uma passagem pelo laço; 3) duas passagens pelo laço; 4) enquanto m<n passagens pelo laço; e 5) n-1, n, n+1 passagens pelo laço.

8 Laços aninhados: deve-se testar primeiro o laço interno e iniciar com valores mínimos todos os laços; execute os testes de laços simples no laço interno sem alterar os valores do laço externo; continue realizando testes com valores inaceitáveis. Repita até que todos os laços sejam testados. Laços concatenados: se os laços foram implementados de maneira individual, um independe do outro, o teste realizado é o mesmo do mostrado anteriormente no laço simples. Se os laços foram implementados de forma que um interaja com outro, ou seja, se o contador do primeiro laço for utilizado como valor inicial para o segundo laço, o teste a ser realizado é o mesmo mostrado anteriormente no laço concatenado. Laços não-estruturados: para facilitar o teste é necessário reprojetar os grupos de laços de forma que os mesmos se assemelhem à programação estruturada. Teste unitário Tipos de laços retirada de (MARIATH, 2004). O teste unitário consiste em validar a menor unidade do projeto, uma classe de métodos, funções isoladas e unidades lógicas. A partir disso, testam-se módulos integrados a outros e outros, até que se tenha o sistema completo. O mesmo deve ser realizado diversas

9 vezes, dia a dia, isso porque as falhas sempre aparecem e fica mais fácil corrigir pequenas falhas do que corrigir o sistema inteiro depois de construído (MEDEIROS, 2005). Medeiros (2005) afirma que a importância do teste unitário se dá na prevenção de futuros erros no sistema. A única maneira de saber se o código é realmente bom é testando sua reação diante de uma bateria de testes exaustivos, esses testes validam situações normais, que deveriam ser bem sucedidas e situações de erro. O mesmo autor ainda cita um exemplo do mundo real: pensando na fundamental importância do teste unitário, imagine o resultado dos testes em um avião ou mesmo em um navio apenas após o término de sua construção. Se algo sair errado, os danos podem ser irreparáveis. Nada mais apropriado para descrever o resultado, do que uma tragédia. Testes de verificação e validação de software Toda a fase de teste de um software refere-se ao (V&V) ou verificação e validação. A verificação consiste em atividades que garantem que as funções do sistema tenham sido implementadas corretamente, e a validação em verificar que o software corresponde às expectativas do cliente (PRESSMAN, 1995). Segundo Sommerville (2003), os testes de validação ou verificação são responsáveis por constatar se o sistema desenvolvido está realmente de acordo com as especificações fornecidas pelo cliente e se satisfaz as suas necessidades. Os testes de validação devem evoluir de acordo com o desenvolvimento do software, não sendo executados de maneira isolada, ou seja, sempre que um módulo ou uma classe é desenvolvido, testes são realizados. Os testes são incrementados a cada etapa de desenvolvimento, mais classes e funções implementadas, mais testes realizados. Para que os erros sejam encontrados no início do processo, resumidamente Sommerville (2003) divide os testes de validação em 5 (cinco) estágios, sendo eles teste de unidade, teste de módulo, teste de subsistema, teste de sistema e teste de aceitação. Teste de unidade: tem como objetivo averiguar que um componente do sistema está funcionando corretamente, para isso o teste é realizado em cada componente separadamente. Teste de módulo: num sistema, um módulo corresponde a uma classe, um conjunto de métodos ou funções interligadas, ou seja, dependentes uma da outra. O teste é realizado visando verificar que o módulo todo está funcionando corretamente, se as conexões entre os métodos estão corretas e produzindo o esperado. O teste de módulo, assim como o teste de unidade, é normalmente executado por seus próprios desenvolvedores. Teste de subsistemas: responsabiliza-se basicamente por testar pequenos conjuntos de módulos integrados, o objetivo é encontrar erros de interface de módulos e suas ligações. Teste de sistema: o sistema consiste na união coerente dos subsistemas, o teste de sistema, por sua vez, consiste em descobrir possíveis falhas nas interações desses módulos e, ainda, em verificar que todos os requisitos funcionais ou não, estejam presentes. Teste de aceitação: o teste de aceitação é o último realizado antes da entregado do software ao cliente. O teste é realizado utilizando valores reais vindos dos próprios clientes. O teste de aceitação pode trazer à tona diversos tipos de erros anteriormente não constatados, pois os dados reais criam situações não pensadas pelos desenvolvedores. Através do teste de validação é possível perceber se o sistema é estável e se possui um desempenho que corresponda às expectativas do cliente.

10 Segundo Inthurn (2001), o teste de sistema se subdivide em quatro outros tipos envolvendo todas as partes do software: Teste de recuperação; teste de segurança; teste de stress; e, por último, teste de desempenho. Teste de recuperação: consiste em provocar diversos tipos de falhas, o sistema, porém, deve ser capaz de tolerar as mesmas, ou seja, um sistema tolerante a falhas é aquele consegue se recuperar de falhas sem que essas atrapalhem o seu funcionamento. O sistema deve se recuperar das falhas completamente num tempo relativamente pequeno e com o mínimo de intervenção humana. A geração de um log detalhando as atividades realizadas antes das falhas é interessante. Um dos objetivos do teste de recuperação é averiguar a maneira como o sistema se recupera dos erros, os mais comuns são, problemas no disco rígido, erros de interface e falhas referentes à falta de memória. Teste de segurança: é responsável por verificar se todos os recursos de defesa do sistema realmente impedem os possíveis acessos indevidos. Esse tipo de teste deve ser realizado por uma equipe que não tenha participado do desenvolvimento. O seu objetivo é garantir que o sistema continue funcionando normalmente sob tentativas de acessos não permitidos. O correto é que as políticas de segurança do próprio sistema se encarreguem de protegê-lo desses acessos. Durante a execução dos testes, os responsáveis por ele devem utilizar todos os métodos disponíveis para tentar, de alguma forma, acessar o sistema indevidamente, neste caso, vale conseguir senhas ilegalmente, tentativas de acesso durante o processo de recuperação do sistema, entre outras ocasiões de falhas provocadas pelos próprios testadores. Teste de stress: é realizado com o objetivo de forçar o sistema, por exemplo, executar várias buscas de dados no disco, abrir o maior número de janelas possível a fim de causar falta de memória. Enquanto isso, deve-se analisar a queda de desempenho do sistema e a maneira como ele se recupera, em caso de parada do sistema durante o processo, mais testes de recuperação devem ser executados. Teste de desempenho: como o próprio nome já diz, é responsável por testar o desempenho do sistema, pode ser realizado em conjunto com o teste de stress. O objetivo desse tipo de teste é garantir que os requisitos de desempenho relatados durante o planejamento sejam alcançados. O teste de desempenho analisa o tempo de resposta das atividades, a capacidade do banco de dados, os momentos em que o sistema perde mais desempenho em função de um grande número de processos executando, dentre outros. Esse teste pode ser realizado executando alguma instrução inúmeras vezes, assim, é possível observar se o desempenho cai ou não. Teste de integração Durante o desenvolvimento do sistema os gerentes decidem quem ficará responsável por cada fase de teste, normalmente cada programador se encarrega de testar seu próprio código, ao final, as partes desenvolvidas por cada programador são passadas a outra equipe que irá unificar os códigos. Essa equipe realiza a integração do software e mais testes são feitos. Os testes são realizados em partes separadas ou subsistemas e no sistema como um todo, por fim o teste é detalhadamente documentado e arquivado (SOMMERVILLE, 2003). Um dos objetivos do teste de integração é detectar problemas junto às interfaces, ou seja, erros que aparecem com a junção das partes do sistema. Antes da junção são realizados testes nos pedaços individuais do sistema, os erros encontrados são corrigidos, outros erros aparentemente menores, nem são notados. Mais tarde, com as partes do sistema integradas, aqueles erros menores podem se apresentar não tão pequenos assim, e causar falhas inaceitáveis no sistema (PRESSMAN, 1995). Basicamente, o teste de integração consiste em verificar se as partes testadas individualmente funcionam também unidas umas as outras, (INTHURN, 2001).

11 Pressman (1995) define dois tipos de integração de sistemas: a não incremental e a incremental. A primeira consiste em desenvolver todos os módulos do sistema, realizar a junção dos mesmos, e só depois iniciar a fase de testes. Normalmente os erros são tantos e a dificuldade de correção é tamanha que o resultado é um sistema completamente inaceitável. O teste de integração incremental tende a assegurar que o sistema possua uma quantidade menor de erros, isso se faz possível pelo fato de que cada módulo do sistema é testado individualmente antes da junção com os demais módulos, com isso fica mais fácil detectar e corrigir os erros existentes. Após a junção novos testes são realizados para detectar outros erros que possam aparecer. Um módulo pode funcionar corretamente quando testado sozinho, e não funcionar normalmente quando integrado a outros módulos, por isso a importância dos testes antes e depois da integração. Integração Top-down É uma abordagem da integração incremental. Segue uma ordem hierárquica, de cima para baixo. Os módulos mais importantes do sistema são desenvolvidos primeiro, depois os menos importantes. Após desenvolvido, cada módulo é testado individualmente, integrado aos outros módulos e testado novamente, assim, é possível conferir se a interface com os demais módulos continua compatível. Integração Bottom-up A ordem de teste dos módulos é inversa à top-down, os módulos menos importantes, ou de níveis mais baixos da hierarquia são desenvolvidos e testados primeiro, depois os próximos níveis a cima na hierarquia até que o último módulo seja testado. Depuração de software A depuração ou debugging ocorre quando um caso de teste encontra e mostra erros do sistema, ou seja, para que se faça a depuração é necessário que os testes realizados tenham obtido êxito. A depuração consiste em analisar os resultados obtidos com os esperados, e, no caso de diferença entre eles, encontrar a causa, ou seja, encontrar o motivo da não correspondência entre os dados reais e os esperados, e, por fim, corrigir o problema (PRESSMAN, 1995). Em resumo, a depuração objetiva encontrar e corrigir a causa, ou causas, dos erros no sistema. Executando Testes de Software A primeira classe possui três métodos a serem testados: fatorial(), maiornumero() e par(). O processo de teste utilizando a técnica do teste do caminho básico no primeiro método é o seguinte: primeiro deve-se numerar o programa, como pode-se observar a seguir: Código numerado:

12 O próximo passo consiste em desenhar o grafo para visualização dos caminhos a serem executados:

13 Na sequência, deve-se calcular a complexidade ciclomática para se certificar que o número de caminhos está correto. Ele pode ser feito de três maneiras: estar correto. CC(G) = Ramos Nós + 2 = = 5 CC(G) = Nós predicativos + 1 = = 5 CC(G) = Regiões = 5 O resultado comum aos três cálculos indica maior probabilidade do grafo Por último, deve-se descrever os possíveis caminhos e valores de entrada, como é mostrado a seguir: Caminhos Básicos 1. 1, 2, , 3, 5, , 3, 4, 5, , 3, 4, 6, , 3, 4, 6, 7, 8,..., 6, 9 Entradas 1. valor = -2 -> -1 "Valor Negativo!!! Não é válido!!!" 2. valor = 0 -> 1 3. valor = 1 -> 1 4. Inválido. Deveria entrar no while 5. valor = 5 -> 120 Dessa forma, encontram-se e percorrem-se todos os possíveis caminhos do método. A próxima etapa consiste em automatizar os testes, por exemplo, utilizando o JUnit. Os métodos de asserções consistem em afirmar que suas instruções são verdadeiras, como se observa nas linhas de 16 a 19, ou seja, se o valor inserido no método for negativo o retorno é -1, se for 0 ou 1, o retorno é 1, e se for um número positivo maior que 1 o retorno é seu fatorial. Neste caso, o fatorial de 5 é 120, então o resultado do teste deve ser positivo, caso não seja, o método possui erros. O próximo método maiornumero() foi implementado e numerado:

14 O grafo referente código exibido anteriormente é:

15 Caminhos Básicos 1. 1, 4, 7, 8, , 2, 3, 8, , 4, 5, 6, 8, , 2, 4, 5, 6, 8, 9 Entradas 1. v1 = 33, v2 = 33, v3 = 99 -> v1 = 99, v2 = 33, v3 = 51 -> v1 = 33, v2 = 99, v3 = 51-> v1 = 51, v2 = 99, v3 = 33 ->99 CC(G) = Ramos Nós + 2 = = 4 CC(G) = Nós predicativos + 1 = = 4 CC(G) = Regiões = 4

Engenharia de Software

Engenharia de Software Prof. M.Sc. Ronaldo C. de Oliveira ronaldooliveira@facom.ufu.br FACOM - 2011 Verificação e Validação (V&V) S.L.Pfleeger (Cap.8 & 9) R.Pressman (Cap.13 & 14) I.Sommerville (Cap.22 & 23) Introdução Verificação

Leia mais

Introdução a Teste de Software

Introdução a Teste de Software Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Introdução a Teste de Software Prof. Luthiano Venecian 1 Conceitos Teste de software

Leia mais

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão

TESTES DE SOFTWARE Unidade 1 Importância do Teste de Software. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - O teste nas fases de vida e de desenvolvimento de um software. 1.2 - O teste na engenharia de sistemas e na engenharia de

Leia mais

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software Engenharia de Software Aula 17 Desenvolvimento de Software Testes de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 7 Maio 2012 1. Especificação de requisitos 2. Projeto

Leia mais

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software ENG SOFT - TESTES TESTES DE SOFTWARE 1. Fundamentos sobre testes de software A atividade de teste de software sempre foi considerada como um gasto de tempo desnecessário, uma atividade de segunda classe,

Leia mais

TESTES DE SOFTWARE. Profa. Maria Auxiliadora

TESTES DE SOFTWARE. Profa. Maria Auxiliadora TESTES DE SOFTWARE 1 Teste de software É uma atividade crítica na garantia de qualidade de software; Quatro dimensões: Estado do teste ( o momento ); Técnica do teste ( como vou testar ); Metas do testes

Leia mais

TESTES DE SOFTWARE Lista de Exercício 01. Luiz Leão

TESTES DE SOFTWARE Lista de Exercício 01. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Exercício 01 Qual é a importância dos testes de software? Exercício 01 Resposta Qual é a importância dos testes de software? Descobrir o maior número

Leia mais

Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses:

Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses: Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses: Desenvolvedores: interesse em demonstrar que o programa é isento de erros. Responsáveis pelos testes:

Leia mais

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software Teste de Software Competência: Entender as técnicas e estratégias de testes de Software Conteúdo Programático Introdução O que é teste de software? Por que é necessário testar um software? Qual a causa

Leia mais

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo

Teste de Software. Estratégias de Teste. Rosemary Silveira Filgueiras Melo Teste de Software Estratégias de Teste Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Estratégias de Teste Tipos de Estratégias de Teste 2 Estratégias de teste Define as fases em que

Leia mais

Estágio II. Aula 02 Conceitos de Teste de Software. Prof. MSc. Fred Viana

Estágio II. Aula 02 Conceitos de Teste de Software. Prof. MSc. Fred Viana Estágio II Aula 02 Conceitos de Teste de Software Prof. MSc. Fred Viana Agenda Teste de Software Defeito, Erro ou Falha? Dimensões do Teste Níveis de Teste Tipos de Teste Técnicas de Teste Teste de Software

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Teste de Software Verificação e validação Testes de desenvolvimento Testes de release Testes de usuário Desenvolvimento dirigido a testes Kele Teixeira Belloze kelebelloze@gmail.com

Leia mais

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

INTRODUÇÃO A ENGENHARIA DE SOFTWARE Universidade TESTE Estadual DE SOFTWARE Vale do Acaraú O que são testes? INTRODUÇÃO A ENGENHARIA DE SOFTWARE Teste é um processo de avaliar um sistema ou um componente de um sistema para verificar se ele

Leia mais

Teste de Software. Karen Frigo Busolin Novembro / 2010

Teste de Software. Karen Frigo Busolin Novembro / 2010 Teste de Software Karen Frigo Busolin Novembro / 2010 Processo de Testes de Software Possibilitar aos profissionais maior visibilidade e organização dos trabalhos. Representa uma estruturação de etapas,

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVO Compreender uma série de técnicas de testes, que são utilizadas para descobrir defeitos em programas Conhecer as diretrizes que

Leia mais

Introdução aos Testes de Software

Introdução aos Testes de Software Introdução aos Testes de Software 1 Objetivos do curso Apresentar e discutir os conceitos básicos sobre o processo de testes Entender como criar e utilizar os documentos (artefatos) gerados ao longo deste

Leia mais

Verificação e Validação (V & V)

Verificação e Validação (V & V) Verificação e Validação (V & V) Objetivo: assegurar que o software que o software cumpra as suas especificações e atenda às necessidades dos usuários e clientes. Verificação: Estamos construindo certo

Leia mais

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds

TS03. Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE. COTI Informática Escola de Nerds TS03 Teste de Software ESTÁGIOS DO TESTE DE SOFTWARE COTI Informática Escola de Nerds Teste do Desenvolvedor O Teste do Desenvolvedor denota os aspectos de design e implementação de teste mais apropriados

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr. Teste de Software Prof. Camila Pedro de Assis Sobreira Jr. 2 Técnicas de Testes Técnica de Teste Funcional Técnica de Teste Estrutural 3 Testes Funcionais Teste de Especificação de Requisitos. Teste de

Leia mais

Organização para Realização de Teste de Software

Organização para Realização de Teste de Software Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses: Desenvolvedores: interesse em demonstrar que o programa é isento de erros. Responsáveis pelos testes:

Leia mais

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Teste de Software Engenharia de Software 2o. Semestre de 2006 Slide

Leia mais

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Engenharia de Software. Teste de Software. Introdução. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff Engenharia de Software Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff Teste de Software Introdução Estratégias de teste Testes de módulo Testes de integração Teste de aceitação

Leia mais

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Casos de Teste e Cenários de Teste Técnicas de Teste Técnica de Teste Estrutural 2 Casos

Leia mais

Teste de Software. Professor Maurício Archanjo Nunes Coelho

Teste de Software. Professor Maurício Archanjo Nunes Coelho Teste de Software Professor Maurício Archanjo Nunes Coelho Conteúdo 1. Definição de Teste e suas Classificações 1.1 - Introdução 1.2 O que é homologação 1.3 História do teste. 1.4 A falta de teste 1.5

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Prof. Raquel Silveira O que são testes? Teste é um processo de avaliar um sistema ou um componente de um sistema para verificar se ele satisfaz os requisitos especificados ou identificar

Leia mais

Teste de Software. Planejamento de Teste. Rosemary Silveira Filgueiras Melo

Teste de Software. Planejamento de Teste. Rosemary Silveira Filgueiras Melo Teste de Software Planejamento de Teste Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Atividades de Teste Conceitos importante no Contexto de Teste Abordagem de Teste 2 Atividades de

Leia mais

TESTES DE SOFTWARE Lista de Exercício 02. Luiz Leão

TESTES DE SOFTWARE Lista de Exercício 02. Luiz Leão Luiz Leão luizleao@gmail.com http://www.luizleao.com Exercício 01 Ao testarmos uma aplicação web, que aspectos devemos levar em consideração? Exercício 01 Resposta Ao testarmos uma aplicação web, que aspectos

Leia mais

Testes de Software. Prof. Edjandir C. Costa

Testes de Software. Prof. Edjandir C. Costa Testes de Software Prof. Edjandir C. Costa edjandir.costa@ifsc.edu.br Sumário - Processo de teste - Estágios de teste - Diferenças entre tipos de testes Processo de Teste Dois objetivos distintos: - Demonstrar

Leia mais

1. A principal razão de dividir o processo de teste em tarefas distintas é:

1. A principal razão de dividir o processo de teste em tarefas distintas é: Simulado CTFL- BSTQB Tempo de duração: 60 minutos 1. A principal razão de dividir o processo de teste em tarefas distintas é: a) Cada fase do teste tem uma proposta diferente b) É mais fácil para gerência

Leia mais

6. QUAIS AS TÉCNICAS E RESPECTIVOS CRITÉRIOS DE TESTE EXISTENTES?

6. QUAIS AS TÉCNICAS E RESPECTIVOS CRITÉRIOS DE TESTE EXISTENTES? 6. QUAIS AS TÉCNICAS E RESPECTIVOS CRITÉRIOS DE TESTE EXISTENTES? Atualmente existem muitas maneiras de se testar um software. Mesmo assim, existem as técnicas que sempre foram muito utilizadas em sistemas

Leia mais

Guia do Processo de Teste Metodologia Celepar

Guia do Processo de Teste Metodologia Celepar Guia do Processo de Teste Metodologia Celepar Agosto de 2009 Sumário de Informações do Documento Documento: guiaprocessoteste.odt Número de páginas: 11 Versão Data Mudanças Autor 1.0 26/12/07 Criação.

Leia mais

ENGENHARIA DE SOFTWARE O QUE SÃO TESTES? TESTES TESTES TESTES 26/08/2014. São pontuais; São previsíveis; São finitos;

ENGENHARIA DE SOFTWARE O QUE SÃO TESTES? TESTES TESTES TESTES 26/08/2014. São pontuais; São previsíveis; São finitos; ENGENHARIA DE SOFTWARE Curso: Sistemas de Informação ENGENHARIA DE SOFTWARE Profª: Janaide Nogueira O QUE SÃO? Teste é um processo de avaliar um sistema ou um componente de um sistema para verificar se

Leia mais

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Processos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Objetivos Apresentar modelos de processos de software Descrever três modelos genéricos de processo e quando

Leia mais

Processos de Validação e Verificação do MPS-Br

Processos de Validação e Verificação do MPS-Br Processos de Validação e Verificação do MPS-Br O Processo Validação "O propósito do processo Validação é confirmar que um produto ou componente do produto atenderá a seu uso pretendido quando colocado

Leia mais

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini   / Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / andre.belini@ifsp.edu.br MATÉRIA: QUALIDADE DE SOFTWARE Tema: Teste de Software:

Leia mais

Introdução a Testes de Software. Ricardo Argenton Ramos

Introdução a Testes de Software. Ricardo Argenton Ramos Introdução a Testes de Software Ricardo Argenton Ramos ricargentonramos@gmail.com Agenda da Aula Introdução sobre Testes; Testes Funcionais de software; Testes Estruturais de Software; Teste de Software

Leia mais

Teste de Software: conceitos, técnicas e benefícios

Teste de Software: conceitos, técnicas e benefícios Teste de Software: conceitos, técnicas e benefícios MSc. Alessandro Viola Pizzoleto IFSP - Instituto Federal de São Paulo Piracicaba - SP 30 de março de 2017 1 / 49 Sobre Mim Mestre em Engenharia de Software

Leia mais

Estratégias de Testes Parte I

Estratégias de Testes Parte I Engenharia de Software III 5º. Semestre ADS Capítulo 9 Estratégias de Testes Parte I Profa. Dra. Ana Paula Gonçalves Serra Prof. Ms. Edson Saraiva de Almeida Agenda Exercício Profa. Dra. Ana Paula G. Serra

Leia mais

Aula 20 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016

Aula 20 Testes 3. Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016 Aula 20 Testes 3 Alessandro Garcia Leonardo da Silva Sousa OPUS Group/LES/DI/PUC-Rio Dezembro 2016 Slides adaptados de: Staa, A.v. Notas de Aula em Programacao Modular; 2008. Teste de Caixa Branca O que

Leia mais

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software

ENGENHARIA DE SOFTWARE. Aula 12 Testes de software ENGENHARIA DE SOFTWARE Aula 12 Testes de software OBJETIVOS Compreender os estágios de teste durante o desenvolvimento para os testes de aceitação por parte dos usuários de sistema; Apresentar as técnicas

Leia mais

Introdução à Programação. João Manuel R. S. Tavares

Introdução à Programação. João Manuel R. S. Tavares Introdução à Programação João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de

Leia mais

VERIFICAÇÃO & VALIDAÇÃO

VERIFICAÇÃO & VALIDAÇÃO VERIFICAÇÃO & VALIDAÇÃO Validação: Estamos construindo o produto certo? Verificação envolve checar se o software cumpre com suas especificações. Verificação: Estamos construindo certo o produto? Validação

Leia mais

Plano de Testes VideoSystem

Plano de Testes VideoSystem Plano de Testes VideoSystem Versão Histórico das Revisões Data Versão Descrição Autor 02/10/2009 1.0 06/10/2009 1.0 05/11/2009 1.1 Início da Elaboração do Plano de Testes Revisão do Plano de Testes

Leia mais

MÓDULO 16 PLANEJAMENTO DE CONSTRUÇÃO, TESTES E DOCUMENTAÇÃO DO SISTEMA

MÓDULO 16 PLANEJAMENTO DE CONSTRUÇÃO, TESTES E DOCUMENTAÇÃO DO SISTEMA MÓDULO 16 PLANEJAMENTO DE CONSTRUÇÃO, TESTES E DOCUMENTAÇÃO DO SISTEMA Quando falamos para os alunos sobre projeto e desenvolvimento de sistemas de informação eles pensam logo em programar. A programação

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Processos de Software Professor: Charles Leite O processo de software Um conjunto estruturado de atividades, procedimentos, artefatos e ferramentas necessários para o desenvolvimento

Leia mais

Fig.1: Ilustração de Estrutura de Controle Fonte:Internet

Fig.1: Ilustração de Estrutura de Controle Fonte:Internet 4. Estrutura de Controle Os algoritmos são criados para solucionar problemas propostos utilizando conceitos de bloco lógico, entrada e saída de dados, constantes, variáveis, expressões lógicas, atribuições

Leia mais

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1 Verificação e Validação Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1 Objetivos Apresentar a verificação e validação de software e discutir a distinção entre elas Descrever

Leia mais

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo Teste de Software Técnica de Teste Estrutural Rosemary Silveira Filgueiras Melo rosesfmelo@hotmail.com 1 Agenda Técnica de Teste Estrutural Critérios de Teste 2 Casos de Teste Diante da impossibilidade

Leia mais

Verificação e Validação

Verificação e Validação Verificação vs Validação Verificação e Validação Verificação: Estamos construindo o produto corretamente? O software deve estar de acordo com sua especificação. Validação: Estamos construindo o produto

Leia mais

Engenharia Software. Ení Berbert Camilo Contaiffer

Engenharia Software. Ení Berbert Camilo Contaiffer Engenharia Software Ení Berbert Camilo Contaiffer Características do Software Software não é um elemento físico, é um elemento lógico; Software é desenvolvido ou projetado por engenharia, não manufaturado

Leia mais

Testes de Software. Prof: Sérgio Portari

Testes de Software. Prof: Sérgio Portari Testes de Software Prof: Sérgio Portari Baseado no Cap 12: Estratégias de teste de software Roteiro Conceitos de teste de software Atividades de teste de software Níveis de teste de software Conceitos

Leia mais

Teste de Software. Objetivo: Executar software para revelar erros/falhas ainda não descobertos. Pode gastar 40% do esforço de desenvolvimento

Teste de Software. Objetivo: Executar software para revelar erros/falhas ainda não descobertos. Pode gastar 40% do esforço de desenvolvimento Teste de Software 3 Teste de Software Objetivo: Executar software para revelar erros/falhas ainda não descobertos Pode gastar 40% do esforço de desenvolvimento 2 Teste de Software Defeito (fault, defects)

Leia mais

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software Professor Ariel da Silva Dias Modelos de Processo de Software Conjunto de atividades que leva à produção de um produto de Software [Sommerville,2011]; Podemos contar com ferramentas de apoio com o objetivo

Leia mais

SSC 0721 Teste e Validação de Software

SSC 0721 Teste e Validação de Software SSC 0721 Teste e Validação de Software Conceitos básicos Prof. Marcio E. Delamaro delamaro@icmc.usp.br SSC 0721 Teste e Validação de Software ICMC/USP p. 1 O que é teste Atividade de executar um programa

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE 1 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE Nickerson Fonseca Ferreira nickerson.ferreira@ifrn.edu.br Introdução 2 Antes de qualquer

Leia mais

P R O C E SSO D E D E S E N VOLVIMENTO D E S O F T WAR E

P R O C E SSO D E D E S E N VOLVIMENTO D E S O F T WAR E 1 2 3 4 5 6 ASSUNTO DO MATERIAL DIDÁTICO ENGENHARIA DE SOFTWARE 8ª EDIÇÃO/2007 IAN SOMMERVILLE CAPÍTULO ESTIMATIVAS DE CUSTO DE SOFTWARE 7 CONCEITOS DE LUCROS E DESPESAS Lucro = Receita Despesa Procura

Leia mais

Teste de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Teste de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015 Teste de Software Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015 Tópicos da Aula Ø Teste de Software Ø Terminologia e Conceitos Básicos Ø Técnicas e Critérios de Teste Ø Técnicas

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Para Sommerville a arquitetura de sistemas descreve o sistema em termos de um conjunto de unidades

Leia mais

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata Processo de Desenvolvimento Também chamado de ciclo de vida do software Reflete os passos necessários para se construir um produto de software Existem vários modelos de ciclo de vida Cascata (1956) Iterativo

Leia mais

Metodologias de Teste de Software

Metodologias de Teste de Software Metodologias de Teste de Software Fernando Magno Quintão Pereira 10 de Novembro de 2010 A espiral de testes Muitos processos de teste de software seguem a mesma espiral de desenvolvimento que vemos em

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Tópico 1 - Visão Geral da Engenharia de Software Sistemas Computacionais o Definição e conceitos básicos o Evolução do desenvolvimento Natureza do produto software Definição de Engenharia

Leia mais

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador Prof. Araken Medeiros araken@ufersa.edu.br O processo de resolução de um problema com um computador leva à escrita de um algoritmo ou programa e à sua execução. Mas o que é um algoritmo? Angicos, RN 15/9/2009

Leia mais

Teste de Software Orientado a Objeto. Ricardo Argenton Ramos

Teste de Software Orientado a Objeto. Ricardo Argenton Ramos Teste de Software Orientado a Objeto Ricardo Argenton Ramos O que diferencia teste de software OO de testes Convencionais? Técnicas e abordagens são normalmente semelhantes, porém novos desafios são apresentados

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 O desenvolvimento de software envolve usuários, clientes e desenvolvedores. Avalie as seguintes afirmações

Leia mais

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos Processos de engenharia de requisitos Processos de Engenharia de Requisitos Os requisitos e as formas de obtê-los e documentálos variam drasticamente de um projeto para o outro Contudo, existe uma série

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 7 http://www.ic.uff.br/~bianca/engsoft2/ Aula 7-12/05/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software (Caps. 13 e 14 do

Leia mais

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno PDS Aula 1.4 Modelos de Processo Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br 2 Introdução Há alguns anos, o desenvolvimento de softwares era muito obsoleto; Existiam diversos problemas relacionados

Leia mais

Falta Erro Falha. Motivação. Teste de Software. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro 6/6/11

Falta Erro Falha. Motivação. Teste de Software. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro 6/6/11 Motivação Teste de Software Ocorrência de falhas humanas no processo de desenvolvimento de software é considerável Processo de testes é indispensável na garantia de qualidade de software Custos associados

Leia mais

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins. Bibliografia Quais são os problemas? 4 A sofisticação do software ultrapassou nossa capacidade de construção. 4 Nossa capacidade de construir programas não acompanha a demanda por novos programas. 4 Nossa

Leia mais

Testes de correção (de defeitos)

Testes de correção (de defeitos) Testes de correção (de defeitos) Revelam a presença de erros, mas NÃO a ausência Um teste bem sucedido é aquele que descobre o maior número de erros existentes. Deve ser utilizado em conjunto com técnicas

Leia mais

Verificação e Validação. Ewelton Yoshio Fabrício Araújo

Verificação e Validação. Ewelton Yoshio Fabrício Araújo Verificação e Validação Ewelton Yoshio Fabrício Araújo Qual a diferença entre Verificação e Validação? Diferenças Verificação se preocupa em avaliar se o produto está sendo desenvolvido corretamente, enquanto

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Program João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de um programa.

Leia mais

Processos de Software

Processos de Software DCC / ICEx / UFMG Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Processos Procedimentos e métodos definindo relação entre tarefas PROCESSO Pessoas com habilidades, treinadas

Leia mais

Programação I Apresentação

Programação I Apresentação Programação I Apresentação Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação

Leia mais

Princípios da Engenharia de Software aula 03

Princípios da Engenharia de Software aula 03 Princípios da Engenharia de Software aula 03 Prof.: José Honorato Ferreira Nunes Material cedido por: Prof.: Franklin M. Correia Na aula anterior... Modelos de processos de software: Evolucionário Tipos

Leia mais

Linguagem de Programação

Linguagem de Programação Linguagem de Programação Laços de Repetição for() / while() / do{}while() Gil Eduardo de Andrade Introdução Laços de Repetição Um laço de repetição permite que um determinado trecho de código seja executado

Leia mais

Garantia de Qualidade

Garantia de Qualidade Garantia de Qualidade Teste de Software Profa Rosana Braga Material produzido por docents do Labes e revisado por Simone Souza Disciplina: Engenharia de Software ICMC/USP O Processo de Engenharia de Software

Leia mais

Instituto Federal Sul-rio-grandense. Placa universal para controle de máquinas de lavar roupa Plano de Projeto - versão 1.0

Instituto Federal Sul-rio-grandense. Placa universal para controle de máquinas de lavar roupa Plano de Projeto - versão 1.0 Instituto Federal Sul-rio-grandense Campus Pelotas Curso de Engenharia Elétrica Planejamento e Gerenciamento de Projetos Placa universal para controle de máquinas de lavar roupa Plano de Projeto - versão

Leia mais

Redução e Controle de Erros para as Atividades de Testes de Software

Redução e Controle de Erros para as Atividades de Testes de Software Redução e Controle de Erros para as Atividades de Testes de Software Vivian Bella Ferreira Louzada (UNIP) vivianbella@electra.com.br RESUMO O artigo inicia o assunto abordando conceitos gerais sobre teste

Leia mais

Processo de Desenvolvimento. Edjandir Corrêa Costa

Processo de Desenvolvimento. Edjandir Corrêa Costa Processo de Desenvolvimento Edjandir Corrêa Costa edjandir.costa@ifsc.edu.br Processo de Desenvolvimento Definição: É um roteiro que determina quais são as tarefas necessárias e em que ordem elas devem

Leia mais

- Engenharia Reversa - Evolução de Sofware. Desenvolvimento como. Requisitos o que. Sistema porque. Profa. Dra. Sandra Fabbri. operacional.

- Engenharia Reversa - Evolução de Sofware. Desenvolvimento como. Requisitos o que. Sistema porque. Profa. Dra. Sandra Fabbri. operacional. Unidade V Evolução de Sofware - Engenharia Reversa - Profa. Dra. Sandra Fabbri Fases Genéricas do Ciclo de Vida Engenharia Sistemas Análise Projeto Codificação Manutenção Teste Sistema Requisitos Desenvolvimento

Leia mais

Unidade 4 Teste na Implantação do Sistema

Unidade 4 Teste na Implantação do Sistema Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 4.1 Teste de Unidade 4.2 Teste de Integração 4.3 Teste de Validação 4.4 Teste de Sistema 4.5 Teste na Migração Introdução O processo

Leia mais

Aula 2 - Modelos de Processo - cascata, iterativo e incremental e ágil

Aula 2 - Modelos de Processo - cascata, iterativo e incremental e ágil Aula 2 - Modelos de Processo - cascata, iterativo e incremental e ágil Análise de Sistemas Prof. Filipe Arantes Fernandes filipe.arantes@ifsudestemg.edu.br 2 Vale a pena ver de novo O que é um processo?

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Curso: Sistemas de Informação Profª: Janaide Nogueira ENGENHARIA DESOFTWARE APRESENTAÇÃO Formação Técnica: Informática(IFCE-Campus Tianguá-CE) Secretária Escolar(FDR) Graduação:

Leia mais

05/09/2013. Ciclo de vida de um Sistema de Informação

05/09/2013. Ciclo de vida de um Sistema de Informação Ciclo de vida de um Sistema de Informação Objetivos dessa aula: 1. O conceito de ciclo de vida de um projeto 2. As características do ciclo de vida do projeto clássico 3. As diferenças entre projetos clássicos

Leia mais

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software Engenharia de Software Aula 03 Perguntas da Aula 2 Processos de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 12 Março 2012 Inconsistente: perguntei laranjas, respondeu

Leia mais

Fundamentos de Teste de Software

Fundamentos de Teste de Software Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 2- Teste Estático e Teste Dinâmico Aula 5 Técnicas de Especificação SUMÁRIO INTRODUÇÃO... 3 TÉCNICAS PARA PROJETO DE CASOS

Leia mais

ISO/IEC 12207: Verificação, Validação e Testes

ISO/IEC 12207: Verificação, Validação e Testes ISO/IEC 12207: Verificação, Validação e Testes Verificação, Validação e Testes Os processos de verificação e validação fazem parte dos processos de apoio do ciclo de vida que devem ser aplicados ao longo

Leia mais

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais

Tópicos da Aula. O que é anunciado. Falha de Comunicação no Desenvolvimento de Software. Engenharia de Software: Conceitos Fundamentais Engenharia de Software Aula 02 Tópicos da Aula Engenharia de Software: Conceitos Fundamentais Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 07 Março 2012 Motivação e Conceitos

Leia mais

Testes de software - Teste funcional

Testes de software - Teste funcional Testes de software - Teste funcional Vitor Alcântara de Almeida Universidade Federal do Rio Grande do Norte Natal, Brasil 30 de outubro de 2014 Alcântara (UFRN) Testes de software - Testes funcionais 30

Leia mais

Engenharia de Software

Engenharia de Software Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação

Leia mais

LINGUAGEM C: COMANDOS DE REPETIÇÃO

LINGUAGEM C: COMANDOS DE REPETIÇÃO LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições

Leia mais

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima Gerência de Projetos e Qualidade de Software Prof. Walter Gima 1 OBJETIVOS Compreender o processo de gerenciamento de qualidade e as principais atividades do processo de garantia, planejamento e controle

Leia mais

Sistema NetConta I - Guia de Referência

Sistema NetConta I - Guia de Referência Sistema NetConta I - Guia de Referência Dúvidas ou Sugestões: netconta@polimed.com.br Índice Como entrar no sistema NetConta 1?... 3 1. TRABALHANDO COM UMA REMESSA... 3 1.1.Como criar uma nova remessa?...

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação Especificação de comandos Objectivo: O objectivo da especificação formal de comandos é a necessidade de assegurar a correcção dos comandos a desenvolver. Torna-se necessário desenvolver uma metodologia

Leia mais

Extreme Programming: Valores e Práticas

Extreme Programming: Valores e Práticas Programação Extrema Extreme Programming: Valores e Práticas Prof. Mauro Lopes 1-31 34 Objetivos Anteriormente trabalhamos os conceitos do Desenvolvimento Tradicional e do Desenvolvimento Ágil. Trouxemos

Leia mais

Teste de Software. Proj. Desenvolvimento de Software. Prof. Cleverton Hentz. 30 de agosto de Material Apresentado

Teste de Software. Proj. Desenvolvimento de Software. Prof. Cleverton Hentz. 30 de agosto de Material Apresentado Teste de Software Proj. Desenvolvimento de Software Prof. Cleverton Hentz cleverton.hentz@ifrn.edu.br 30 de agosto de 2017 Material Apresentado Sumário de Aula 1 Introdução 2 Níveis de Teste 3 Terminologia

Leia mais