Teste de Software com ênfase em conhecimento: uma proposta de estratégia Douglas Magalhães de Abreu Orientador: Dr. André Luiz Zambalde Co-orientador: M. Eng. Paulo H.de Souza Bermejo Apresentação: Roteiro Motivação e Objetivos Referencial Teórico Metodologia Resultados e Discussão Conclusão Motivação e Objetivos Complexidade desenvolvimento de software tem aumentado Tamanho de código Uso de recursos computacionais Tamanho das equipes de desenvolvimento Volume de documentações Aumento das chances de ocorrência de falhas Manutenção tem alto custo Afeta credibilidade do produto e da empresa Motivação e Objetivos (continuação) Identificação de falhas com teste de software (Taipale, 2007): atividade intelectualmente complexa requer interação entre equipes pra troca de informação e conhecimento demanda conhecimento prévio de domínio do problema, de ferramentas, do produto e de clientes Gestão do conhecimento tem se tornado uma resposta a essas demandas por conhecimentos Gestão do Conhecimento Captar, organizar, disponibilizar e criar conhecimento na organização Já utilizada em vários setores da indústria organizações produtoras de software têm utilizado no apoio à tomada de decisão por meio de aprendizado com projetos passados pesquisas recentes apontam benefícios da colaboração da Gestão do Conhecimento ao teste de software (Taipale, 2007) Motivação e Objetivos (continuação) Objetivos: Geral: propor um processo de teste de software com ênfase em conhecimento em uma empresa produtora de software Específicos: levantar os fundamentos teóricos da Gestão do Conhecimento e teste de software identificar e descrever os processos de teste de software da empresa propor atividades complementares aos processos já existentes na empresa que tornem viável a Gestão de Conhecimento na atividade de teste Referencial Teórico Conhecimento (DAVENPORT & PRUZAK,1998): Está associado à prática e à experiência Está presente: Mentes dos conhecedores Atividades rotineiras Documentos Políticas e normas das organizações Classificação Tácito x Explícito Referencial Teórico (continuação) Teste de software (PFLEEGER, 2001): Atividade intelectualmente complexa Conceitos Defeito (fault) Erro (error) Falha (failure) Caso de teste 3 fases básicas Teste de unidade Teste de integração Teste de sistema Fases de teste de software (Pfleeger, 2001) Referencial Teórico (continuação) Teste de software (PEZZAND e YOUNG, 2008): Classificação de falhas (Root Cause Analisys: RCA) dinâmica e generalizada Objetivo: encontrar as causas Classificação: Crítica Severa Moderada Suave Perfis Operacionais Modelos estatísticos de uso com base em casos anteriores ou similares Metodologia Pesquisa qualitativa Enfoque exploratório descritivo Perspectiva do pesquisador Pesquisa ação Participação ativa do pesquisador junto ao objeto de pesquisa Pesquisador não apenas observa, interfere nas decisões do grupo Tende a resolver ou elucidar o problema Gera conhecimento sobre o problema Metodologia (continuação) Levantamento de material bibliográfico Levantamento de documentos da empresa Análise dos processo de teste de software da empresa Inferência sobre as informações Geração da proposta de uso da GC nas atividades de teste de software Resultados e Discussão Empresa 10 anos 150 funcionários Atua na área de mineração 2 sedes Atua no exterior Projeto estratégico de expansão e melhoria de processos internos (em adaptação) Resultados e Discussão (continuação) Processos da empresa Fluxos de processo Desenvolvimento de projeto de software (com ou sem implantação) Geração de releases(branches) inicio P1.2 - gerar proposta técnica P1.5 - planejar homologação P1.3 - gerar: requisitos, casos de uso e testes por requisito e por caso de uso P1.7 - executar homologação P1.6 – desenvolver software fim Fluxos de processos de desenvolvimento e homologação de software reunir para definir escopo e necessidades (recursos) inicio estabelecer data de homologação junto com o gerente do projeto realizar pedido formal de recursos formalizar plano de homologação com todos os gerentes de desenvolvimento e de produto inicio fim gerenciar reportagem, documentação e correção de falhas realizar teste de integração (teste por caso de uso) executar planos de testes reunir para balanço, tomada de decisão (aceite ou rejeição) reunir para nivelar conhecimento do projeto entre Desenvolvedores e gerentes realizar teste de unidade (teste por requisito) inicio reunir para dividir tarefas entre recursos humanos oficializar finalização da homologação divulgando resultado fim desenvolver requisitos documentar todo o desenvolvimento Equipe de Homologação de Produto Gerente de Projeto Talento fim Resultados e Discussão (continuação) Proposta de processo de teste de software com ênfase em conhecimento Documentação adequada mas não usada pra aprendizado com projetos passados Equipe de homologação separada da equipe de desenvolvimento torna o teste menos eficiente Não há especialistas em teste de software na empresa Muitos funcionários novos (menos de 1 ano de contratação) Captura, filtragem, organização e difusão do conhecimento trarão agilidade aos processos Resultados e Discussão (continuação) Ferramentas de GC: exemplos de uso Criação de conhecimento: BI (Business Intelligence) Reuniões diárias: Blog Captura de conhecimento:wiki Conclusões Os processos que envolvem teste de software da empresa foram observados e descritos conforme planejado Aplicação ainda que preliminar se mostra promissora e de grande aceitação pelos envolvidos A equipe já demonstra mais segurança nos planejamentos e execuções de homologações Espera-se que toda a proposta seja aplicada e melhorada na empresa A Gestão do Conhecimento mostrou-se bem adaptada aos processos já existentes na empresa Espera-se a adoção da proposta pela equipe de desenvolvimento Espera-se contribuir na literatura com a concepção de um conjunto de processos de teste de software que tenham ênfase em conhecimento Referências Bibliográficas DAVENPORT, Thomas H.; PRUZAK, Laurence: Working Knowledge – How Organizations Manage What They Know. Harvard Business School Press. 1998. 199 pgs. DELAMARO, Marcio Eduardo; JINO, Mario; MALDONADO, José Carlos: Introdução ao Teste de Software. São Paulo. Campus, 2007. 408pgs. DINGSØYR, Torgeir. (2002). Knowledge Management in Medium-Sized Software Consulting Companies: an investigation of intranetbased knowledge management tools for knowledge cartography and knowledge repositories for learning software organisations. Norwegian University of Science and Technology. Editora Perspektiv. LYU, M.: Software reliability engineering: A roadmap. Future of Software Engineering. 2007. IEEE-CS Press, 2007. Referências Bibliográficas MYERS, Glenford J.; BADGETT, Tom; THOMAS, Todd M.; SANDLER, Corey: The Art of Software Testing. John Wiley and Sons, 2004.234 pgs. NEVES, J. L. Pesquisa qualitativa: características, usos e possibilidades. Caderno de pesquisa em administração. São Paulo, v. 1, n. 3, 1996. NONAKA, Ikujiro; TAKEUCHI, Hirotaka. Criação de conhecimento na empresa. 9ª ed. Rio de Janeiro: Campus, 1997. PEZZAND, Mauro; YOUNG Michael: Software Testing and Analysis: Process, Principles and Techniques. John Wiley & Sons 2008. 510 pgs. Referências Bibliográficas PFLEEGER, Shari L.: Software Engineering: Theory and. Prentice Hall; 2 edition (February 7, 2001). 659 pgs. SBC: Grandes Desafios da Pesquisa em Computação no Brasil 2006 – 2016. Relatório sobre o Seminário realizado em 8 e 9 de maio de 2006. http://www.sbc.org.br/ Acessado em setembro 2008. THIOLLENT, Michel: Metodologia da pesquisa-ação. 4. ed. São Paulo : Cortez, 1988 108 pgs. ZAMBALDE, A. L.; ALVES, R. M.: Gestão do conhecimento, tecnologia e inovação. Lavras. Faepe.2008.