SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Seu App a prova de
gambiarras (ou não)
Ferramentas de validação de código
Christiane Morais
Android Developer @ Concrete Solutions
@ChrisCirce
Chris.morais2
christianemorais
Tópicos
● Boas práticas de programação
● Padronização
● Code-Review
● Testes
● Ferramentas
● #Comofaz
● Bibliografia
Boas Práticas
de
Programação
Boas Práticas de Programação
Algumas boas práticas de programação são válidas para qualquer linguagem.
● Métodos com responsabilidade única
● Evitar classes gigantes. Separe responsabilidades
● Não Copie e Cole!
● Nomes de classe, métodos e variáveis que façam sentido. Nada de usar, x, x1, a, var…
● Usar try catch corretamente
● Tratamento de strings adequado
● Performance na leitura de listas
● Já ouviram falar de SOLID?
Boas Práticas de
Programação
O google possui um Guideline para código Java e um para
Android.
O Guideline mais recomendado a ser seguido é o de Java. (O
de Android recomenda usar notação Húngara :/ )
Padronização
Padronização ● Identifique os padrões já existentes no seu
projeto
○ Documente
● Levante padrões utilizados pela comunidade.
○ Discuta-os com seus amiguinhos
○ Aplique os que forem aprovados no seu projeto
○ Documente
● E Documente!
Code-Review
Code-Review
Code-review é uma das técnicas utilizadas para avaliar a
qualidade do código a ser adicionada no projeto. O ideal é que
quem desenvolveu a feature, não faça seu próprio code-review.
Fatores importantes:
● Não leve a avaliação como algo pessoal
● Não avalie o código de forma pessoal
● Tenha um checklist do que é avaliado no code-review
● Siga o checklist!
Code-Review
O que deve ser avaliado no code-review:
● A utilização dos padrões adotados
● Performance
● Testes
● Segurança
● Estrutura de dados
● SOLID
● Boiler Plate
● Validações não automatizáveis
● Enfim: TUDO!
Testes o/
(Sim, de novo)
Testes
Testes são uma parte fundamental do desenvolvimento.
Somente com testes podemos garantir que uma alteração não
afeta o que já foi feito e que um bug corrigido não irá se
repetir.
Escrevam testes. Por favor!
Ferramentas
● Android Lint
● Checkstyle
● FindBugs
● SonarQube
Checkstyle
O checkstyle é um plugin que se adiciona pelo Gradle que valida pontos de
padronização de código java.
Alguns pontos que podem ser validados:
● Magic Number
● Nome de método / Variável / Constantes
● Indentação com Tab versus Espaço
● Tamanho da linha
● Espaçamento
● O uso correto de {}.
Android Lint
Essa é a ferramenta mais simples de se utilizar.
1. Execute o comando no terminal: ./gradlew lint
2. Um relatório .html será gerado no diretório:
app/build/outputs
O relatório mostra o erro, a gravidade e uma explicação
detalhada do erro e como corrigir.
Findbugs
Identifica código Java que são passíveis de bugs.
Algumas categorias de bugs avaliadas:
● Bad Practice
● Malicious code vulnerability
● Multithreaded correctness
● Performance
● Security
● Dodgy code
SonarQube
#ComoFaz
#ComoFaz
Basicamente você precisa de um conhecimento básico de
Gradle, mas não se desespere a documentação deles é muito
simples de ser seguida. :)
#Checkstyle
Para ativar o checkstyle é necessário criar uma task customizada no gradle:
#Checkstyle
Agora você precisa configurar o .xml com as regras de validação:
Bibliografia
Bibliografia
● Android Lint: http://tools.android.com/tips/lint
● Checkstyle: http://checkstyle.sourceforge.net/
● Findbugs: http://findbugs.sourceforge.net/
● Google Styleguide: https://google.github.io/styleguide/javaguide.html
● SonarQube: https://www.sonarqube.org/
● What look for in a Code-Review (e-book gratis)
https://leanpub.com/whattolookforinacodereview
● Espresso:
https://developer.android.com/training/testing/ui-testing/espresso-testing.html
● Testes no Android com Espresso:
http://www.concretesolutions.com.br/2016/09/02/testes-android-espresso-1/
● Gradle: https://gradle.org/
● SOLID no Android - Marcello Galhardo:
https://www.youtube.com/watch?v=grW2uDOvzeU
Validação código Android

