Resumo
Este tutorial é destinado principalmente a alunos de graduação da área de computação ou qualquer pessoa que queira aprender sobre teste de software aplicado a linha de produto. São apresentados direcionamentos para o aprendizado de conceitos básicos de teste de software, de linha de produto de software – incluindo modelos de características, e de teste de software aplicado especificamente a linha de produto com base em modelos de características. Para isso, são realizadas indicações de leituras que auxiliaram o leitor a entender mais sobre o assunto tratado.
Contexto
Este tutorial foi desenvolvido dentro do contexto do seguinte projeto:
· Título: Estudo de Teste de Software para Linha de Produto e Elaboração de Tutorial para Compartilhamento de Conhecimento
· Aluno: Danilo Modesto de Sousa
· Orientador: Prof. Dr. Marcelo Fantinato
· Programa: Ensinar com Pesquisa
· Curso: Sistemas de Informação
· Unidade: Escola de Artes, Ciências e Humanidades (EACH)
· Universidade: Universidade de São Paulo (USP)
· Duração: março/2009 a fevereiro/2010
Teste de software é uma das partes mais importantes na engenharia de software, pois por meio de sua realização é possível avaliar a qualidade e a confiabilidade do software. Por ser essa uma etapa da engenharia de software, a melhor maneira de se iniciar o estudo de teste de software é por um livro de engenharia de software. Dois são indicados por este tutorial:
Título |
Engenharia de Software |
Autor |
I. Sommerville |
Edição |
6ª Edição |
Editora |
Addison Wesley |
Ano de Publicação |
2003 |
Título |
Engenharia de Software |
Autor |
R. Pressman |
Edição |
6ª Edição |
Editora |
Mc-Graw Hill |
Ano de Publicação |
2005 |
O livro do Sommerville tem 567 páginas, sendo um capítulo dedicado a área de teste de software:
· Capítulo 20 “Teste de Software”.
O livro do Pressman possui 752 páginas, sendo dois capítulos dedicados especialmente para a área de teste de software:
· Capítulo 13: “Estratégias de teste de software”
· Capítulo 14: “Técnicas de teste de software”
O livro do Sommerville apresenta uma linguagem mais clara e de mais fácil compreensão em relação ao livro do Pressman. Portanto, como se trata de dois capítulos relativamente curtos e bem didáticos, é recomendado que o estudante interessado leia o material dos dois livros para fixar melhor os conceitos básicos iniciando pelo do Sommerville e depois indo para o do Pressman.
Após essa pequena introdução, já é possível partir para um livro específico da área de teste de software. Para essa etapa, recomenda-se a leitura do seguinte livro clássico:
Título |
The Art of Software Testing |
Autor |
Glenford J. Myers |
Edição |
2ª Edição |
Editora |
John Wiley & Sons |
Ano de Publicação |
2004 |
Esse livro possui 256 páginas – menor que os dois anteriores, porém totalmente destinado ao assunto de teste de software. O livro é dividido em nove capítulos, que estão listados abaixo:
I. A Self-Assessment Test
Descrição: Capítulo introdutório.
II. The Psychology and Economics of Program Testing
Descrição: Cita os aspectos psicológicos e econômicos do teste de software e apresenta as duas principais formas de teste de software – caixa-preta (funcional) e caixa-branca (estrutural).
III. Program Inspections, Walkthroughs, and Reviews
Descrição: Mostra onde ocorre a maioria dos erros.
IV. Test-Case Design
Descrição: Mostra as metodologias para criação de casos de teste caixa-preta e caixa-branca.
V. Module (Unit) Testing
Descrição: Trata do teste de unidade, um dos três níveis de teste de software.
VI. Higher-Order Testing
Descrição: Após o teste de unidade, é apresentado o teste de integração e o teste de sistema, os outros dois níveis de teste de software.
VII. Debugging
Descrição: Técnicas de depuração e como resolver os erros encontrados.
VIII. Extreme Testing
Descrição: Explica a metodologia Extreme Programming (XP) e a utilização dela através de Extreme Testing (XT).
IX. Testing Internet Applications
Descrição: Apresenta a Arquitetura E-commerce e as estratégias para teste de software dessa arquitetura.
Se o leitor ainda quiser ampliar seus conhecimentos sobre teste de software, pode conhecer outro excelente livro para esse objetivo e um dos melhores em português por abordar diversos tipos de teste:
Titulo |
Introdução ao Teste de Software |
Autor |
M. E. Delamaro, J. C. Maldonado, M. Jino |
Editora |
Elsevier |
Ano |
2007 |
O livro tem 394 páginas, divididas em 13 capítulos. O livro é organizado pelos três autores mencionados na tabela acima, mas possui um conjunto de 17 colaboradores como autores de capítulos. Cada capítulo foi escrito por um ou mais desses colaboradores, todos pesquisadores brasileiros da área de teste de software. Os capítulos do livro cobrem os seguintes assuntos:
· Capítulo 1: introdução aos conceitos básicos;
· Capítulo 2 ao 9: tratam cada um de um tipo de teste específico, sendo alguns mais abrangentes que outros;
· Capítulo 10: revisão sobre estudos teóricos e experimentais na área de engenharia de software e principalmente de teste de software;
· Capítulo 11: trata de como gerar dados de teste para compor casos de teste;
· Capítulo 12 e 13: menos relacionados diretamente a teste de software, sendo o primeiro sobre depuração de software e o segundo sobre confiabilidade de software.
Linha de Produto (LP) de Software é uma abordagem de engenharia de software usado para desenvolver produtos de software com base em reuso de componentes de forma sistemática. Essa abordagem é baseada no conceito de família de produtos com características semelhantes, a partir da qual diferentes instâncias de produtos de software podem ser geradas por meio da seleção de um conjunto de componentes reusáveis.
Uma das principais pesquisadoras brasileiras desse assunto, a professora doutora Itana Gimenes, produziu, em conjunto com o professor doutor Guilherme Horta Travassos, o seguinte curso:
Titulo |
O Enfoque de Linha de Produto para Desenvolvimento de Software |
Autor |
I. M. S. Gimenes e G. H. Travassos |
Editora |
SBC |
Ano |
2002 |
Evento |
XXI jornada de Atualização em Informática (XXII congresso da SBC) |
Trata-se de um excelente curso que apresenta os conceitos básicos de LP de software, realizando uma revisão das pesquisas desenvolvidas na área. Essa revisão inclui o processo e as abordagens de desenvolvimento de LP de software. O curso é ilustrado com exemplos didáticos e experiências práticas realizadas por um dos autores na indústria.
Para complementar o aprendizado de LP, o seguinte livro também deveria ser estudado:
Titulo |
Software Product Line in Action |
Autor |
F. van der Linden, K. Schmid e E. Rommes |
Editora |
Springer |
Ano |
2007 |
Esse livro possui 330 páginas, divididas em 20 capítulos, e oferece uma visão prática para LP de software, obtidas de experiências industriais coletadas de organizações de diferentes tamanhos e domínios. Esse livro mostra não só como a LP pode melhorar o processo de desenvolvimento de software, mas também descreve problemas que podem ocorrer e como as companhias os resolveram em seus respectivos conceitos.
Com essa leitura o estudante leitor poderá:
· Entender os aspectos relevantes em relação a negócios, a arquitetura, ao processo e a questões organizacionais da aplicação de engenharia de LP;
· Aprender sobre a atual prática da engenharia de LP em companhias de diferentes tamanhos, operando em diferentes países e trabalhando em vários domínios;
· Ter informação para praticar uma análise informacional da aplicabilidade, ou melhoramento, de uma abordagem de LP para uma determinada organização;
· Ter informação sobre os primeiros passos na transitividade, ou melhoramento, da abordagem de LP para uma organização.
Muitas são as maneiras de representar as variabilidades e os pontos comuns em uma LP; a mais usada são os modelos de características (feature models). Citações a essa técnica já aparecem nas leituras sugeridas anteriormente. Porém, para um melhor entendimento, outras leituras são necessárias. Esse modelo foi apresentado primeiramente no seguinte relatório técnico:
Titulo |
Feature-Oriented Domain Analysis (FODA) Feasibility Study |
Autor |
K. Kang et. al. |
Publicação |
CMU/SEI-90-TR-021, SEI/CMU |
Ano |
1990 |
Disponível em |
http://www.sei.cmu.edu/reports/90tr021.pdf |
O relatório possui 161 páginas, sendo essas divididas em nove capítulos. Sua leitura completa é recomendada, porém muito dos conceitos apresentados foram vistos em leituras anteriores; sendo assim, o mínimo recomendável seria a leitura do Capítulo 5, que trata especificamente dos modelos de características.
Atualmente, um dos maiores pesquisadores mundiais na área de modelos de características é Krzysztof Czarnecki. Ele é responsável pela criação do conceito de cardinalidade para a técnica de modelagem de características. Esse conceito pode ser entendido com a leitura do seguinte artigo:
Titulo |
Staged Configuration Through Specialization and Multi-Level Configuration of Feature |
Autor |
K. Czarnecki, S. Helsen e U. Eisenecker |
Publicação |
Software Process: Improvement and Practice, Volume 10, pp. 143-169 |
Ano |
2005 |
Nesse artigo, o leitor encontrará: uma breve introdução a modelo de características e suas definições; uma revisão de outras iniciativas para expandir esse modelo; o conceito de cardinalidade – que é o principal objetivo do artigo; uma introdução de como usar a ferramenta FeaturePlugin; e também um exemplo para fixar os conceitos apresentados.
Muito se discute a respeito da melhor estratégia para teste de software em LP. Quatro estratégias principais podem ser encontradas atualmente na literatura: a primeira seria o teste individual e independente de cada produto gerado pela engenharia de aplicação; a segunda seria o teste incremental da LP de software; a terceira técnica é a instanciação de testes reusáveis; e, por último, a técnica de divisão de responsabilidades. Uma revisão geral sobre esse assunto pode ser encontrada em:
Titulo |
Product Family Testing – a Survey |
Autor |
A. Tevanlinna, J. Taina and R. Kauppinen |
Publicação |
ACM SIGSOFT Software Engineering Notes 29(2), pp. 12 |
Ano |
2004 |
O artigo tem 6 páginas, faz uma revisão geral dos métodos desenvolvidos na área dando um foco especial ao teste de regressão.
Uma das principais técnicas de teste de software para LP é a técnica ScenTED (Scenario-based Test case Derivation), a apresentação dessa técnica pode ser encontrada em:
Titulo |
Model-Based System Testing of Software Product Families |
Autor |
A. Reuys, E. Kamsties, K. Pohl, and S. Reis |
Publicação |
Lectures Notes in Computer Science, volume 3520, pp. 519-534 |
Ano |
2005 |
Nas suas 16 páginas, o artigo apresenta a técnica ScenTED, mostra um estudo de caso da utilização dessa técnica e apresenta um protótipo de uma ferramenta de suporte para o ScenTED.