O documento discute a importância do teste de software, definindo conceitos básicos como objetivo, custos e benefícios. Aborda a necessidade do teste para identificar falhas e melhorar a qualidade do software, reduzindo custos de manutenção. Também destaca os impactos negativos de um teste inadequado, como aumento de falhas, custos e atrasos de projetos.
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Luiz Ladeira
1) O documento discute os fundamentos e importância do teste de software, descrevendo seus conceitos e processos.
2) É enfatizada a importância do teste de software para reduzir defeitos e riscos, melhorar a qualidade e reduzir custos de projetos.
3) O documento também aborda a certificação CTFL do ISTQB, que fornece padrões para testes de software.
1) O documento apresenta um livro sobre testes de software, abordando conceitos, processos e técnicas relacionadas a essa atividade.
2) O livro é dividido em 13 capítulos e 4 anexos, tratando de tópicos como introdução aos testes de software, visão geral do processo de testes, gestão e melhoria do processo, erros de programação, automação e documentação de testes.
3) O objetivo é fornecer subsídios para que profissionais e organizações possam estruturar e aprimorar
Gerenciamento da Qualidade de Software 5.pptxRoberto Nunes
O documento discute estratégias para gerenciamento de projetos de software, incluindo cinco passos para gerenciamento de projetos: 1) definição do escopo, 2) elaboração de estratégias, 3) integração de colaboradores, 4) monitoramento e 5) encerramento. Também discute planos de teste e a importância da verificação e validação no desenvolvimento de software.
Gerenciamento da Qualidade de Software 1.pptxRoberto Nunes
O documento discute a garantia da qualidade de software, incluindo a história do teste de software, modelos de qualidade como o CMM, e a importância dos testes para encontrar erros e garantir a qualidade. Também aborda métricas, confiabilidade estatística e ferramentas de teste.
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
1) O documento discute os conceitos e técnicas de teste de software, incluindo os objetivos dos testes, diferentes tipos de testes e estratégias de teste.
2) São descritos os conceitos de defeito, erro e falha, além das diferenças entre teste e depuração.
3) São apresentadas as etapas de um processo de teste, incluindo teste de unidade, integração, validação e sistema.
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWAREMoisés Armani Ramírez
Controlar a qualidade de um software é uma atividade que exige tempo, esforço e conhecimento técnico sobre teste de software e sobre o sistema a ser testado. Não há garantia de que um software esteja 100% livre de defeitos e quanto mais se tentar aproximar desse percentual, maiores serão os custos do projeto. Diversas metodologias tentam reduzir os custos em testes sem impactar na qualidade do sistema. Contudo, existe um antigo e profundo impasse: esforço necessário de teste versus tempo disponível para testes. Este trabalho aborda o conceito de crowd testing e apresenta como uma multidão pode contribuir na qualidade de software a fim de amenizar o impasse entre esforço e tempo. Como não há trabalhos científicos que abordem o assunto, a proposta deste trabalho foi utilizar os conceitos de crowdsourcing e do processo de teste de software para, então, identificar como e onde o crowd testing pode ser utilizado no controle da qualidade de software. Trata-se de uma pesquisa exploratória baseada em bibliografias cientificas e documentais para a definição de crowd testing.
Verificação visa assegurar que o software seja desenvolvido de um modo apropriado e consistente. Validação visa assegurar que o software corresponda aos requisitos estabelecidos. Teste visa examinar o comportamento do software através de sua execução.
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Luiz Ladeira
1) O documento discute os fundamentos e importância do teste de software, descrevendo seus conceitos e processos.
2) É enfatizada a importância do teste de software para reduzir defeitos e riscos, melhorar a qualidade e reduzir custos de projetos.
3) O documento também aborda a certificação CTFL do ISTQB, que fornece padrões para testes de software.
1) O documento apresenta um livro sobre testes de software, abordando conceitos, processos e técnicas relacionadas a essa atividade.
2) O livro é dividido em 13 capítulos e 4 anexos, tratando de tópicos como introdução aos testes de software, visão geral do processo de testes, gestão e melhoria do processo, erros de programação, automação e documentação de testes.
3) O objetivo é fornecer subsídios para que profissionais e organizações possam estruturar e aprimorar
Gerenciamento da Qualidade de Software 5.pptxRoberto Nunes
O documento discute estratégias para gerenciamento de projetos de software, incluindo cinco passos para gerenciamento de projetos: 1) definição do escopo, 2) elaboração de estratégias, 3) integração de colaboradores, 4) monitoramento e 5) encerramento. Também discute planos de teste e a importância da verificação e validação no desenvolvimento de software.
Gerenciamento da Qualidade de Software 1.pptxRoberto Nunes
O documento discute a garantia da qualidade de software, incluindo a história do teste de software, modelos de qualidade como o CMM, e a importância dos testes para encontrar erros e garantir a qualidade. Também aborda métricas, confiabilidade estatística e ferramentas de teste.
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
1) O documento discute os conceitos e técnicas de teste de software, incluindo os objetivos dos testes, diferentes tipos de testes e estratégias de teste.
2) São descritos os conceitos de defeito, erro e falha, além das diferenças entre teste e depuração.
3) São apresentadas as etapas de um processo de teste, incluindo teste de unidade, integração, validação e sistema.
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWAREMoisés Armani Ramírez
Controlar a qualidade de um software é uma atividade que exige tempo, esforço e conhecimento técnico sobre teste de software e sobre o sistema a ser testado. Não há garantia de que um software esteja 100% livre de defeitos e quanto mais se tentar aproximar desse percentual, maiores serão os custos do projeto. Diversas metodologias tentam reduzir os custos em testes sem impactar na qualidade do sistema. Contudo, existe um antigo e profundo impasse: esforço necessário de teste versus tempo disponível para testes. Este trabalho aborda o conceito de crowd testing e apresenta como uma multidão pode contribuir na qualidade de software a fim de amenizar o impasse entre esforço e tempo. Como não há trabalhos científicos que abordem o assunto, a proposta deste trabalho foi utilizar os conceitos de crowdsourcing e do processo de teste de software para, então, identificar como e onde o crowd testing pode ser utilizado no controle da qualidade de software. Trata-se de uma pesquisa exploratória baseada em bibliografias cientificas e documentais para a definição de crowd testing.
Verificação visa assegurar que o software seja desenvolvido de um modo apropriado e consistente. Validação visa assegurar que o software corresponda aos requisitos estabelecidos. Teste visa examinar o comportamento do software através de sua execução.
Gerenciamento da Qualidade de Software 2.pptxRoberto Nunes
O documento discute a importância da qualidade de software e as técnicas para gerenciamento da qualidade, incluindo CMM, CMMI, MPS.BR e testes. A qualidade é essencial para a competitividade e requer processos bem definidos ao longo de todo o ciclo de desenvolvimento.
Fundamentos Engenharia de Software.pptxRoberto Nunes
O documento fornece uma visão geral da engenharia de software, discutindo sua definição, objetivos, evolução histórica, desafios, práticas e mitos relacionados. É apresentada uma introdução aos principais conceitos, incluindo processos de software, métodos, ferramentas CASE e perfis profissionais.
Gerenciamento da Qualidade de Software 3.pptxRoberto Nunes
O documento discute técnicas de revisão de software como uma forma efetiva de melhorar a qualidade do software. A revisão técnica formal é apontada como o filtro mais efetivo para garantir a qualidade, com o objetivo de encontrar erros antes de serem entregues ao usuário final. Defeitos descobertos nas fases iniciais custam menos para corrigir do que defeitos encontrados mais tarde.
Este documento fornece um resumo sobre qualidade e teste de software. Ele discute a importância do teste, as técnicas de teste como caixa preta e caixa branca, e automação de testes. Também aborda carreiras em teste de software e exemplos históricos de falhas de software.
Este documento fornece um resumo sobre qualidade e teste de software. Ele discute a importância do teste, as técnicas de teste como caixa preta e caixa branca, automação de testes, BDD, e carreiras em teste de software.
O artigo discute a importância da rastreabilidade de requisitos para a qualidade do software, apresentando dois modelos de referência para apoiar a definição do modelo de rastreabilidade. O documento também aborda como a rastreabilidade interfere na qualidade do produto e como os requisitos são gerenciados ao longo do processo de desenvolvimento.
Os aspectos mais relevantes da Engenharia de RequisitosJosé Vieira
O documento discute os aspectos mais relevantes da Engenharia de Requisitos, incluindo suas tarefas e princípios para uma boa especificação de requisitos. A Engenharia de Requisitos é importante para entender as necessidades dos clientes e desenvolver software com qualidade e de acordo com os requisitos.
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
Camilo Falcão Ribeiro é um analista e arquiteto de teste com mais de quatro anos de experiência em testes de software e processos. Ele participou de mais de 40 projetos de software e projetos de implantação do CMMi em todos os níveis. Ribeiro é graduado em Sistemas para Internet e pós-graduando em Engenharia de Software.
Este documento apresenta o plano de projeto de software para o desenvolvimento de um sistema integrado de gerenciamento de atividades administrativas de um centro de formação de condutores. O plano descreve as principais funcionalidades do sistema, estimativas de esforço, análise e gestão de riscos, cronograma, equipe e medidas de qualidade. O projeto visa melhorar a gestão dos centros de formação através de ferramentas e indicadores que auxiliem na tomada de decisões.
Monografia sobre crowdsourcing + crowd testing + processo de teste de softwareMoisés Armani Ramírez
Este documento apresenta uma monografia sobre o crowd testing e como ele pode ser inserido no processo de teste de software tradicional. O trabalho descreve o conceito de crowdsourcing e o processo de teste de software, e investiga os conceitos e aplicações do crowd testing. O objetivo é identificar como o crowd testing pode ser utilizado no controle da qualidade de software para complementar os testes tradicionais.
O documento apresenta os conceitos e princípios básicos do Scrum, uma metodologia ágil de desenvolvimento de software. Descreve os papéis do Product Owner, Scrum Master e Time, assim como as fases do Scrum: planejamento, sprint, reuniões diárias, revisão e encerramento. Tem como objetivo fornecer software funcional de forma incremental e flexível para lidar com requisitos que mudam ao longo do projeto.
O documento descreve a crise do desenvolvimento de software nas décadas de 1960 a 1980, citando problemas como demanda maior que a capacidade de desenvolvimento e maus projetos. Também apresenta modelos de processo como o ciclo de vida clássico, prototipagem e espiral, destacando seus benefícios e limitações.
Identificar objetivos de usabilidade e experiência do usuário é essencial para o sucesso de produtos. O documento discute vários paradigmas de avaliação como testes de usabilidade, estudos de campo e avaliação preditiva, além de técnicas como observação de usuários e entrevistas. O framework DECIDE fornece uma lista de verificação para guiar avaliações, considerando metas, questões, paradigmas, aspectos práticos e éticos.
Verificação e validação (V&V) são processos para melhorar a qualidade de software e produtividade. V&V permite identificar problemas cedo e corrigi-los antes da entrega, aumentando a produtividade. Técnicas estáticas como revisões e inspeções verificam a qualidade antes dos testes dinâmicos. Testes de software como caixa branca e preta são importantes para validar que o software atende aos requisitos.
UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...Fábio Pio
Este artigo discute como o desenvolvimento dirigido a testes, uma prática ágil, pode contribuir para a criação de software de qualidade. O artigo faz uma revisão bibliográfica sobre garantia da qualidade, ciclos de teste tradicionais e desenvolvimento dirigido a testes. Também apresenta um estudo de caso aplicando questionários a desenvolvedores para avaliar suas percepções sobre as abordagens.
Apresentação de Engenharia de software I - Prof. Cristiane FidelixCris Fidelix
O documento apresenta o plano de ensino para a disciplina de Engenharia de Software I. Ele descreve os objetivos gerais do curso, que são proporcionar conhecimento sobre métodos e técnicas de projeto de software e habilitar os alunos a aplicar esses conceitos em projetos. Também lista os principais tópicos a serem abordados, como fundamentos, processos de desenvolvimento de software, modelos de processo e práticas ágeis.
O documento introduz Scrum, um framework ágil para gestão de projetos. Resume os principais papéis, artefatos e cerimónias de Scrum como Sprints, Daily Scrum e Retrospectivas. Explica como Scrum promove a entrega rápida de valor através da auto-organização de equipas multidisciplinares.
Este documento apresenta os conceitos e processos de teste de software, incluindo as fases de teste de componente, integração e sistema. O objetivo dos testes é verificar aspectos estruturais, lógicos e sistêmicos do software para descobrir defeitos de forma eficiente. O processo de teste deve ser realizado em fases por equipes de desenvolvedores e testadores para garantir a qualidade do software.
Este documento apresenta o plano de projeto para o desenvolvimento de um software chamado NutriBR para o Hospital Universitário (HU) de Sergipe. O NutriBR irá gerenciar uma base de dados para acompanhar a dieta de pacientes com problemas cardíacos divididos em dois grupos (grupo prevenção e grupo controle). O documento descreve as estimativas de tempo e recursos para o projeto, análise de riscos, cronograma e organização da equipe.
Este documento apresenta o syllabus para a certificação Foundation Level em teste de software da Comissão Internacional para Qualificação em Teste de Software (ISTQB). O syllabus descreve os fundamentos do teste, as técnicas de teste estáticas e dinâmicas, e como o teste é aplicado durante o ciclo de vida do software.
Gerenciamento da Qualidade de Software 2.pptxRoberto Nunes
O documento discute a importância da qualidade de software e as técnicas para gerenciamento da qualidade, incluindo CMM, CMMI, MPS.BR e testes. A qualidade é essencial para a competitividade e requer processos bem definidos ao longo de todo o ciclo de desenvolvimento.
Fundamentos Engenharia de Software.pptxRoberto Nunes
O documento fornece uma visão geral da engenharia de software, discutindo sua definição, objetivos, evolução histórica, desafios, práticas e mitos relacionados. É apresentada uma introdução aos principais conceitos, incluindo processos de software, métodos, ferramentas CASE e perfis profissionais.
Gerenciamento da Qualidade de Software 3.pptxRoberto Nunes
O documento discute técnicas de revisão de software como uma forma efetiva de melhorar a qualidade do software. A revisão técnica formal é apontada como o filtro mais efetivo para garantir a qualidade, com o objetivo de encontrar erros antes de serem entregues ao usuário final. Defeitos descobertos nas fases iniciais custam menos para corrigir do que defeitos encontrados mais tarde.
Este documento fornece um resumo sobre qualidade e teste de software. Ele discute a importância do teste, as técnicas de teste como caixa preta e caixa branca, e automação de testes. Também aborda carreiras em teste de software e exemplos históricos de falhas de software.
Este documento fornece um resumo sobre qualidade e teste de software. Ele discute a importância do teste, as técnicas de teste como caixa preta e caixa branca, automação de testes, BDD, e carreiras em teste de software.
O artigo discute a importância da rastreabilidade de requisitos para a qualidade do software, apresentando dois modelos de referência para apoiar a definição do modelo de rastreabilidade. O documento também aborda como a rastreabilidade interfere na qualidade do produto e como os requisitos são gerenciados ao longo do processo de desenvolvimento.
Os aspectos mais relevantes da Engenharia de RequisitosJosé Vieira
O documento discute os aspectos mais relevantes da Engenharia de Requisitos, incluindo suas tarefas e princípios para uma boa especificação de requisitos. A Engenharia de Requisitos é importante para entender as necessidades dos clientes e desenvolver software com qualidade e de acordo com os requisitos.
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
Camilo Falcão Ribeiro é um analista e arquiteto de teste com mais de quatro anos de experiência em testes de software e processos. Ele participou de mais de 40 projetos de software e projetos de implantação do CMMi em todos os níveis. Ribeiro é graduado em Sistemas para Internet e pós-graduando em Engenharia de Software.
Este documento apresenta o plano de projeto de software para o desenvolvimento de um sistema integrado de gerenciamento de atividades administrativas de um centro de formação de condutores. O plano descreve as principais funcionalidades do sistema, estimativas de esforço, análise e gestão de riscos, cronograma, equipe e medidas de qualidade. O projeto visa melhorar a gestão dos centros de formação através de ferramentas e indicadores que auxiliem na tomada de decisões.
Monografia sobre crowdsourcing + crowd testing + processo de teste de softwareMoisés Armani Ramírez
Este documento apresenta uma monografia sobre o crowd testing e como ele pode ser inserido no processo de teste de software tradicional. O trabalho descreve o conceito de crowdsourcing e o processo de teste de software, e investiga os conceitos e aplicações do crowd testing. O objetivo é identificar como o crowd testing pode ser utilizado no controle da qualidade de software para complementar os testes tradicionais.
O documento apresenta os conceitos e princípios básicos do Scrum, uma metodologia ágil de desenvolvimento de software. Descreve os papéis do Product Owner, Scrum Master e Time, assim como as fases do Scrum: planejamento, sprint, reuniões diárias, revisão e encerramento. Tem como objetivo fornecer software funcional de forma incremental e flexível para lidar com requisitos que mudam ao longo do projeto.
O documento descreve a crise do desenvolvimento de software nas décadas de 1960 a 1980, citando problemas como demanda maior que a capacidade de desenvolvimento e maus projetos. Também apresenta modelos de processo como o ciclo de vida clássico, prototipagem e espiral, destacando seus benefícios e limitações.
Identificar objetivos de usabilidade e experiência do usuário é essencial para o sucesso de produtos. O documento discute vários paradigmas de avaliação como testes de usabilidade, estudos de campo e avaliação preditiva, além de técnicas como observação de usuários e entrevistas. O framework DECIDE fornece uma lista de verificação para guiar avaliações, considerando metas, questões, paradigmas, aspectos práticos e éticos.
Verificação e validação (V&V) são processos para melhorar a qualidade de software e produtividade. V&V permite identificar problemas cedo e corrigi-los antes da entrega, aumentando a produtividade. Técnicas estáticas como revisões e inspeções verificam a qualidade antes dos testes dinâmicos. Testes de software como caixa branca e preta são importantes para validar que o software atende aos requisitos.
UM ESTUDO SOBRE ABORDAGENS DE TESTE E SUAS CONTRIBUIÇÕES PARA A QUALIDADE NO ...Fábio Pio
Este artigo discute como o desenvolvimento dirigido a testes, uma prática ágil, pode contribuir para a criação de software de qualidade. O artigo faz uma revisão bibliográfica sobre garantia da qualidade, ciclos de teste tradicionais e desenvolvimento dirigido a testes. Também apresenta um estudo de caso aplicando questionários a desenvolvedores para avaliar suas percepções sobre as abordagens.
Apresentação de Engenharia de software I - Prof. Cristiane FidelixCris Fidelix
O documento apresenta o plano de ensino para a disciplina de Engenharia de Software I. Ele descreve os objetivos gerais do curso, que são proporcionar conhecimento sobre métodos e técnicas de projeto de software e habilitar os alunos a aplicar esses conceitos em projetos. Também lista os principais tópicos a serem abordados, como fundamentos, processos de desenvolvimento de software, modelos de processo e práticas ágeis.
O documento introduz Scrum, um framework ágil para gestão de projetos. Resume os principais papéis, artefatos e cerimónias de Scrum como Sprints, Daily Scrum e Retrospectivas. Explica como Scrum promove a entrega rápida de valor através da auto-organização de equipas multidisciplinares.
Este documento apresenta os conceitos e processos de teste de software, incluindo as fases de teste de componente, integração e sistema. O objetivo dos testes é verificar aspectos estruturais, lógicos e sistêmicos do software para descobrir defeitos de forma eficiente. O processo de teste deve ser realizado em fases por equipes de desenvolvedores e testadores para garantir a qualidade do software.
Este documento apresenta o plano de projeto para o desenvolvimento de um software chamado NutriBR para o Hospital Universitário (HU) de Sergipe. O NutriBR irá gerenciar uma base de dados para acompanhar a dieta de pacientes com problemas cardíacos divididos em dois grupos (grupo prevenção e grupo controle). O documento descreve as estimativas de tempo e recursos para o projeto, análise de riscos, cronograma e organização da equipe.
Este documento apresenta o syllabus para a certificação Foundation Level em teste de software da Comissão Internacional para Qualificação em Teste de Software (ISTQB). O syllabus descreve os fundamentos do teste, as técnicas de teste estáticas e dinâmicas, e como o teste é aplicado durante o ciclo de vida do software.
Este documento describe la necesidad de profesionalizar a los cuerpos de seguridad en México ante las nuevas modalidades de criminalidad. Explica que es importante realizar un censo de los elementos policiales para establecer criterios de profesionalización. También destaca la importancia de la Academia Nacional de Seguridad Pública y del Secretariado Ejecutivo del Sistema Nacional de Seguridad Pública para establecer estándares de profesionalización que mejoren la seguridad y dignifiquen a la policía.
Este documento describe los procesos de gestión de la integración en la dirección de proyectos. La gestión de la integración involucra identificar, definir, combinar y coordinar los procesos de dirección de proyectos para lograr los objetivos del proyecto. Incluye procesos como desarrollar el acta de constitución del proyecto, desarrollar el plan para la dirección del proyecto, dirigir y gestionar el trabajo del proyecto, y cerrar el proyecto o fase. El objetivo es integrar todos los proces
Axiología, ETICA PROFESIONAL EN LA ADMINISTRACION DE EMPRESASdanny
El documento presenta artículos que relacionan la ética con diferentes asignaturas de la carrera de Administración de Empresas, con el objetivo de fomentar la axiología profesional en la región de La Guajira, Colombia y Latinoamérica. Los estudiantes de noveno semestre analizan cómo diversas asignaturas se relacionan con la ética profesional y cómo fortalecer los valores éticos en la universidad puede conducir a mejores resultados para la sociedad. El documento incluye varios artículos escritos por estud
O documento discute planos de teste de software, incluindo porque são importantes, o que deve ser testado, casos de uso e requisitos, métricas e estatísticas de teste.
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processocrc1404
1) A metodologia desenvolvida pelo CenPRA visa implantar ou melhorar o processo de teste de software em empresas.
2) A metodologia inclui treinamento, um processo de teste genérico e suporte para geração de documentos de teste baseados na norma IEEE 829.
3) A metodologia foi aplicada com sucesso em uma empresa de software para melhorar seu processo de teste.
O documento apresenta um plano de treinamento sobre testes funcionais que inclui três dias de aulas. No primeiro dia serão abordados fundamentos de testes e derivação de casos de teste a partir de casos de uso. Nos dias seguintes serão apresentados recursos de uma ferramenta de teste funcional e realizados laboratórios sobre projeto de testes, criação de scripts manuais e automatizados e geração de relatórios.
Avaliação de um aluno em uma prova de qualidade de software. O aluno obteve nota 4,5 na prova e 2 na participação, com data de 17 de novembro de 2014. A prova continha 10 questões sobre conceitos de qualidade de software como custos da qualidade, atividades de garantia da qualidade, normas como ISO 9126 e métricas.
(1) O documento apresenta um questionário sobre testes de software com 35 perguntas sobre conceitos fundamentais de teste de software. (2) As perguntas cobrem tópicos como objetivos de teste, tipos de defeitos, atividades de teste, princípios de teste, níveis de teste e teste de aceitação. (3) O questionário é baseado no Syllabus CTFL e visa auxiliar estudantes nos estudos para a certificação.
Como especificar requisitos em metodologias ágeis?Priscilla Aguiar
O documento discute como os requisitos são especificados em metodologias ágeis. Apresenta user stories como uma forma de descrever requisitos de maneira sucinta, focada no valor para o usuário, e discute técnicas como modelagem de casos de uso para requisitos complexos.
O documento resume os principais pontos sobre teste de software segundo o guia SWEBOK. Aborda os fundamentos, níveis, objetivos, técnicas, medidas e processo de teste de software. Apresenta definições de termos como falha, defeito e erro e discute questões como testabilidade, limitações de teste e objetivos como teste de aceitação e regressão.
GESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MININGMarcos Lottermann
O documento discute o desenvolvimento de uma ferramenta web para gerenciar demandas de teste de software e aplicar text mining para identificar padrões nos defeitos reportados, permitindo que este conhecimento seja usado para melhorar projetos futuros. A ferramenta permitiria ao gestor visualizar o andamento dos projetos e produtividade das equipes através de gráficos.
O documento discute a carreira em teste de software, apresentando diferentes papéis como testador, analista de teste e liderança. Também aborda conceitos como engenharia de software, Rational Unified Process e mitos sobre testadores. Por fim, lista certificações e bibliografia sobre o tema.
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
1. O documento discute testes de software, incluindo princípios, ferramentas e carreiras.
2. São apresentados os motivos para testar software, como evitar defeitos e aumentar a satisfação dos clientes.
3. São descritos os níveis, tipos e técnicas de teste de software, assim como ferramentas comuns de teste e oportunidades de carreira na área.
Um plano de testes documenta a estratégia para verificar se um produto ou sistema atende aos requisitos. Normalmente preparado por engenheiros de teste, um plano de testes deve incluir detalhes como itens a serem testados, critérios de aprovação, cronograma e responsabilidades.
O documento discute os conceitos e objetivos do teste de software, incluindo:
1) Testar software significa verificar através de execuções controladas se o comportamento está de acordo com o especificado.
2) Os testes servem para revelar defeitos e medir a qualidade e funcionalidade de um sistema.
3) É necessário testar por diversos motivos como questões de negócio, qualidade, custos, segurança e confiabilidade.
O documento discute os conceitos e objetivos do teste de software, incluindo:
1) Testar software significa verificar através de execuções controladas se o comportamento está de acordo com o especificado.
2) Os testes servem para revelar defeitos e medir a qualidade e funcionalidade de um sistema.
3) É necessário testar por diversos motivos como questões de negócio, qualidade, custos, segurança e confiabilidade.
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
O documento discute a evolução da preocupação com a qualidade de software ao longo dos anos, desde as décadas de 1950 a 2000. Nos anos iniciais, os erros eram conhecidos apenas após o término do programa. Nos anos 1970 surgiram análise estruturada e teste antes do término. Nos anos 1980 houve primeiras preocupações com padrões de qualidade. Nos anos 1990 surgiram primeiros processos de teste motivados pelo bug do milênio. Nos anos 2000, testes foram estruturados dentro do processo de desenvolvimento e surgiram ferramentas de
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSLuiz Ladeira
Este trabalho descreve a importância do teste de software nas organizações e seus fundamentos. Tal abordagem se justifica na demonstração dos fundamentos básicos do teste de software, para aqueles que desejam aplicar seus fundamentos em projetos de software e os impactos que sua falta pode causar nos negócios das organizações.
O documento discute o que é teste de software, por que é necessário testar e os principais princípios e processos de teste de software. Explica que teste de software envolve executar um programa para descobrir erros, que testar é necessário para evitar prejuízos financeiros e de reputação causados por falhas, e que os humanos sempre cometem erros, justificando a necessidade de testes.
O documento discute processos de verificação e validação (V&V) para software, incluindo inspeções de código, testes de software e abordagens como Cleanroom. Ele explica a diferença entre verificação e validação, métodos como inspeções de software e análises estáticas automatizadas, e fatores importantes para o planejamento de V&V.
Aplicação de técnicas de processamento de linguagem natural para ferramenta P...Laís Berlatto
O documento discute a aplicação de técnicas de processamento de linguagem natural para aprimorar a ferramenta de automação de testes Pyccuracy, substituindo seu mecanismo atual de reconhecimento de palavras naturais por expressões regulares por processamento de linguagem natural.
Indicadores de políticas públicas e métricas de software: uma visão em paraleloRoberto de Pinho
O documento apresenta uma metodologia de análise e solução de problemas (MASP) que discute a importância da medição em projetos de software. Apresenta princípios e conceitos sobre métricas de software, incluindo suas finalidades, características, tipos e boas práticas para implementação de um programa de medição.
Este documento apresenta uma introdução ao teste de software, abordando os seguintes tópicos: (1) conceitos básicos de teste de software como defeitos, erros e falhas; (2) objetivos do teste de software como garantir a qualidade e revelar erros; (3) diferentes fases e técnicas de teste como teste de unidade, integração e funcional.
Semelhante a 11 1 --teste_de_software_motivação_e_conceitos_basicos (20)
1. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
Centro de Tecnologia da Informação Renato Archer, CTI
Ministério da Ciência e Tecnologia, MCT
Teste de Software: Motivação
e Conceitos Básicos
Autores:
Adalberto Nobiato Crespo: Adalberto.crespo@cti.gov.br
Mario Jino: Jino@dca.fee.unicamp.br
Miguel Argollo: Miguel.argollo@cti.gov.br
Paulo Bueno: Paulo.bueno@cti.gov.br
Celso Penteado de Barros: Celso.barros@cti.gov
Outubro/2009
Teste de Software: Motivação e Conceitos Básicos Página 1
2. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
Teste de Software: Motivação e Conceitos Básicos
Apresentação
Este documento apresenta uma introdução ao teste de software, um conjunto de atividades
de extrema importância para a obtenção de produtos de software de qualidade. Como um
texto inicial, buscou-se apresentar os conceitos fundamentais de teste de uma forma simples
e breve. São descritos, dentre outros conceitos de teste: o objetivo; os procedimentos; o
processo; os tipos; os níveis e as técnicas aplicadas à atividade de teste.
O objetivo é apontar práticas aceitas como eficazes por profissionais da área e
também padrões recentes de teste de software, definidos por órgãos como ISO/IEC e IEEE.
É importante notar que a adoção de qualquer tecnologia de teste por parte das organizações
ou profissionais envolvidos com o SPB deve ser calcada em uma análise cuidadosa das
reais necessidades de teste, tendo em vista o objetivo da organização ou do profissional e a
natureza do software produzido.
Diferentes usuários podem se interessar prioritariamente por partes distintas deste
documento. Embora a leitura integral seja recomendada, podem-se identificar duas áreas de
interesse: aspectos mais técnicos do teste e aspectos mais voltados à política e ao
gerenciamento do teste.
As Seções 1, 2, 3 e 11 abordam a motivação, alguns conceitos que são essenciais para
todos os leitores assim como as conclusões. As Seções 4, 5, 6 e 7 discutem conceitos como
níveis, ciclos, tipos, técnicas, critérios e ferramentas de teste; conteúdo importante para os
desenvolvedores de software e os responsáveis pelo teste (gerentes, projetistas e executores
de teste). As Seções 8, 9, 10 apresentam os conceitos de processo, documentação, análise
de riscos, e considerações políticas e estratégicas do teste, temas relacionados à gerência
estratégica de TI, importantes para os responsáveis pela área de qualidade e de processos da
organização.
Guias e tutoriais de teste estão sendo desenvolvidos para complementar este
documento.
Teste de Software: Motivação e Conceitos Básicos Página 2
3. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
Conteúdo
1 Introdução: software público, qualidade e teste ............................................................. 4
2 Teste de software: objetivo, custos e benefícios ............................................................. 5
3 O sucesso no teste: provocar falhas que mostrem defeitos ............................................ 8
4 Níveis e ciclos do teste: quando testar .......................................................................... 11
5 Tipos de teste: o que testar ........................................................................................... 13
6 Técnicas e critérios de teste: como testar ..................................................................... 15
6.1 Critérios da técnica funcional ................................................................................... 17
6.2 Critérios da técnica estrutural .................................................................................. 21
7 Ferramentas de apoio ao teste ...................................................................................... 24
8 Processo e documentação do teste: como organizar o trabalho .................................. 26
9 Análise de riscos: priorizar aspectos para o teste .......................................................... 28
10 Política e processo de teste: o papel do teste na estratégia da organização ................ 29
11 Conclusão: transformando conceitos de teste em melhores produtos de software .... 31
Teste de Software: Motivação e Conceitos Básicos Página 3
4. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
1 Introdução: software público, qualidade e teste
O amadurecimento da indústria de software no Brasil traz consigo um aumento da
competitividade entre as empresas brasileiras desenvolvedoras e também destas com
empresas de outros países. Neste contexto, a promoção da qualidade de produtos de
software é um fator crítico de sucesso. Também de suma importância é o aprimoramento
dos processos de engenharia e de gestão no desenvolvimento de software, visando permitir
projetos bem sucedidos, com menores custos e respeitando os limites de prazo.
O Software Público Brasileiro (SPB) adota um modelo de desenvolvimento de
software caracterizado pelo compartilhamento de produtos de software, assim como dos
artefatos e serviços a eles relacionados. A existência de um alto nível de qualidade do
software, artefatos e serviços compartilhados seguramente tem uma influência positiva para
o sucesso deste modelo. Deste modo, a adoção de práticas visando avaliar e aprimorar a
qualidade deve ser estimulada no contexto do SPB.
O desenvolvimento de software não é uma tarefa fácil e, por ser fortemente baseada
no trabalho humano, é altamente sujeita a erros. Portanto, por mais que se adotem
processos de software bem estabelecidos, e que estes sejam executados por pessoas
capacitadas, usando técnicas e ferramentas adequadas, erros durante o desenvolvimento
acontecem e resultam em deficiências no software. A atividade de teste visa identificar
estas deficiências, permitindo assim o aprimoramento dos produtos de software.
O restante do documento está organizado do seguinte modo. A Seção 2 aborda a
necessidade do teste e os impactos negativos de um teste inadequado; a Seção 3 define
alguns conceitos fundamentais; a Seção 4 mostra como o esforço de teste pode ser realizado
em etapas e ciclos; a Seção 5 apresenta alguns tipos de teste existentes; a Seção 6 descreve
as principais técnicas e critérios para seleção e avaliação de testes; a Seção 7 cita alguns
tipos de ferramentas que podem apoiar esta atividade, enquanto a Seção 8 descreve as
atividades principais e as informações envolvidas em um processo de teste; a Seção 9
sumariza como a análise de riscos pode ser considerada no teste; a Seção 10 aborda como
situar estrategicamente o teste em relação aos objetivos da organização. Finalmente, tem-se
a conclusão na Seção 11.
Teste de Software: Motivação e Conceitos Básicos Página 4
5. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
2 Teste de software: objetivo, custos e benefícios
Existem diversas definições de teste de software; por exemplo:
• “Teste é uma atividade direcionada para avaliar um atributo ou capacidade de um
programa ou sistema e determinar se ele satisfaz os resultados requeridos”1;
• “Teste é o processo de executar um programa com a intenção de encontrar
defeitos”2;
• “Teste é o processo pelo qual se explora e se entende o estado dos benefícios e
riscos associados com a versão de um sistema de software”3.
Todas essas definições são válidas e destacam algum aspecto importante da atividade
de teste. De maneira simplificada podemos entender o teste de software como: “a execução
do software de uma forma controlada com o objetivo de avaliar se o software se comporta
ou não conforme especificado”.
Trata-se, portanto, de uma atividade fundamental para avaliar se o software produzido
atende aos requisitos levantados com os usuários. No entanto, teste não exclui a realização
de outras atividades como as inspeções efetuadas nos artefatos produzidos ao longo do
processo de software.
Uma questão essencial é: “por que existe a necessidade de se testar software?” Uma
resposta (provocativa) a esta pergunta tem a forma de outra questão: “você se sentiria
confortável em ser o passageiro de um vôo em uma aeronave que nunca decolou antes?”
O processo de projeto e construção de aeronaves envolve uma série de atividades de
teste da aeronave como um todo e de seus componentes principais (asas, turbinas, sistemas
eletrônicos, sistemas mecânicos). Essas atividades visam a confirmar as teorias
consideradas no projeto, obter dados empíricos e avaliar os aspectos não embasados por
teorias, avaliar a conformidade com padrões de segurança e de desempenho de vôo, além
de vários outros pontos. Os testes são aplicados em componentes, em subsistemas, e na
aeronave inteira, incluindo o teste em condições reais de vôo. Esta questão é obviamente
1 Hetzel, B. 1988, “The Complete Guide to Software Testing (2nd Ed.)”. QED Information Sciences, Inc.
2 Myers, G.J., 1979, “The Art of Software Testing”, Addison-Wesley, New York.
3 Cem Kaner, James Bach e Bret Pettichord, “Lessons Learned in Software Testing: A Context-Driven
Approach”, Willey Computer Publishing, 2002.
Teste de Software: Motivação e Conceitos Básicos Página 5
6. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
um exagero proposital; uma aeronave não testada nunca seria liberada para um vôo
comercial.
Analogamente, um software não deve ser liberado para uso sem que atividades
adequadas de teste tenham sido realizadas. Por meio do teste diversas deficiências
existentes no software, relacionadas a problemas de funcionalidade, desempenho,
segurança, instalação e utilização podem ser encontradas e removidas, antes que o software
“entre em vôo”, isto é, seja implantado para o uso dos clientes.
Enfim, testa-se software porque o desenvolvimento de sistemas envolve uma série de
atividades em que as possibilidades de ocorrência de erros humanos são inúmeras. Erros
podem ocorrer logo no início do processo de criação do software, quando objetivos
definidos podem estar incorretos ou incompletos. Além disso, erros podem ocorrer nas
demais fases do desenvolvimento, como projeto, codificação e integração do software.
Essencialmente erros ocorrem pela dificuldade dos seres humanos de executar tarefas e se
comunicar com perfeição. Esses são os mesmos motivos que justificam o teste rigoroso em
aeronaves.
O teste de software não é uma atividade tecnicamente fácil nem barata. A atividade
de teste representa um percentual significativo do custo total de desenvolvimento do
software. Estudos mostram que, dependendo do tipo do software e do processo de
desenvolvimento, o custo do teste tipicamente fica entre 50% e 80% do custo total 4.
No entanto, é fato reconhecido que a ausência de uma atividade de teste bem
realizada acarreta um custo total significativamente maior.
O retrabalho devido à manutenção corretiva de problemas de especificação, projeto e
programação é uma realidade amplamente conhecida. Estatísticas apresentadas mostram
ainda que cada R$ 1,00 investido em prevenção de defeitos diminui de R$ 3,00 a R$ 10,00
os custos de manutenção corretiva. E cada R$ 1,00 investido em remoção de defeitos
diminui de R$ 2,00 a R$ 5,00 os custos de manutenção corretiva.
Um estudo do NIST (Instituto Nacional de Padrões e Tecnologia, órgão do
Departamento de Comércio dos Estados Unidos) aponta impactos negativos de
4 Boehm, B. W. 1981, “Software Engineering Economics.” 1st. Prentice Hall PTR
Teste de Software: Motivação e Conceitos Básicos Página 6
7. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
inadequações nas atividades de teste5. Dentre os problemas acarretados pelo teste
inadequado podem-se destacar:
• Crescimento do número de falhas em uso devido à má qualidade do software,
acarretando perdas na reputação da organização e no potencial de negócios futuros;
• Aumento no custo de desenvolvimento de software, visto que o custo da correção de
problemas no software cresce ao longo dos estágios do desenvolvimento, tendo seu
maior valor quando é necessário corrigir problemas em um software já implantado
no cliente;
• Atraso para disponibilizar o produto ao mercado devido à ausência de processos e
técnicas de teste padronizadas e a conseqüente necessidade de criar às pressas uma
infra-estrutura de teste.
Esta lista de problemas é mais extensa, e apresenta problemas potencialmente
dramáticos, no caso de software com altos requisitos de confiabilidade, tais como: software
de controle de reatores nucleares; software aeroespacial e software de monitoramento de
leitos em UTIs. O teste inadequado de softwares que manipulam informações de alto valor,
como dados estratégicos de empresas e informações bancárias, também pode acarretar
grandes danos financeiros e de imagem às organizações.
No contexto do SPB as deficiências no teste de um produto de software podem
acarretar uma perda de reputação deste software entre os seus possíveis usuários, limitando
consequentemente os potenciais benefícios trazidos pelo software.
Raymond define o “modelo bazar” de desenvolvimento no qual o código fonte do
software é disponibilizado publicamente na internet e desenvolvido de forma colaborativa e
compartilhada por milhares de desenvolvedores espalhados pelo mundo; é o modelo
utilizado para o desenvolvimento do Kernel do sistema operacional Linux 6. Segundo
Raymond, ao se usar este modelo de desenvolvimento “quanto mais largamente o código
fonte estiver disponível para o teste, exame e experimentação, mais rapidamente os “bugs”
5 The National Institute of Standards and Technology (NIST) Strategic Planning and Economic Analysis
Group, “The Economic Impacts of Inadequate Infrastructure for Software Testing,” Maio, 2002
6 Eric S. Raymond, “The Cathedral & the Bazaar, Musings on Linux and Open Source by an Accidental
Revolutionary,” Fevereiro, 2001, O´Reilly & Associates, Inc.
Teste de Software: Motivação e Conceitos Básicos Página 7
8. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
serão descobertos”, chamada por ele de “Lei Linus” – referindo-se a Linus Torvalds,
idealizador do Linux – “given enough eyeballs, all bugs are shallow” 7. Na medida em que
o SPB caracteriza-se pelo compartilhamento de código fonte e de outros artefatos de
software, é razoável esperar que as práticas de teste possam ser conduzidas de forma
eficiente, aproveitando a característica colaborativa do ambiente e o espírito engajado e
investigativo de muitos membros de comunidades. A utilização de boas práticas de teste
neste contexto tem o potencial de aumentar a qualidade dos produtos de software e os
benefícios do SPB à sociedade.
3 O sucesso no teste: provocar falhas que mostrem defeitos
O teste de software pode também ser definido como “a execução de
um software com o objetivo de encontrar defeitos”. Neste caso, fica
explícita a idéia de que o teste deve exercitar o software de uma
maneira tal que este falhe, permitindo assim a posterior identificação
e remoção da causa desta falha.
Deve-se ter em mente que um defeito (fault ou defect em inglês) é uma anomalia no
software que pode causar uma falha (exemplos: um comando imperfeito, incompleto,
ausente ou extra no software). Uma falha (failure) é a ocorrência de uma discrepância entre
o resultado observado da execução do software e o resultado prescrito pelos requisitos. Um
erro (error) é um estado incorreto, intermediário ou final, de execução do software que
pode produzir um resultado incorreto, ou seja, pode levar a uma falha do software. Um
defeito no software é introduzido devido a algum engano (mistake) cometido em algum
momento no desenvolvimento do software e não descoberto em atividades de inspeção.
Por exemplo: o foguete Ariane V explodiu em 1996, cerca de 40 segundos após ter
decolado 8. O foguete saiu de sua rota programada e se desintegrou devido a forças
aerodinâmicas. Em uma análise posterior do incidente, verificou-se que o software de
controle do vôo indicou uma direção errada ao foguete (esta foi a falha) devido a uma
7 “se os olhos forem suficientes, todos os bugs serão vistos” em uma tradução livre. Ou: “... dados grupos
grandes o suficiente de testadores-beta e de desenvolvedores, quase todos os problemas serão identificados
rapidamente e o conserto será óbvio para alguém...”.
8 ARIANE 5 Flight 501 Failure Report by the Inquiry Board, Julho, 1996.
Teste de Software: Motivação e Conceitos Básicos Página 8
9. Centro de Tecnologia da Informação Renato Archer
conversão incorreta de uma variável
defeito).
Esta conversão produziu um
erro de overflow, isto é, um valor
errôneo de uma variável (este foi o
erro), que ocasionou a resposta
incorreta do software. O engano foi,
provavelmente, cometido por um
programador, que inseriu no
software um comando de atribuição
indevido.
Portanto, para um defei
(este foi o
de uma forma tal que o defeito seja “sensibilizado”
falha. Isto ocorre
quando o comando defeituoso é executado e cria um
as variáveis internas, por exemplo)
ainda que este
erro seja propagado, ao longo da execução, do ponto onde foi criado
defeituoso) para alguma saída do software, ocasionando uma resposta final incorreta
(valores incorretos para alguma saída produzida, por exemplo).
A Figura 1 ilustra a cadeia de eventos que se inicia com um engano e que pode
resultar em uma falha do software.
Figura 1: C
Em uma visão simplificada, a realização do teste
a. Selecionar valores para as
teste (chamados de Dad
partir do conjunto de todos os possíveis valores que podem ser usados para executar
o software, chamado de
Teste de Software: Motivação e Conceitos Básicos
– CTI/MCT
ftware: tipo real de 64 bits em um inteiro de 16 bits
efeito ser descoberto é necessário que o software seja executado
e provoque uma falha
estado de erro (valores incorretos para
ternas, exemplo). Para que a falha aconteça, é necessário
(logo após o comando
Cadeia de Eventos Para a Falha do Software
envolve:
Variáveis de Entrada a serem submetidos ao software em
ados de Entrada ou de Dados de Teste); esta seleção é feita a
Domínio de Entrada do software.
Página 9
10. Centro de Tecnologia da Informação Renato Archer
b. Executar o software com os dados de teste
, as
variáveis de entrada e acionar alguma função no software
c. Avaliar se a saída produzida corresponde à
do software, isto é, se o comportamento e os valores produzidos como resultado da
execução foram os corretos
Um par dados de entrada
de Teste. Uma coleção de vários
Teste.
Para a realização do teste, presume
hamado Caso
onjunto de Casos de
permita avaliar se certo resultado
acordo com a especificação (ou
Esta avaliação é feita por meio de um
papel de oráculo e realiza a comparação “esperado versus obtido”
software falhou ou não.
A Figura 2 apresenta uma visão simplificada do teste:
de entrada e a avaliação da saída produzida pelo programa
esperados.
Uma limitação inerente à atividade de teste é
identificando se o
software está correto. O teste pode revelar a
ausência desses defeitos. Portanto, por mais rigoroso que seja o teste, não é possível
assegurar que não permaneceram no software defeitos “escondidos”
Teste de Software: Motivação e Conceitos Básicos
– CTI/MCT
ftware: teste, ou seja, informar os valores para
software; e
saída esperada segundo a especificação
, corretos.
e resultados esperados associados é chamado de um
casos de teste é referida como um Conjunto
presume-se a existência de algum meio ou dispositivo que
- ou comportamento - produzido pelo software está de
seja, se é o resultado esperado de um software correto).
oráculo. Normalmente o executor do teste assume o
obtido”, identifica
a execução do programa com dados
em relação aos resultados
Figura 2: Visão Simplificada do Teste
sua impossibilidade de provar que um
. presença de defeitos no software, mas não a
escondidos”, não encontrados
Página 10
11. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
durante o teste. No entanto, o teste pode dar subsídios para que se avalie o quão confiável
(ou não) é o software.
4 Níveis e ciclos do teste: quando testar
O teste de software é normalmente realizado em uma série de fases, ou níveis:
• Teste de Unidade;
• Teste de Integração;
• Teste de Sistema; e
• Teste de Aceitação.
Após o desenvolvimento de cada unidade do software (procedimento, função, método
ou classe) é realizado o teste de unidade (ou teste unitário), que visa a identificar defeitos
introduzidos nos algoritmos e estruturas de dados dessas unidades. Em geral, o teste de
unidade é feito pelo próprio desenvolvedor da unidade. As unidades são então
incrementalmente integradas e testadas (teste de integração). Esta etapa é realizada pelos
desenvolvedores ou por elementos de uma equipe de teste e visa a identificar defeitos de
interface entre as unidades. Depois de integrado, o software é testado “como um todo”: o
teste de sistema é o nível de teste cujos requisitos são derivados da especificação de
requisitos funcionais e não funcionais, e é aplicado para verificar se o software e o
hardware executam corretamente ou não quando integrados ao ambiente de operação. O
teste de aceitação é então conduzido para estabelecer se o sistema satisfaz ou não os
critérios de aceitação definidos com o cliente.
Deve-se notar que em cada um desses níveis (unidade, integração, sistema e
aceitação) diversos ciclos de teste podem ocorrer. Em cada ciclo de teste um procedimento
de teste é realizado, por meio do qual um ou mais casos de teste são executados. Falhas
provocadas por casos de teste devem ser registradas para posterior depuração do software
(localização e remoção dos defeitos) pela equipe de desenvolvimento. No próximo ciclo,
casos de teste devem ser re-executados para avaliar se os defeitos que ocasionaram as
falhas foram realmente removidos e se as alterações no software não introduziram
inadvertidamente outros defeitos. Pode ocorrer também a necessidade de se retornar a um
nível de teste anterior. Por exemplo: durante o teste de integração podem ser identificados
Teste de Software: Motivação e Conceitos Básicos Página 11
12. Centro de Tecnologia da Informação Renato Archer
problemas que requeiram muitas alterações em
pode ser adequado, além de re
novamente o teste de unidade
as algum módulo do software. Neste caso,
O teste de um software já testado previamente
Teste de Regressão. Este teste busca verificar se as modificações efetuadas não
introduziram novos defeitos ou ativaram defeitos em partes inalteradas do código; visa
também avaliar se o software ainda satisfaz os seus r
tipicamente realizado na fase de manutenção, após a realização de mudanças no software
ou no seu ambiente. Conforme descrito no parágrafo anterior, este teste também pode
ocorrer ao longo do desenvolvimento do software.
A Figura 3 ilustra um processo
sequencialmente: teste de unidade
níveis são mostrados os ciclos
execução de casos de teste. A figura mostra
de teste.
Teste de Software: Motivação e Conceitos Básicos
– CTI/MCT
ftware: re-executar casos de teste de integração, também realizar
do módulo alterado.
e que sofreu mudanças é chamado de
. requisitos. O teste de regressão é
em que os níveis de teste são executados
quencialmente: unidade, de integração, de sistema e de aceitação.
que envolvem alterações do software (ou depuração
ão também o fluxo de retorno a níveis anteriores
Figura 3: Níveis e Ciclos de Teste
Página 12
equisitos. Em todos os
depuração) e a re-também
13. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
É importante destacar que não é obrigatório que todos os níveis de teste ocorram para
que se tenha um teste adequado. A necessidade ou não de realizar cada um desses níveis
deve ser decidida a partir da análise da situação específica, conforme descrito nas seções
sobre processos de teste (Seções 8 e 10).
5 Tipos de teste: o que testar
Diversos atributos de qualidade do software podem ser avaliados por meio de testes.
Características de qualidade de software definidas em padrões como a ISO/IEC 9126 9
podem servir como base para a definição de aspectos do software a serem avaliados por
meio da realização de testes. Portanto, existem diversos tipos de teste; cada tipo visa à
avaliação de um aspecto distinto do software e pode ser aplicado em um ou mais níveis de
teste (unidade, integração, etc.).
O teste de funcionalidade busca avaliar se o software apresenta um conjunto de funções
que satisfaça ou não às necessidades levantadas (associadas aos requisitos definidos).
O teste de desempenho visa a avaliar se o
software executa as funções previstas satisfazendo ou
não os requisitos de desempenho definidos (e.g.,
velocidade de processamento, tempo de resposta, uso
de memória).
O teste de interoperabilidade avalia a capacidade do
software em interagir com um ou mais componentes ou
sistemas.
O teste de segurança (security) visa a avaliar a habilidade
do software de impedir o acesso não autorizado – acidental ou
deliberado – ao software ou a dados.
O teste de sanidade (smoke test) envolve a execução de um subconjunto dos testes
projetados que cobrem algumas funcionalidades principais; pode ser realizado
9 ISO/IEC 9126-1:2001 Software engineering -- Product Quality -- Part 1: Quality model
Teste de Software: Motivação e Conceitos Básicos Página 13
14. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
periodicamente, ou como uma atividade inicial para avaliar se o software está pronto para
um esforço maior de teste.
O teste de estresse simula condições atípicas de utilização do software, provocando
aumentos e reduções sucessivas de transações que superem os volumes máximos previstos
para a capacidade de processamento dos componentes ou do sistema.
O teste de usabilidade visa a determinar quão
facilmente o produto de software é compreendido,
apreendido e usado, e quão agradável ele é ao usuário.
O teste de portabilidade busca avaliar o nível de
facilidade de transferência de um ambiente de hardware e
software para outro ambiente.
O teste de carga consiste em medir o comportamento
de um componente ou sistema submetido a cargas de
processamento crescentes para determinar qual nível de
carga o sistema pode tratar; por exemplo, número de
usuários ou número de transações.
O teste de instalação busca avaliar se o software é instalado e desinstalado com sucesso
ou não em determinado ambiente operacional.
O teste de recuperação determina a capacidade ou incapacidade de um produto de
software de restabelecer condições normais de operação e de recuperar dados afetados, em
caso de falha.
A determinação de quais tipos de teste devem ser utilizados e em qual (quais) nível
(níveis) eles devem ser aplicados, ocorre durante a fase de planejamento do teste. Esta
definição é feita considerando-se as informações disponíveis sobre a natureza do software
em teste e dos requisitos específicos dos módulos que compõem o software.
Na maior parte das situações é adequado focar atenção no teste de funcionalidade para
avaliar os se os requisitos funcionais do software são satisfeitos ou não. Este teste deve ser
complementado por outros tipos de teste (carga, desempenho, etc) para avaliar se os
requisitos não funcionais do software são satisfeitos ou não.
Teste de Software: Motivação e Conceitos Básicos Página 14
15. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
6 Técnicas e critérios de teste: como testar
Esta seção apresenta algumas Técnicas e Critérios de Teste úteis para a seleção de bons
casos de teste. É importante ressalvar que existem outras técnicas não relatadas aqui;
procurou-se destacar as técnicas mais usadas na prática ou mais consolidadas na literatura.
Como este documento apresenta apenas uma visão inicial sobre técnicas e critérios, é
recomendada a consulta a tutoriais específicos e de literatura especializada para maiores
informações.
Uma tarefa fundamental na atividade de teste é a seleção dos casos de teste a serem
utilizados. Esta seleção é necessária porque o Teste Exaustivo, feito com todas as possíveis
combinações de valores de entrada, é quase sempre inviável. Por exemplo, considere um
software que tenha como entrada 15 variáveis, sendo que cada uma delas pode assumir 7
valores diferentes. Considere ainda que a execução de cada caso de teste demore 1/100 de
segundo (0,01 segundo). Para realizar o teste exaustivo deste software seriam necessários
715/100 segundos, o que equivale a 1.505 anos e alguns meses de processamento.
Tendo em vista o objetivo principal do teste de revelar defeitos e a restrição de que os
cronogramas e orçamentos sejam cumpridos, é aconselhável a utilização de Técnicas de
Teste. Estas técnicas estabelecem procedimentos para selecionar - ou criar - os casos de
teste que resultem em um conjunto de teste eficaz e de tamanho moderado. As técnicas de
teste determinam a natureza da informação a ser utilizada para se fazer a seleção ou a
avaliação de conjuntos de teste. Na técnica de Teste Funcional os casos de teste são
selecionados por meio da análise da especificação do software, ou utilizando modelos
criados na fase de análise e projeto do software. Na técnica de Teste Estrutural os casos de
teste são selecionados por meio da análise da estrutura interna do software. Na técnica de
teste Baseada em Defeitos, casos de teste são selecionados a partir de classes de defeitos
que podem ser introduzidos ao longo do desenvolvimento do software. A Figura 4 ilustra
as técnicas funcional e estrutural de teste.
Teste de Software: Motivação e Conceitos Básicos Página 15
16. Centro de Tecnologia da Informação Renato Archer
As diversas técnicas de teste não são excludentes;
técnicas é recomendada, pois os defeitos revelados pela aplicação de
ser diferentes.
A utilização de uma técnica de teste ocorre por meio da aplicação
de Teste. Um critério de teste determina um conjunto de
que devem ser exercitados pela realização do teste.
comandos - ou todos os nós
requeridos os comandos do código do software
deve ser executado (ou exercitado), pelo menos uma vez, por algum dado de teste.
A Cobertura do Teste,
Critério
equeridos do software
todos os
. software
o
percentual de elementos requeridos exercitados por um conjunto de casos
executados. Por exemplo, o percentual de comandos executados durante o teste seria uma
medida de cobertura considerando
medida de cobertura quantifica, sob certa perspectiva, a qualidade do teste realizado.
razoável supor, neste exemplo, que um conjunto de teste que executa 90% dos comandos de
um software é melhor do que outro conjunto de teste
de teste
É
10 O teste caixa preta inclui outras técnicas além da técnica funcional, única que está sendo considerada neste
documento.
Teste de Software: Motivação e Conceitos Básicos
– CTI/MCT
ftware: Figura 4: Técnicas de Teste 10
as na verdade, a utilização de várias
ada, cada uma delas podem
de algum
Elementos Requeridos
Por exemplo, o critério
- da técnica estrutural de teste define como elementos
o software. Neste caso, cada comando do so
este, com respeito a um critério de teste específico, mede
. considerando-se o critério de teste do exemplo anterior. Deste modo, a
que executa apenas 50% dos
Página 16
17. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
comandos. Se um conjunto de casos de teste exercita todos os elementos requeridos pelo
critério, diz-se que tal conjunto satisfaz o critério.
Em geral, os critérios de teste podem ser utilizados para: criar um conjunto de casos
de teste; avaliar um conjunto de casos de teste já criado; ou ainda, servir como uma
condição para a finalização do teste.
A seguir é feita uma breve descrição de alguns critérios de teste da técnica funcional e
da técnica estrutural, as mais usadas na prática.
6.1 Critérios da técnica funcional
Os critérios da técnica de teste funcional caracterizam-se por utilizar informações
originadas da especificação do software como base para a seleção de casos de teste.
Artefatos criados na fase de análise de requisitos e de projeto do software, tais como o
documento de requisitos do software ou modelos como diagramas UML, são utilizados
para criar os casos de teste.
A idéia essencial da técnica funcional é selecionar dados de teste representativos o
suficiente para avaliar se as funcionalidades definidas na especificação do software foram
implementadas corretamente ou não. Para tanto, operações associadas às funcionalidades
são identificadas e dados de teste que as exercitem são definidos e executados.
O critério Particionamento de Equivalência divide o domínio de entrada do software
em classes de equivalência e requer que pelo menos um dado de teste de cada classe seja
selecionado e executado. Essas classes são definidas pressupondo que todo dado de entrada
pertencente a uma classe é tratado do mesmo modo, de acordo com a especificação do
software. Portanto, cada dado de teste selecionado representa os demais dados de testes da
sua classe de equivalência.
Por exemplo, se a especificação define que um software recebe como entrada uma
variável idade, tipo inteiro, que pode variar de 0 a 120 anos (incluindo os extremos),
poderiam ser identificadas as seguintes classes de equivalência:
• Classe 1: idade menor que zero – referida como classe de valores inválidos;
• Classe 2: idade entre 0 e 120 – classe de valores válidos; e,
• Classe 3: idade maior que 120 – outra classe de valores inválidos.
Teste de Software: Motivação e Conceitos Básicos Página 17
18. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
Ao se executar o software com dados de teste que pertençam às Classes 1 e 3 espera-se que
os valores fornecidos sejam identificados como não aceitáveis e sejam emitidas mensagens
apropriadas. Ao se executar o software com um dado de teste que pertença à Classe 2 o
valor fornecido deve ser aceito e uma saída apropriada deve ser produzida.
A Figura 5 ilustra as classes de equivalência do exemplo e os dados de teste selecionados
para exercitar cada classe.
Classe 2
(valores válidos)
(valores inválidos)
Classe 1
(valores inválidos)
-39 0 45 120 135
Figura 5: Classes de Equivalência e Dados de Teste
Classe 3
Dependendo da especificação, se existirem diferentes tipos de tratamento dentro de
alguma dessas classes, ela deve ser subdividida. Por exemplo, a Classe 2 pode ser
subdividida em sub-classes: 2.1 – idade entre 0 e 17; 2.2 – idade entre 18 e 20; e 2.3 – idade
entre 21 e 120. Esta divisão faz sentido e deve ser feita se a especificação do software
definir tratamentos distintos para estas diferentes faixas de valores. Neste caso a Classe 2
não é homogênea e, portanto, a execução de apenas um caso de tese da classe seria
insuficiente.
Deve-se notar que o modo como as classes de equivalência são definidas influencia
fortemente a eficácia do critério. Esta definição deve ser feita de forma cuidadosa,
analisando-se a natureza de cada variável de entrada do programa e a especificação do
software em teste.
O critério Análise de Valores Limite complementa o critério Particionamento de
Equivalência. Freqüentemente as situações de transição de comportamento do software de
uma classe para outra classe, as situações limite, são implementadas de forma incorreta.
Estas situações costumam ser inerentemente complexas e acabam induzindo a erros de
análise, projeto ou codificação.
Para descobrir defeitos associados a estas situações é recomendada a seleção de dados
de teste situados nos limites das classes. No exemplo anterior (variável idade, tipo inteiro,
Teste de Software: Motivação e Conceitos Básicos Página 18
19. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
que pode variar de 0 a 120 anos, incluindo os extremos) os valores limite seriam: 1, 0 e -1,
referentes ao limite entre as Classes 1 e 2; e 119, 120, 121, referentes ao limite entre as
Classes 2 e 3, conforme ilustrado na Figura 6. Notar que são selecionados valores
exatamente no limite, valores imediatamente inferiores e imediatamente superiores ao
limite. A definição dos valores limite também deve ser feita cuidadosamente, analisando-se
a natureza de cada variável de entrada do programa e a especificação do software em teste.
Classe 2
(valores válidos)
(valores inválidos)
-1 0 1 119 120 121
Figura 6: Valores Limite e Dados de Teste
Classe 3
(valores inválidos)
Classe 1
Teste baseado em modelos
Alguns critérios caracterizam-se por utilizar modelos do software (representações
intermediárias do software) como base para a seleção de dados de teste. Esses critérios são
freqüentemente chamados de Teste Baseado em Modelos (Model Based Testing). Modelos
como Máquinas de Estados Finitas (FSM), ou modelos definidos em linguagens como
UML (Unified Modelling Language) ou SDL (Specification and Description Language)
podem ser utilizados para este propósito.
O Teste Baseado em Casos de Uso utiliza os modelos de Casos de Uso (representação
definida na UML), criados na fase de análise de requisitos e de projeto do software, para a
seleção de casos de teste. Casos de Uso são muito usados para especificar o comportamento
esperado do sistema do ponto de vista dos atores que interagem com o sistema. Como são
elaborados normalmente em etapas iniciais do processo de desenvolvimento, esses modelos
são úteis para o projeto antecipado de casos de teste, principalmente os que serão aplicados
nos testes de sistema e de aceitação do software.
A aplicação do critério de teste é feita nos seguintes passos:
Teste de Software: Motivação e Conceitos Básicos Página 19
20. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
a. Descrever os fluxos de eventos para o caso de uso. Devem ser descritos tanto o
fluxo de eventos básico como os fluxos alternativos e de exceção.
b. Definir o conjunto de cenários que serão usados nos testes. Cada cenário pode ser
formado a partir dos fluxos de eventos identificados bem como das combinações
desses fluxos.
c. Definir casos de teste para cada um dos cenários, ou seja, para cada cenário definir
valores de entrada, ações no software que provoquem a execução do cenário e as
saídas esperadas.
d. Executar o software com os dados de teste, avaliar se os resultados produzidos
correspondem aos esperados, registrar os resultados e os incidentes observados.
Notar que os passos a, b e c podem ser realizados logo que a especificação dos casos
de uso esteja pronta e revisada; não é necessário esperar a conclusão da implementação dos
casos de uso para realizá-los. O passo d pode ser realizado em momentos distintos,
dependendo do nível do teste realizado: quando os módulos que implementam as funções
especificadas nos casos de uso estiverem disponíveis (no caso do teste de “partes” do
sistema); quando o sistema como um todo estiver integrado e disponível (no caso do teste
de sistema); ou ainda, quando o sistema for utilizado no processo de aceitação pelo cliente
(no caso do teste de aceitação).
Naturalmente, outros modelos (da UML ou de outras linguagens) podem ser
utilizados de forma semelhante para a seleção de casos de teste. Por exemplo, Diagramas
de Estados (com os Statecharts) podem servir como base para a seleção de casos de teste
que exercitem transições de estado que podem ocorrer em um objeto. Critérios de teste
baseados em modelos de estados são úteis para aplicações nas quais muitas transições
complexas de estado dos objetos são possíveis, tais como sistemas de controle de processos
e sistemas de telefonia.
Diagramas de Colaboração, que descrevem a interação entre objetos para especificar
um comportamento, também podem ser utilizados para seleção de casos de teste. Critérios
de teste baseados em Diagramas de Colaboração permitem avaliar interações específicas
entre objetos, formadas por seqüências de comunicações. Os casos de teste visam a
Teste de Software: Motivação e Conceitos Básicos Página 20
21. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
exercitar e avaliar se as trocas de mensagens, que caracterizam a colaboração de um
conjunto de objetos, permitem atingir os propósitos definidos na especificação do sistema.
6.2 Critérios da técnica estrutural
Na técnica de Teste Estrutural os dados de teste são selecionados por meio da análise da
estrutura interna do software. Portanto, o código fonte do software deve estar disponível,
pois ele é utilizado para a seleção dos dados de teste. A motivação para o uso desses
critérios muitas vezes é feita com questionamentos do tipo: “você confiaria em um software
se fosse informado que algumas instruções deste software nunca foram executadas antes?”
Esta pergunta enfatiza que defeitos em trechos não exercitados do código fonte do software
certamente não serão descobertos.
Na Técnica Estrutural uma unidade de software (função, procedimento ou método) é
considerada como o conjunto de seus componentes estruturais. Estes componentes
estruturais podem ser comandos de desvio (como os comandos: if-then; switch; while e
repeat) ou outros comandos (instruções como: x = y + 2; read(a,b); x = func(a,b) ). O
software pode ser representado por um Grafo de Fluxo de Controle (GFC) composto de nós
– correspondem a blocos de comandos que são sempre executados conjuntamente -, e
ramos, que correspondem a possíveis desvios no fluxo de execução. O GFC possui um
único nó de entrada, um único nó de saída, e define um conjunto de caminhos que podem
ser executados do nó de entrada ao nó de saída, passando por certos comandos e desvios ao
longo da execução. Quando se executa o software com um dado de teste, algum caminho
específico será executado no programa (isto só não ocorre caso o software entre em um
laço infinito).
A Figura 7 mostra um código fonte em C (identifier.c) e o respectivo GFC 11. Notar
que o código fonte apresenta no lado esquerdo como comentários o número do nó do GFC
ao qual o comando pertence. É possível identificar conjuntos de comandos executados
sempre conjuntamente, por exemplo, os comandos precedidos por /* 01 */ que pertencem
ao nó 1 do GFC. Pode-se também observar o efeito de comandos de desvio no fluxo de
11 Código fonte e GFC presentes em: Barbosa E., Maldonado, J., Vincenzi, A., Delamaro, M., Souza, S., Jino,
M. “Introdução ao Teste de Software”, XIV Simpósio Brasileiro de Engenharia de Software”, 2000.
Teste de Software: Motivação e Conceitos Básicos Página 21
22. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
controle, por exemplo, o comando while presente no nó 4 do grafo, ou o comando if-then-else
iniciado no nó 8.
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf (“Digite um possível identificadorn”);
/* 01 */ printf (“seguido por <ENTER>: “);
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != ‘n’)
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf (“Validon”);
/* 10 */ else
/* 10 */ printf (“Invalidon”);
/* 11 */ }
Figura 7: Código Fonte e Respectivo Grafo de Fluxo de Controle
Critérios de teste estrutural estabelecem componentes internos do software como
elementos requeridos. O critério de teste Todos os Comandos (ou Todos os Nós) requer que
cada comando do software seja exercitado pelo menos uma vez durante o teste. A
determinação de dados de teste que exercitem um comando específico requer a análise do
código fonte do software e a escolha de valores para as variáveis de entrada que provoquem
a execução do comando.
Por exemplo, a Figura 8 mostra um trecho de programa no qual há um comando de
decisão if-then-else e o respectivo GFC. Para que os comandos representados por B sejam
executados é necessária a seleção de valores de entrada tais que a condição lógica do
comando if seja satisfeita; por exemplo, valores de entrada que façam com que x tenha
valor 100 e y tenha valor 30 imediatamente antes do comando if (notar que x e y podem ser
variáveis de entrada, mas também podem ser computadas internamente, a partir de outras
variáveis). Outros dados de teste serão necessários para exercitar os comandos
Teste de Software: Motivação e Conceitos Básicos Página 22
23. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
representados por C; por exemplo, dados que resultem nos valores x = 20 e y = 15 antes do
comando if.
A …;
A if (x > y * 2)
B { … }
C else
C { … }
D …;
A
B C
D
Figura 8: Comando if-then-else e Respectivo Grafo de Fluxo de Controle
A …;
A If (x > y * 2)
B { … }
C …;
A
B
C
Figura 9: Comando if-then e Respectivo Grafo de Fluxo de Controle
O critério Todos os Ramos requer que cada possível transferência de controle seja
exercitada pelo menos uma vez. A Figura 9 mostra um trecho de programa com um
comando condicional if-then. Os dados de teste que satisfazem a condição do if, exercitam
os comandos representados em B e também os em C. Este critério, no entanto (ao contrário
do anterior), requer a execução de dados de teste adicionais, que provoquem a transferência
de controle (ou ramo) do comando if diretamente para os comandos em C (sem passar por
B).
O critério Todos os Caminhos requer que cada diferente caminho no GFC seja
executado pelo menos uma vez. Este critério é geralmente considerado excessivamente
exigente visto que, em programas reais, a sua aplicação tende a gerar conjuntos muito
grandes de elementos requeridos. Considere a Figura 10 que mostra um trecho de código
com dois comandos if-then-else em sequência e o respectivo GFC; note que o segundo
comando if pertence ao nó D no grafo. A execução de apenas dois casos de teste é
suficiente para exercitar todos os nós e também todos os arcos do GFC; por exemplo,
utilizando um caso de teste que exercite a seqüência ABDEG e outro que exercite a
Teste de Software: Motivação e Conceitos Básicos Página 23
24. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
seqüência ACDFG. No entanto, para satisfazer o critério todos os caminhos são necessários
quatro casos de teste, cada um exercitando um caminho do GFC: ABDEG, ABDFG,
ACDEG e ACDFG.
A …;
A if (x > y * 2)
B { … }
C else
C { … }
D if (z > w)
E { … }
F else
F { … }
G …;
A
B C
D
E F
G
Figura 10: Comandos if-then em Sequência e Respectivo Grafo de Fluxo de Controle
Existem outros critérios estruturais que não serão abordados neste documento. Mais
informações sobre os critérios apresentados e sobre como utilizá-los encontram-se em
tutoriais específicos e em literatura especializada.
7 Ferramentas de apoio ao teste
As empresas de software são cada vez mais pressionadas a produzir produtos de qualidade
em curto espaço de tempo. Esta situação coloca uma forte pressão em suas equipes de teste,
que são levadas a tentar aumentar a cobertura dos testes realizados sem comprometer os
prazos de entrega do projeto.
O emprego de ferramentas de apoio pode reduzir o esforço e aprimorar a qualidade
do teste. Estas ferramentas não são suficientes para automatizar completamente o teste, mas
podem auxiliar o testador na realização de diversas atividades.
São exemplos de atividades de teste para as quais se encontram ferramentas de apoio:
• Definição dos elementos requeridos para o teste: para as diversas técnicas são
determinados elementos requeridos que podem servir de base para a criação de
casos de teste;
Teste de Software: Motivação e Conceitos Básicos Página 24
25. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
• Avaliação de cobertura atingida no teste e a identificação de elementos requeridos
não exercitados: para as diversas técnicas são avaliados o nível de cobertura
atingido (percentual de elementos requeridos exercitados) e os elementos requeridos
ainda não exercitados. As ferramentas permitem quantificar a qualidade do teste;
• Captura de eventos e de respostas do
software: gravação e reprodução de
informações do teste, tais como: dados de
entrada, eventos de entrada, interfaces e
informações mostradas;
• Execução do teste: execução do software
com um conjunto de casos de teste e a
avaliação do resultado produzido.
Ferramentas podem ser aplicadas tanto para
o teste de unidade como para o teste de
sistema;
• Armazenamento e gerenciamento de informações de teste: manutenção de
informações de teste – planos, projetos, scritps e casos de teste. Ferramentas
permitem também o rastreamento de informações associando casos de teste aos
requisitos do software a serem validados;
• Armazenamento e gerenciamento de incidentes: registro de informações sobre
incidentes ocorridos e acompanhamento da resolução;
• Definição e gerenciamento do processo de teste: definição de aspectos do processo
de teste como recursos, medidas, atividades e tarefas, e também o gerenciamento da
execução do processo de teste.
A adoção de um processo de teste para a organização (veja próximas seções) pode
incluir a avaliação de quais tipos de ferramentas são adequadas aos objetivos estabelecidos
para o teste.
Teste de Software: Motivação e Conceitos Básicos Página 25
26. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
8 Processo e documentação do teste: como organizar o trabalho
A adoção de um processo bem estabelecido para realizar as diversas atividades da
engenharia de software contribui positivamente para que se alcance o objetivo pretendido.
Um processo é um conjunto de passos parcialmente ordenados, constituídos por atividades,
métodos, práticas e transformações, usado para atingir uma meta. A atividade de teste de
software também deve ser conduzida por meio de um processo bem estabelecido. Um
processo de teste de software é um conjunto de passos parcialmente ordenados constituídos
por atividades, métodos e práticas, usadas para testar um produto de software.
Um exemplo de modelo de processo de teste é o ArtProTest (“Artifact Oriented
Process Model for Testing”) 12,13. Este modelo é baseado em artefatos de teste determinados
na Norma IEEE Std 829-1998 14 e é formado por subprocessos, definidos e ordenados de
forma a permitir que o teste seja eficiente e eficaz.
No subprocesso Planejar é criado o Plano de Teste de Software, que contém, dentre
outras informações: extensão e abordagem do teste; recursos necessários, equipe e
treinamento, cronograma de atividades; ambiente operacional; itens a serem testados, o
nível e abordagem de teste para cada item, atividades, tarefas e respectivos responsáveis,
além de riscos e planos de contingência no teste.
O subprocesso Projetar envolve: refinar a abordagem de teste, definir e especificar os
casos de teste; estabelecer o ambiente e procedimentos de teste.
O subprocesso Executar envolve: executar, registrar, suspender, retomar, parar,
encerrar e tratar as contingências no teste.
O subprocesso Registrar visa relatar a execução dos testes e os incidentes observados
(defeito no software ou anomalia de funcionamento do ambiente). Também são
sumarizados os resultados do teste e as avaliações baseadas nesses resultados.
12 Crespo, A. N.; Silva, O. J. ; Borges, C. A.; Salviano, C. F.; Argollo Junior, M. T. E.; Jino, M. “Uma
Metodologia para Teste de Software no Contexto da Melhoria de Processo”. III Simpósio Brasileiro de
Qualidade de Software, 2004. v. 3. p. 271-285.
13 Bueno, P.M.S., Crespo A.N., Jino, M., “Analysis of an Artifact Oriented Test Process Model and of Testing
Aspects of CMMI”. In: 7th International Conference on Product Focused Software Process Improvement,
Amsterdam., Lecturer Notes in Computer Science. Berlin: Springer-Verlag, 2006. v. 4034. p. 263-277.
14 IEEE Std 829 (1998), “IEEE Standard for Software Test Documentation”, IEEE, New York.
Teste de Software: Motivação e Conceitos Básicos Página 26
27. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
É importante destacar que existem diversas atividades associadas a cada subprocesso
descrito anteriormente, que criam ou utilizam os artefatos que documentam o teste (plano
de teste, projetos de teste, etc). A definição de como esta informação de teste deve ser
estruturada em artefatos (isto é, a definição de “templates” de teste) é uma etapa importante
da implantação de um processo de teste em uma organização.
O processo de teste deve ser alinhado com o processo de desenvolvimento como um
todo. Uma alternativa é organizar os subprocessos de teste considerando as principais fases
do processo de desenvolvimento e associando a cada fase o nível de teste de software
correspondente – unidades, integração, sistema e aceitação (Modelo V). As atividades de
teste podem ser iniciadas junto com as atividades de desenvolvimento, logo que as
informações necessárias estejam disponíveis. Neste caso, o planejamento do teste deve ser
realizado junto com o planejamento do desenvolvimento, enquanto que o projeto do teste
de aceitação pode ser iniciado logo que os requisitos do software tenham sido definidos. A
execução de atividades de teste o mais cedo possível diminui as chances de que esta
atividade seja feita de forma apressada no final do projeto, devido à necessidade de entregar
o produto ao cliente.
Alguns modelos de processo de desenvolvimento de software, como o Espiral ou o
RUP, definem iterações (ou ciclos) para o desenvolvimento do software. Ao invés da
realização seqüencial das atividades de desenvolvimento do software, como no tradicional
modelo “cascata” 15, são definidas iterações para o desenvolvimento e incrementos (ou
releases) são associados a cada iteração. Cada incremento envolve a realização das
atividades para: definição de requisitos, projeto, implementação, integração e testes. Nestes
casos, as atividades de teste devem ser associadas às atividades de desenvolvimento em
cada iteração, de modo que haja o adequado replanejamento, projeto, execução e registro
dos testes. Recomenda-se realizar um planejamento global do teste junto com o
planejamento do desenvolvimento. O teste final do sistema e o teste de aceitação são
executados após o término da última iteração do processo de desenvolvimento.
15 Tipicamente, as atividades realizadas no modelo cascata são: análise de requisitos; projeto do software;
implementação e teste de unidades; integração e teste de integração; teste de sistema; implantação e teste de
aceitação.
Teste de Software: Motivação e Conceitos Básicos Página 27
28. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
Alguns modelos mais recentes enfatizam o projeto de testes e sua execução como um
elemento central do desenvolvimento do software. A abordagem Desenvolvimento Baseado
em Testes (ou TDD, sigla em inglês) é frequentemente adotada em métodos ágeis, como a
Programação Extrema (XP). No TDD os casos de teste são criados pelos desenvolvedores
antes mesmo que o código fonte seja criado.
9 Análise de riscos: priorizar aspectos para o teste
Em muitos casos o software em teste possui algumas partes (ou funcionalidades) nas quais
a ocorrência de uma falha pode acarretar graves conseqüências a seus usuários, podendo
impactar negativamente seus negócios e eventualmente até mesmo colocar a integridade de
vidas humanas em risco. Por outro lado, o mesmo software pode possuir partes nas quais a
ocorrência de falhas, embora não desejável, não seja crítica em termos dos negócios de seus
usuários, impactando-os somente de forma marginal.
Neste contexto, uma preocupação fundamental do
teste é avaliar as funcionalidades do software que sejam
mais importantes para o negócio de seus futuros
usuários e propor e desenvolver atividades de teste que
abordem com o devido cuidado essas áreas. Pensar nos
testes com a perspectiva dos riscos que as falhas
possam provocar é um aspecto importante para o
sucesso do teste.
A análise de riscos deve ocorrer no planejamento do teste e deve dar subsídios para a
definição de tipos e técnicas de teste a serem utilizadas em cada parte do software, assim
como o quão rigoroso deve ser o teste daquela parte do software. Em última análise, a
consideração dos riscos envolvidos permite alocar os recursos de teste de uma maneira
prudente, dosando o rigor e o esforço do teste de cada parte do software ao nível requerido
de confiabilidade.
Teste de Software: Motivação e Conceitos Básicos Página 28
29. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
10 Política e processo de teste: o papel do teste na estratégia da
organização
A definição de uma Política de Teste é fundamental para qualquer organização que
pretende definir ou aprimorar as suas atividades de teste. Trata-se, portanto, de um primeiro
passo importante que servirá de base para definição do processo de teste da organização.
A política de teste define, de maneira geral, os objetivos e a visão estratégica em
relação ao teste. Portanto, deve estar alinhada com a política de qualidade e com os
objetivos de negócios da organização. Ao se estabelecer uma visão comum sobre o teste
para todos os envolvidos com esta atividade, obtém-se um alinhamento das iniciativas para
a utilização ou melhoria do processo de teste, tanto no desenvolvimento como na
manutenção de software. Recomenda-se, portanto, que a política de teste seja documentada,
divulgada e tenha um responsável definido.
A definição de indicadores associados aos objetivos do teste permite a avaliação e a
melhoria contínua do processo de teste na organização. Tipicamente uma política de teste
aborda: objetivos e importância do teste; níveis de qualidade a serem atingidos; nível de
independência da equipe de teste; principais responsabilidades; definição em alto nível do
processo de teste; e separação entre teste e depuração.
A partir do momento em que se estabelece “o quê” as atividades de teste devem
atingir na organização – a Política de Teste – pode-se trabalhar para definir “como” os
objetivos serão atingidos. A definição do “como” dá-se pelo estabelecimento de um
processo de teste. Modelos de processos genéricos de teste e modelos de maturidade de
teste podem servir como inspiração nesta tarefa.
Um modelo de processo genérico de teste, como é o descrito na Seção 8, pode ser
adaptado às necessidades específicas de cada organização. Tal tipo de modelo define um
conteúdo amplo em teste (formado por atividades, métodos, artefatos, etc.) que serve como
base para o estabelecimento de processos customizados, fundamentados nas necessidades
de teste específicas de cada organização. O termo Estratégia de Teste também é utilizado
na literatura com significado semelhante, ou seja, atividades, métodos, artefatos de teste
adotados por uma organização.
Teste de Software: Motivação e Conceitos Básicos Página 29
30. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
Modelos de maturidade de testes, tais como o Test Process Improvement (TPI) 16 ou
o Test Maturity Model Integration (TMMi) 17, também podem ser utilizados para definir
um processo de teste bem como para guiar a sua avaliação e melhoria. O TMMi é
complementar ao modelo CMMI e aborda aspectos importantes para os gerentes e analistas
de testes e demais profissionais de qualidade de software. Assim como o modelo em
estágios do CMMI, o TMMi usa o conceito de níveis de maturidade para a avaliação e
melhoria do processo de teste.
A adoção de um processo de teste, feita por meio da customização de um modelo de
processo genérico de teste, é referida como uma implantação ou configuração de um
processo de teste na organização. Os modelos de processos genéricos de teste ou os
modelos de maturidade do teste podem ser utilizados também para aprimorar, de forma
controlada e gradual, um processo de teste já existente na organização.
A implantação de um processo de teste deve ser feita de forma cuidadosa, por meio
da análise das reais necessidades de teste e das possibilidades da organização. Fatores como
tipo de software desenvolvido, requisitos de confiabilidade e segurança, bem como a
disponibilidade de recursos humanos e financeiros da organização, devem ser levados em
conta nesta implantação. Em geral, requisitos rigorosos de confiabilidade e segurança do
software determinam a definição de processos de teste mais completos, contemplando
vários níveis, tipos e técnicas de teste. Por outro lado, em muitos casos um processo “leve”
– com poucos níveis e utilizando técnicas simples e documentando apenas o essencial –
pode ser o suficiente.
Processos de teste mais completos demandam um maior esforço por parte da
organização, mas tendem a propiciar melhores produtos de software, além de evidências
mais claras da qualidade do teste.
16 Koomen, T. and Pol M., (1999), “Test Process Improvement: A practical step-by step guide to structured
testing”. ACM Press, London, England.
17 TMMi Foundation, “Test Maturity Model Integration (TMMi®) Version 2.0”, 2009.
Teste de Software: Motivação e Conceitos Básicos Página 30
31. Centro de Tecnologia da Informação Renato Archer – CTI/MCT
11 Conclusão: transformando conceitos de teste em melhores produtos
de software
Este documento apresentou um corpo de conhecimentos fundamentais em Teste de
Software. O conteúdo foi abordado mais em extensão do que em profundidade, isto é,
espera-se que o leitor tenha adquirido um conhecimento amplo dos vários aspectos das
atividades de teste; entretanto, é necessário o aprofundamento nos assuntos específicos
conforme o interesse e os objetivos específicos.
Os guias e os tutoriais de teste (em elaboração) irão prover o aprofundamento em
alguns aspectos tratados de forma rápida neste documento. A literatura específica de teste
também pode ser útil para este intento.
Espera-se que com a aplicação do conteúdo apresentado, os diversos atores
envolvidos com as questões de qualidade e teste das mais diversas organizações possam
definir ou aprimorar as suas práticas de teste. Em especial, espera-se que todos os
participantes que compõem o ecossistema do SPB possam se beneficiar da aplicação deste
conteúdo e também possam contribuir para o aprimoramento do conhecimento público de
teste de software do SPB.
Teste de Software: Motivação e Conceitos Básicos Página 31