Mais conteúdo relacionado

Mais procurados

DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilElias Nogueira
 
Exercícios teste de software
Exercícios   teste de softwareExercícios   teste de software
Exercícios teste de softwaremarildovezaro
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmáticaelliando dias
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
Tester - Como e onde atuar - Camila Labes
Tester - Como e onde atuar - Camila LabesTester - Como e onde atuar - Camila Labes
Tester - Como e onde atuar - Camila Labesgutssc
 
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.João Clineu - CTFL, CSM, CSD
 
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)Igor Abade
 
Automação em Wearables para Android
Automação em Wearables para AndroidAutomação em Wearables para Android
Automação em Wearables para AndroidElias Nogueira
 
Apresentação tdc 2016 - trilha de testes
Apresentação tdc   2016 - trilha de testesApresentação tdc   2016 - trilha de testes
Apresentação tdc 2016 - trilha de testesSamuel Lucas
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentOtavio Augusto
 
TDD e UnitTest em Java
TDD e UnitTest em JavaTDD e UnitTest em Java
TDD e UnitTest em JavaJúlio de Lima
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu códigoAna Claudia Nogueira
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaLeandro Parazito
 

Mais procurados (20)

Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágil
 
Exercícios teste de software
Exercícios   teste de softwareExercícios   teste de software
Exercícios teste de software
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
Casperjs-tdc-2016.ppt
Casperjs-tdc-2016.pptCasperjs-tdc-2016.ppt
Casperjs-tdc-2016.ppt
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Tester - Como e onde atuar - Camila Labes
Tester - Como e onde atuar - Camila LabesTester - Como e onde atuar - Camila Labes
Tester - Como e onde atuar - Camila Labes
 
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
 
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
Testes Exploratórios não são sinônimo de bagunça! (TDC 2016 POA)
 
Automação em Wearables para Android
Automação em Wearables para AndroidAutomação em Wearables para Android
Automação em Wearables para Android
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Apresentação tdc 2016 - trilha de testes
Apresentação tdc   2016 - trilha de testesApresentação tdc   2016 - trilha de testes
Apresentação tdc 2016 - trilha de testes
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
TDD e UnitTest em Java
TDD e UnitTest em JavaTDD e UnitTest em Java
TDD e UnitTest em Java
 
Programe a eficácia do seu código
Programe a eficácia do seu códigoPrograme a eficácia do seu código
Programe a eficácia do seu código
 
Unit test & TDD
Unit test & TDDUnit test & TDD
Unit test & TDD
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 

Semelhante a Validação código Android

Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Gabriel Rubens
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Gabriel Rubens
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Gabriel Rubens
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Bruno Maomeh
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorMarcos Pereira
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 
Qualidade em Aplicações Android - Automação de Testes Funcionais com Robotium
Qualidade em Aplicações Android - Automação de Testes Funcionais com  RobotiumQualidade em Aplicações Android - Automação de Testes Funcionais com  Robotium
Qualidade em Aplicações Android - Automação de Testes Funcionais com RobotiumElvírio Junior
 
Testes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoTestes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoAricelio Souza
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 

Semelhante a Validação código Android (20)

Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
 
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013Profissão programador práticas para melhoria contínua fatec pg setembro 2013
Profissão programador práticas para melhoria contínua fatec pg setembro 2013
 
Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016Palestra TDD - TDC - 2016
Palestra TDD - TDC - 2016
 
A Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao SêniorA Carreira de Desenvolvedor: do Jr ao Sênior
A Carreira de Desenvolvedor: do Jr ao Sênior
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Qualidade em Aplicações Android - Automação de Testes Funcionais com Robotium
Qualidade em Aplicações Android - Automação de Testes Funcionais com  RobotiumQualidade em Aplicações Android - Automação de Testes Funcionais com  Robotium
Qualidade em Aplicações Android - Automação de Testes Funcionais com Robotium
 
Testes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoTestes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de Código
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Cultura de testes
Cultura de testesCultura de testes
Cultura de testes
 
TesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdfTesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdf
 

