O documento descreve um projeto para desenvolver um plugin para a ferramenta SonarQube capaz de realizar inspeção de código na linguagem Clipper para identificar violações de padrões. O projeto utilizou métodos ágeis como Scrum e Kanban e práticas como TDD, entregas contínuas e testes automatizados para alcançar altos níveis de cobertura de regras e qualidade do código.
Palestra realizada na Semana Acadêmica do Instituto de Informática da UFRGS. Conteúdo baseado nos conceitos e técnicas propostos no livro Agile Testing de Lisa Crispin e Janet Gregory.
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Alcançando qualidade de software através de entrega contínuaSamanta Cicilia
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas. Processos de desenvolvimento são muitas vezes burocráticos. O desenvolvimento ágil veio para nos mostrar que a forma que pensávamos em software podia ser melhorada. A Entrega Contínua veio para potencializar a entrega desde a primeira linha de código até produção. Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas: Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Apresentar um breve histórico do Teste de Software, juntamente com o processo de teste de software e seus níveis, técnicas, tipos e critérios realizando exercícios práticos.
Contextualizar os alunos de ferramentas de apoio ao teste e boas práticas nas atividades de teste de software.
Palestra realizada na Semana Acadêmica do Instituto de Informática da UFRGS. Conteúdo baseado nos conceitos e técnicas propostos no livro Agile Testing de Lisa Crispin e Janet Gregory.
[DevOps Summit]Importância de testes automatizados para sustentar Continuous...Samanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Alcançando qualidade de software através de entrega contínuaSamanta Cicilia
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas. Processos de desenvolvimento são muitas vezes burocráticos. O desenvolvimento ágil veio para nos mostrar que a forma que pensávamos em software podia ser melhorada. A Entrega Contínua veio para potencializar a entrega desde a primeira linha de código até produção. Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas: Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Apresentar um breve histórico do Teste de Software, juntamente com o processo de teste de software e seus níveis, técnicas, tipos e critérios realizando exercícios práticos.
Contextualizar os alunos de ferramentas de apoio ao teste e boas práticas nas atividades de teste de software.
- Antipadrões de Entrega de Software;
- Princípios de Continuous Delivery
- Gerência de Configuração
- Integração Contínua
- Estratégias de Teste
- Pipeline de Implantação
- Case da Infoglobo
- Gerência de Dados
- Estratégias de Implantação
Palestra ministrada no evento Javou! #08, realizado pela comunidade JavaCE, dia 12/11/2016 no Auditório Nadir Papi Saboya, Faculdade Farias Brito, em Fortaleza-CE
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
Nessa apresentação você irá conhecer os desafios, os benefícios e as lições aprendidas pela Infoglobo durante a implantação de Continuous Delivery no ciclo de desenvolvimento de integrações entre aplicações através de um Barramento Corporativo de Serviços.
Seminário de Predição de Bugs apresentado na disciplina de Evolução e Manutenção de Software, baseado no artigo "Does Bug Prediction Support Human Developers?
Findings From a Google Case Study"
Apresentação do Coderage Brasil 2018 sobre TDD com Código Legado com Delphi usando Spring.Testing e TestInsight.
Dicas de Refactory, como identificar Code Smell e Antipatterns e Hands on do refactory do exemplo GettingStarted do FireDAC.
"Apresentação atualizada, pois o SlideShare não permite re-upload."
Vídeo da primeira parte - Apresentação
https://youtu.be/ZWQO0bLB8gU
Victor Hugo Germano apresenta, na casa CTAI Senai SC um curso de formação entitulado: Teste de Software.
Chamando para uma discussão a respeito de nosso papel dentro do desenvolvimento de software, são apresentados conceitos relacionados à area de teste de software, assim como apresentada sua visão de como um modelo de testes deve estar vinculado ao desenvolvimento.
- Antipadrões de Entrega de Software;
- Princípios de Continuous Delivery
- Gerência de Configuração
- Integração Contínua
- Estratégias de Teste
- Pipeline de Implantação
- Case da Infoglobo
- Gerência de Dados
- Estratégias de Implantação
Palestra ministrada no evento Javou! #08, realizado pela comunidade JavaCE, dia 12/11/2016 no Auditório Nadir Papi Saboya, Faculdade Farias Brito, em Fortaleza-CE
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
Nessa apresentação você irá conhecer os desafios, os benefícios e as lições aprendidas pela Infoglobo durante a implantação de Continuous Delivery no ciclo de desenvolvimento de integrações entre aplicações através de um Barramento Corporativo de Serviços.
Seminário de Predição de Bugs apresentado na disciplina de Evolução e Manutenção de Software, baseado no artigo "Does Bug Prediction Support Human Developers?
Findings From a Google Case Study"
Apresentação do Coderage Brasil 2018 sobre TDD com Código Legado com Delphi usando Spring.Testing e TestInsight.
Dicas de Refactory, como identificar Code Smell e Antipatterns e Hands on do refactory do exemplo GettingStarted do FireDAC.
"Apresentação atualizada, pois o SlideShare não permite re-upload."
Vídeo da primeira parte - Apresentação
https://youtu.be/ZWQO0bLB8gU
Victor Hugo Germano apresenta, na casa CTAI Senai SC um curso de formação entitulado: Teste de Software.
Chamando para uma discussão a respeito de nosso papel dentro do desenvolvimento de software, são apresentados conceitos relacionados à area de teste de software, assim como apresentada sua visão de como um modelo de testes deve estar vinculado ao desenvolvimento.
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
Esta é uma apresentação que resgatei do BorCon(Borland Conference) em
2003, nesta época XP, Métodos Ágeis estavam começando a ganhar
notoriedade ainda no Brasil. Neste evento, lembro que pude mostrar e
quebrar alguns paradigmas de uma platéia cética a respeito do assunto,
mas que no final, depois de várias perguntas e dúvidas, acredito ter
conseguido fazer com que algumas pessoas desde essa época começarem a
olhar para Práticas Ágeis de forma melhor.
Não! Eu não quero voltar a ser um "Profanador" em prol de métodos
Ágeis, hoje em dia já existem pessoas, muito mais capacitadas,
atualizadas e engajadas do que eu.
Uma apresentação do tunel do tempo, de uma época muito feliz na minha
vida, quando pude passar algum tempo com minha família e amigos, além
de ter sido sócio de uma empresa que também quebrou padrões em Belém:
Argos Tecnologia, que teve também como sócio Alexandre Magno (hoje
Diretor da Adaptworks).
Se estes slides ainda forem atuais, por favor, comentem, critiquem,
fiquem a vontade :)
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
Visto que hoje cada vez mais os profissionais de qualidade e desenvolvimento de software trabalham em par, precisamos falar das duas áreas juntas para disseminar essa cultura. Esta apresentação aborda boas práticas importantes e utilizadas em desenvolvimento de software, falando sobre como elas são aplicadas no dia a dia das empresas.
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
Visto que hoje cada vez mais os profissionais de qualidade e desenvolvimento de software trabalham em par, precisamos falar das duas áreas juntas para disseminar essa cultura. Esta apresentação aborda boas práticas importantes e utilizadas em desenvolvimento de software, falando sobre como elas são aplicadas no dia a dia das empresas.
Inspeção de Código Clipper - Case de um projeto ágil
1. Workshop
Inspeção de Código Clipper
Case de um projeto ágil
Abílio Gambim Parada
Carlos André Giese
Leonardo Carvalho Duprates
Thomás Daniel Vieira
Fábio Uggeri
Ricardo Vieira
Rodrigo Severo
2. 22
Projeto
O objetivo do projeto é construir um plugin para a ferramenta SonarQube, capaz
de realizar inspeção de projetos da linguagem Clipper para identificar violações.
A violação é um trecho de código fora do padrão de regras definidas pelos
manuais de Arquitetura do Sicredi.
Criticidade: bloqueante, crítico, maior,
menor e info.
Inspeção de código para linguagem Clipper
SonarQube é uma plataforma de código livre desenvolvida para gerenciar a qualidade de um projeto de desenvolvimento de software. O objetivo é garantir a
cobertura dos sete eixos da qualidade do código: Arquitetura e Design, Comentários, Regras de Codificação, Bugs, Complexidade, Testes Unitários, Duplicações.
Regras: arquitetura, eficiência, logico,
legibilidade, manutenção, segurança e
entendimento.
SONARQUBE
PLUGIN CLIPPER SICREDI
PROJETOS CLIPPER SICREDI
50% 70% 60% 60%
4. 44
MVP
Escopo aberto
Sprint Mensal
Teste Unitário
Teste Funcional
Refatoração
Kanban – Trello
Scrum
Feedback
Ignore line
TDD
XP
Lean
Entrega Semanal
Teste
Automatizado
Burn Down
Cobertura do
Parser
Desenho do
Processo
Clean Code
Case Insensitive
Documentação
Viva
Fast Inspector
Suíte de Testes
Inspeção do
Projeto Java
Timeline
Automação do
sonar-properties
1 2 3 4 5 6 7 8
x Falhas na Inspeção
x TDD
x Pouco Feedback
x Planning semanal
x Status andamento
do projeto
x Acúmulo de
tarefas na
homologação
x Falta de projetos
reais
x Manutenabilidade
do Código
x Case Insensitive
x Visibilidade do
Projeto
x Tempo de Inspeção
x Adequação aos
Padrões do Sicredi
x Possibilidade de
novos projetos
x Entendimento de
regras mais
complexas
x Objetivo de
99.5% de
cobertura
x Entrada em
produção
Regras
12
70%
Cobertura
Regras
85%
Cobertura
Regras
29
90%
Cobertura
Regras
34
94%
Cobertura
Regras
37
96%
Cobertura
Regras
43
97%
Cobertura
Regras
50
98%
Cobertura
Regras
5620
POC para a
linguagem PLSQL
5. 55
MVP
Mínimo Viável
Mínimo + Viável
É a versão mais simples de um produto com uma quantidade mínima de esforço e tempo de desenvolvimento que pode demonstrar e comprovar a
viabilidade de implementação para o negocio.
MVP
Escopo aberto
Scrum
Kanban – Trello
Teste Unitário
Refatoração
Sprint Mensal
Teste Funcional
Feedback
1
x Falhas na Inspeção
x TDD
x Pouco Feedback
x Planning semanal
12
Regras
6. 66
Escopo
Certeza Técnica
Entrega com maior Valor Agregado
Alinhamento com o Cliente
Flexibilidade
MVP
Escopo aberto
Scrum
Kanban – Trello
Teste Unitário
Refatoração
Sprint Mensal
Teste Funcional
Feedback
1
x Falhas na Inspeção
x TDD
x Pouco Feedback
x Planning semanal
Regras
12
7. 77
SCRUM
Trello (Kanban).
Release Note.
Sprint Mensal
Retrospectiva.
360°
Daily
Sprint
Backlog
Increment
MVP
Escopo aberto
Scrum
Kanban – Trello
Teste Unitário
Refatoração
Sprint Mensal
Teste Funcional
Feedback
x Falhas na Inspeção
x TDD
x Pouco Feedback
x Planning semanal
1
Regras
12
8. 88
Kanban
Test & CodeTo do Code Review
MVP
Escopo aberto
Scrum
Kanban – Trello
Teste Unitário
Refatoração
Sprint Mensal
Teste Funcional
Feedback
1
x Falhas na Inspeção
x TDD
x Pouco Feedback
x Planning semanal
Regras
12
9. 99
Teste Unitário
Regra
1 1
Estrutura
sintática
1 Classe de Teste
1
Arrange, Act and Assert
Como codificar um teste limpo:
Como estruturar o teste: Os três passos claramente definidos para o teste unitário são preparar, agir e
verificar. Primeiro preparamos o que será testado (dados, ambiente, etc.), em seguida realizamos as
operações que serão testadas e por fim verificamos os resultados obtidos. É importante explicitar estas
etapas no código, para mantê-lo limpo.
Fast
Independent
Repeatable
Self-validating
Timelly
MVP
Escopo aberto
Scrum
Kanban – Trello
Teste Unitário
Refatoração
Sprint Mensal
Teste Funcional
Feedback
1
x Falhas na Inspeção
x TDD
x Pouco Feedback
x Planning semanal
Classe de Teste
Regras
12
11. 1111
Ignore Line
InputActionParser
O Input apaga a linha indicada pelo ActionParser
O ActionParser informa qual linha causa o problema
ActionParser é o passo inicial do funcionamento
do programa. Ele inicia a leitura do arquivo e a montagem
da árvore sintática.
Input é a classe que representa o arquivo a ser
processado pelo parser. Nessa classe que será eliminado as
linhas com erros, indicadas pela ActionParser2.
Local nVar1 := 1
Local lVar2 := .v.
Local lVar3 := .T.
Trecho de código após Ignore-Line:
1
2
3
Local nVar1 := 1
Local lVar3 := .T.
1
2
3
Ignore line
TDD
XP
Lean
x Status andamento
do projeto
x Acúmulo de
tarefas na
homologação
70%
Cobertura
20
2
Regras
12. 1212
TDD
Cada funcionalidade deve iniciar com um teste
unitário que falhará até que a condição de sucesso
seja implementada.
Fail
Desenvolva a funcionalidade conforme as
condições de saída implementadas no
teste unitário. A funcionalidade só estará
concluída quanto o teste passar.
Test & Code
Refactor
TDD
Ajusta e otimiza a funcionalidade
desenvolvida e executa os testes
unitários implementados.
Todos os testes devem passar.
Ignore line
TDD
XP
Lean
x Status andamento
do projeto
x Acúmulo de
tarefas na
homologação
2
70%
Cobertura
20
Regras
13. 1313
eXtreme Programming
Testes
Entrega
Continua
Trabalho Coletivo
Padrões de
Codificação
Feedback
Refatoração
Bullshit
Pair Programming
Integração
Continua
Simplicidade
Inovação
Time Coeso
Pequenas
Entregas
Ignore line
TDD
XP
Lean
x Status andamento
do projeto
x Acúmulo de
tarefas na
homologação
2
70%
Cobertura
20
Regras
14. 1414
Entrega
As entregas são validadas a tempo de serem
corrigidas caso seja identificado uma
melhoria ou correção
Entrega
A maior frequência nas entregas permite a
toda a equipe buscar oportunidades de
inovação e melhorias do projeto.
Entrega
O envio Burn Down apresenta a evolução do
projeto permitindo validar se o
planejamento correto.
Entrega
Entrega Semanal
Entrega Semanal
Teste
Automatizado
Burn Down
Cobertura do
Parser
x Falta de projetos
reais
x Manutenabilidade
do Código
x Case Insensitive
3
85%
Cobertura
29
Regras
15. 1515
Testes Automatizados
Garantir a cobertura dos testes
Reduzir o tempo de execução
Aumentar a assertividade
Feedback rápido e constante
Automação das tarefas manuais
• Na Sprint 01 e Sprint 02 os teste do plugin foram
executados manualmente para todos os
projetos.
• Ao encontrar um defeito analisava-se a linha
onde este ocorreu-o, e reiniciava-se a execução.
• Na Sprint 03 foi implementado um método baseado no
mecanismo ignore line para registrar as linhas com
problemas e continuar a inspeção.
• Não foram mais realizados testes manuais.
Testes manuais: Testes automatizados: Entrega Semanal
Teste
Automatizado
Burn Down
Cobertura do
Parser
x Falta de projetos
reais
x Manutenabilidade
do Código
x Case Insensitive
3
85%
Cobertura
29
Regras
16. 1616
Burn Down
0
2
4
6
8
10
12
Projeto 2054 - Sprint X - Parser e Regras
Target Burn Down Actual Burn Down
Entrega Semanal
Teste
Automatizado
Burn Down
Cobertura do
Parser
x Falta de projetos
reais
x Manutenabilidade
do Código
x Case Insensitive
3
85%
Cobertura
29
Regras
18. 1818
Clean Code
Simplicidade
Expressividade
Coesão
“Um código limpo é simples e direto.
É tão legível quanto uma prosa bem
escrita. Ele jamais torna confuso o
objetivo do desenvolvedor, em vez
disso, é sempre repleto de abstrações
claras e linhas de comando
objetivas.”
Grady Booch, autor do livro
Object Oriented Analysis and Design with Applications
Padronização
Legibilidade
Refatoração Objetividade
Desenho do
Processo
Clean Code
Case Insensitive
x Visibilidade do
Projeto
x Tempo de Inspeção
4
90%
Cobertura
34
Regras
19. 1919
Documentação Viva
Assuntos:
1. Estrutura do Parser;
2. Mecanismo Ignore-Line;
3. Estrutura das Regras;
4. Código Limpo;
5. Testes Unitários;
6. Desenho do Processo
7. Fast-Inspector.
Documentação
Viva
Fast Inspector
x Adequação aos
Padrões do Sicredi
5
94%
Cobertura
37
Regras
20. 2020
Documentação Viva
Predio C – 7ª AndarSala 301 - Tecnopuc
Documentação
Viva
Fast Inspector
x Adequação aos
Padrões do Sicredi
5
94%
Cobertura
37
Regras
21. 2121
Fast Inspector
Hash
Fast-Inspector é um mecanismo para acelerar a inspeção de código Clipper. A cada
inspeção do projeto, é criptografada uma hash do conteúdo do código fonte. Essas informações
são salvas no banco do Sonar e comparadas a cada inspeção.
Caso a nova hash seja igual a antiga, então a inspeção não precisaser executada.
Arquivos
fonte Clipper
Documentação
Viva
Fast Inspector
x Adequação aos
Padrões do Sicredi
5
94%
Cobertura
37
Regras
22. 2222
Suíte de Teste
Suíte de Testes
Inspeção do
Projeto Java
x Possibilidade de
novos projetos
x Entendimento de
regras mais
complexas
Checks – Criação das Regras
Squid – Parser do código Clipper6
96%
Cobertura
43
Regras
23. 2323
Inspeção Projeto Java
Suíte de Testes
Inspeção do
Projeto Java
x Possibilidade de
novos projetos
x Entendimento de
regras mais
complexas
6
96%
Cobertura
43
Regras
24. 2424
POC PL/SQL
x Entrada em
produção
POC para a
linguagem PLSQL
PL/SQL oportunidade de Futuro Projeto
Conhecimento gerado na Equipe,
Viabilidade de construção,
Validação da necessidade do cliente,
Entrega focada em MVP
7
97%
Cobertura
50
Regras
25. 2525
Projeto Clipper
1 2 3 4 5 6 7 8
x Falhas na Inspeção
x TDD
x Pouco Feedback
x Status andamento
do projeto
x Acúmulo de
tarefas na
homologação
x Falta de projetos
reais
x Manutenabilidade
do Código
x Case Insensitive
x Visibilidade do
Projeto
x Tempo de Inspeção
x Adequação aos
Padrões do Sicredi
x Possibilidade de
novos projetos
x Entendimento de
regras mais
complexas
x Objetivo de
99.5% de
cobertura
x Entrada em
produção
Regras
12
Regras Regras
29
Regras
34
Regras
37
Regras
43
Regras
50
Regras
5620
70%
Cobertura
85%
Cobertura
90%
Cobertura
94%
Cobertura
96%
Cobertura
98%
Cobertura
99%
Cobertura
MVP
Escopo aberto
Sprint Mensal
Teste Unitário
Teste Funcional
Refatoração
Kanban – Trello
Scrum
Feedback
Ignore line
TDD
XP
Entrega Semanal
Teste
Automatizado
Burn Down
Cobertura do
Parser
Desenho do
Processo
Clean Code
Case Insensitive
Documentação
Viva
Fast Inspector
Suíte de Testes
Inspeção do
Projeto Java
Automação do
sonar-properties
POC para a
linguagem PLSQL
26. 2626
Opinião do cliente
Boa comunicação no alinhamento diário sobre desenvolvimento e procedimentos
Flexibilidade de escopo e planejamento na definição de regras e desenvolvimento
x Falta de ferramenta de integração com o Sicredi semelhante ao Trello
ou um fórum
Pró-atividade na sugestão de melhorias
Refatoração e ajustes com agilidade nos problemas detectados pela
homologação
Foco nas entregas de maior valor agregado