Validação código Android

  • 1. Seu App a prova de gambiarras (ou não) Ferramentas de validação de código
  • 2. Christiane Morais Android Developer @ Concrete Solutions @ChrisCirce Chris.morais2 christianemorais
  • 3. Tópicos ● Boas práticas de programação ● Padronização ● Code-Review ● Testes ● Ferramentas ● #Comofaz ● Bibliografia
  • 5. Boas Práticas de Programação Algumas boas práticas de programação são válidas para qualquer linguagem. ● Métodos com responsabilidade única ● Evitar classes gigantes. Separe responsabilidades ● Não Copie e Cole! ● Nomes de classe, métodos e variáveis que façam sentido. Nada de usar, x, x1, a, var… ● Usar try catch corretamente ● Tratamento de strings adequado ● Performance na leitura de listas ● Já ouviram falar de SOLID?
  • 6. Boas Práticas de Programação O google possui um Guideline para código Java e um para Android. O Guideline mais recomendado a ser seguido é o de Java. (O de Android recomenda usar notação Húngara :/ )
  • 7.
  • 9.
  • 10. Padronização ● Identifique os padrões já existentes no seu projeto ○ Documente ● Levante padrões utilizados pela comunidade. ○ Discuta-os com seus amiguinhos ○ Aplique os que forem aprovados no seu projeto ○ Documente ● E Documente!
  • 12. Code-Review Code-review é uma das técnicas utilizadas para avaliar a qualidade do código a ser adicionada no projeto. O ideal é que quem desenvolveu a feature, não faça seu próprio code-review. Fatores importantes: ● Não leve a avaliação como algo pessoal ● Não avalie o código de forma pessoal ● Tenha um checklist do que é avaliado no code-review ● Siga o checklist!
  • 13. Code-Review O que deve ser avaliado no code-review: ● A utilização dos padrões adotados ● Performance ● Testes ● Segurança ● Estrutura de dados ● SOLID ● Boiler Plate ● Validações não automatizáveis ● Enfim: TUDO!
  • 15.
  • 16. Testes Testes são uma parte fundamental do desenvolvimento. Somente com testes podemos garantir que uma alteração não afeta o que já foi feito e que um bug corrigido não irá se repetir. Escrevam testes. Por favor!
  • 17. Ferramentas ● Android Lint ● Checkstyle ● FindBugs ● SonarQube
  • 18. Checkstyle O checkstyle é um plugin que se adiciona pelo Gradle que valida pontos de padronização de código java. Alguns pontos que podem ser validados: ● Magic Number ● Nome de método / Variável / Constantes ● Indentação com Tab versus Espaço ● Tamanho da linha ● Espaçamento ● O uso correto de {}.
  • 19. Android Lint Essa é a ferramenta mais simples de se utilizar. 1. Execute o comando no terminal: ./gradlew lint 2. Um relatório .html será gerado no diretório: app/build/outputs O relatório mostra o erro, a gravidade e uma explicação detalhada do erro e como corrigir.
  • 20. Findbugs Identifica código Java que são passíveis de bugs. Algumas categorias de bugs avaliadas: ● Bad Practice ● Malicious code vulnerability ● Multithreaded correctness ● Performance ● Security ● Dodgy code
  • 23. #ComoFaz Basicamente você precisa de um conhecimento básico de Gradle, mas não se desespere a documentação deles é muito simples de ser seguida. :)
  • 24.
  • 25. #Checkstyle Para ativar o checkstyle é necessário criar uma task customizada no gradle:
  • 26. #Checkstyle Agora você precisa configurar o .xml com as regras de validação:
  • 28. Bibliografia ● Android Lint: http://tools.android.com/tips/lint ● Checkstyle: http://checkstyle.sourceforge.net/ ● Findbugs: http://findbugs.sourceforge.net/ ● Google Styleguide: https://google.github.io/styleguide/javaguide.html ● SonarQube: https://www.sonarqube.org/ ● What look for in a Code-Review (e-book gratis) https://leanpub.com/whattolookforinacodereview ● Espresso: https://developer.android.com/training/testing/ui-testing/espresso-testing.html ● Testes no Android com Espresso: http://www.concretesolutions.com.br/2016/09/02/testes-android-espresso-1/ ● Gradle: https://gradle.org/ ● SOLID no Android - Marcello Galhardo: https://www.youtube.com/watch?v=grW2uDOvzeU