Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Beyond QA
Plone conference 2015
Gil Forcada
Head developer at der Freitag
Agenda
- quick survey
- personal experience
- way out of it
- way forward
- tricky questions
- ideas
- goals
- take away
SURVEY
pep8
https://www.python.org/dev/peps/pep-0008
plone.api styleguide
http://docs.plone.org/develop/plone.api/docs/contribute/conventions.html
flake8
https://pypi.python.org/pypi/flake8
bobtemplates.plone
https://pypi.python.org/pypi/bobtemplates.plone
plone.recipe.codeanalysis
https://pypi.python.org/pypi/plone.recipe.codeanalysis
continuous integration (CI)
lazy sysadmin
http://www.thegeekstuff.com/2011/07/lazy-sysadmin/
PERSONAL EXPERIENCE
WAY OUT
tools & hardware
so what's QA anyway?
tests pass?
code adheres to a style guide?
"why"
side note:
NASA's take
at software
development
http://www.fastcompany.com/28121/they-write-right-stuff
«I'm done!!»
really?
end user/developer documentation?
translations?
runs in all browsers?
broken layout?
side note:
huxley
screenster
PhantomCSS
...
upgrade... step?
missing dependency?
back to tools and hardware
styleguide and conventions
coded styleguide and conventions
my team's styleguide?
plone.recipe.codeanalysis[recommended]
flake8
CI
(Jenkins / Travis / drone.io...)
newcomers (even seasoned) best friend
WAY FORWARD
flake8 plugins
side note:
isort
improve and master current tools
flake8-copyright
flake8-exact-pin
flake8-naming
flake8-docstrings
flake8-diff
flake8-tuples
TRICKY QUESTIONS
manual QA?
single, one-time cleanups
should a pep8 error end with a CI failure?
pre-QA?
what can be QA'ed?
tests
tests
coverage
tests
coverage
p.r.codeanalysis
tests
coverage
p.r.codeanalysis
translations
tests
coverage
p.r.codeanalysis
translations
documentation syntax (on PyPI)
tests
coverage
p.r.codeanalysis
translations
documentation syntax (on PyPI)
documentation references and typos
tests
coverage
p.r.codeanalysis
translations
documentation syntax (on PyPI)
documentation references and typos
MANIFEST.in...
tests
coverage
p.r.codeanalysis
translations
documentation syntax (on PyPI)
documentation references and typos
MANIFEST.in...
tests
coverage
p.r.codeanalysis
translations
documentation syntax (on PyPI)
documentation references and typos
MANIFEST.in...
tests
coverage
p.r.codeanalysis
translations
documentation syntax (on PyPI)
documentation references and typos
MANIFEST.in...
tests
coverage
p.r.codeanalysis
translations
documentation syntax (on PyPI)
documentation references and typos
MANIFEST.in...
tests
coverage
p.r.codeanalysis
translations
documentation syntax (on PyPI)
documentation references and typos
MANIFEST.in...
and...
JS / CSS / ZCML / JSON / XML / GS
when to run QA tools?
manually
manually
pre-commit hook (ADD)
manually
pre-commit hook (ADD)
before a release
manually
pre-commit hook (ADD)
before a release
global CI integration
manually
pre-commit hook (ADD)
before a release
global CI integration
per distribution CI job
IDEAS
keep noise level low and targeted
work on branches
git commit –amend && git rebase --interactive
devtest and / or staging environment
integrate it in your $EDITOR
GOALS
no errors on core for 5.1?
http://jenkins.plone.org/job/code-analysis
sane dependency?
http://jenkins.plone.org/job/undeclared-dependencies
zuul?
http://docs.openstack.org/infra/zuul/
python3?
a newcomer releasing Plone 6?
TAKE AWAY
no bikeshedding linters→
no bikeshedding linters→
no (only) manual steps CI warns→
no bikeshedding linters→
no (only) manual steps CI warns→
always room for improvement toolbox→
no bikeshedding linters→
no (only) manual steps CI warns→
always room for improvement toolbox→
quality is on every action
no bikeshedding linters→
no (only) manual steps CI warns→
always room for improvement toolbox→
quality is on every action
...
no bikeshedding linters→
no (only) manual steps CI warns→
always room for improvement toolbox→
quality is on every action
...
no bikeshedding linters→
no (only) manual steps CI warns→
always room for improvement toolbox→
quality is on every action
...
thanks!
questions?
way beyond: https://www.flickr.com/photos/vainsang/3555975287
atomic bomb: http://www.strangemilitary.c...
distraction free
high quality
development
Beyond QA
Beyond QA
Beyond QA
Beyond QA
Beyond QA
Beyond QA
Upcoming SlideShare
Loading in …5
×

Beyond QA

908 views

Published on

Talk at Plone Conference 2015 where some hints are given

Published in: Technology
  • Be the first to comment

Beyond QA

  1. 1. Beyond QA Plone conference 2015
  2. 2. Gil Forcada Head developer at der Freitag
  3. 3. Agenda - quick survey - personal experience - way out of it - way forward - tricky questions - ideas - goals - take away
  4. 4. SURVEY
  5. 5. pep8 https://www.python.org/dev/peps/pep-0008
  6. 6. plone.api styleguide http://docs.plone.org/develop/plone.api/docs/contribute/conventions.html
  7. 7. flake8 https://pypi.python.org/pypi/flake8
  8. 8. bobtemplates.plone https://pypi.python.org/pypi/bobtemplates.plone
  9. 9. plone.recipe.codeanalysis https://pypi.python.org/pypi/plone.recipe.codeanalysis
  10. 10. continuous integration (CI)
  11. 11. lazy sysadmin http://www.thegeekstuff.com/2011/07/lazy-sysadmin/
  12. 12. PERSONAL EXPERIENCE
  13. 13. WAY OUT
  14. 14. tools & hardware
  15. 15. so what's QA anyway?
  16. 16. tests pass?
  17. 17. code adheres to a style guide?
  18. 18. "why"
  19. 19. side note: NASA's take at software development http://www.fastcompany.com/28121/they-write-right-stuff
  20. 20. «I'm done!!»
  21. 21. really?
  22. 22. end user/developer documentation?
  23. 23. translations?
  24. 24. runs in all browsers?
  25. 25. broken layout?
  26. 26. side note: huxley screenster PhantomCSS ...
  27. 27. upgrade... step?
  28. 28. missing dependency?
  29. 29. back to tools and hardware
  30. 30. styleguide and conventions
  31. 31. coded styleguide and conventions
  32. 32. my team's styleguide?
  33. 33. plone.recipe.codeanalysis[recommended]
  34. 34. flake8
  35. 35. CI (Jenkins / Travis / drone.io...)
  36. 36. newcomers (even seasoned) best friend
  37. 37. WAY FORWARD
  38. 38. flake8 plugins
  39. 39. side note: isort
  40. 40. improve and master current tools
  41. 41. flake8-copyright flake8-exact-pin flake8-naming flake8-docstrings flake8-diff flake8-tuples
  42. 42. TRICKY QUESTIONS
  43. 43. manual QA?
  44. 44. single, one-time cleanups
  45. 45. should a pep8 error end with a CI failure?
  46. 46. pre-QA?
  47. 47. what can be QA'ed?
  48. 48. tests
  49. 49. tests coverage
  50. 50. tests coverage p.r.codeanalysis
  51. 51. tests coverage p.r.codeanalysis translations
  52. 52. tests coverage p.r.codeanalysis translations documentation syntax (on PyPI)
  53. 53. tests coverage p.r.codeanalysis translations documentation syntax (on PyPI) documentation references and typos
  54. 54. tests coverage p.r.codeanalysis translations documentation syntax (on PyPI) documentation references and typos MANIFEST.in (brown bag releases)
  55. 55. tests coverage p.r.codeanalysis translations documentation syntax (on PyPI) documentation references and typos MANIFEST.in (brown bag releases) undeclared dependencies
  56. 56. tests coverage p.r.codeanalysis translations documentation syntax (on PyPI) documentation references and typos MANIFEST.in (brown bag releases) undeclared dependencies accessibility
  57. 57. tests coverage p.r.codeanalysis translations documentation syntax (on PyPI) documentation references and typos MANIFEST.in (brown bag releases) undeclared dependencies accessibility JS on major browsers and screen sizes
  58. 58. tests coverage p.r.codeanalysis translations documentation syntax (on PyPI) documentation references and typos MANIFEST.in (brown bag releases) undeclared dependencies accessibility JS on major browsers and screen sizes commit messages
  59. 59. tests coverage p.r.codeanalysis translations documentation syntax (on PyPI) documentation references and typos MANIFEST.in (brown bag releases) undeclared dependencies accessibility JS on major browsers and screen sizes commit messages merge a branch without README entry?
  60. 60. and...
  61. 61. JS / CSS / ZCML / JSON / XML / GS
  62. 62. when to run QA tools?
  63. 63. manually
  64. 64. manually pre-commit hook (ADD)
  65. 65. manually pre-commit hook (ADD) before a release
  66. 66. manually pre-commit hook (ADD) before a release global CI integration
  67. 67. manually pre-commit hook (ADD) before a release global CI integration per distribution CI job
  68. 68. IDEAS
  69. 69. keep noise level low and targeted
  70. 70. work on branches git commit –amend && git rebase --interactive
  71. 71. devtest and / or staging environment
  72. 72. integrate it in your $EDITOR
  73. 73. GOALS
  74. 74. no errors on core for 5.1? http://jenkins.plone.org/job/code-analysis
  75. 75. sane dependency? http://jenkins.plone.org/job/undeclared-dependencies
  76. 76. zuul? http://docs.openstack.org/infra/zuul/
  77. 77. python3?
  78. 78. a newcomer releasing Plone 6?
  79. 79. TAKE AWAY
  80. 80. no bikeshedding linters→
  81. 81. no bikeshedding linters→ no (only) manual steps CI warns→
  82. 82. no bikeshedding linters→ no (only) manual steps CI warns→ always room for improvement toolbox→
  83. 83. no bikeshedding linters→ no (only) manual steps CI warns→ always room for improvement toolbox→ quality is on every action
  84. 84. no bikeshedding linters→ no (only) manual steps CI warns→ always room for improvement toolbox→ quality is on every action QA from commit 1 on
  85. 85. no bikeshedding linters→ no (only) manual steps CI warns→ always room for improvement toolbox→ quality is on every action QA from commit 1 on enable refactorings and makes them easier
  86. 86. no bikeshedding linters→ no (only) manual steps CI warns→ always room for improvement toolbox→ quality is on every action QA from commit 1 on enable refactorings and makes them easier enable others
  87. 87. thanks! questions? way beyond: https://www.flickr.com/photos/vainsang/3555975287 atomic bomb: http://www.strangemilitary.com/content/item/144835.html cheese shop: http://www.dailymotion.com/video/x2oc45f stop sign: https://www.flickr.com/photos/gerrydincher/7497078030 bike shed: https://www.flickr.com/photos/mirima2010/4671399769 emergency exit: https://www.flickr.com/photos/cazault/14167508389 road ahead: https://www.flickr.com/photos/specmode/5674773309 toolbox: http://elitetrack.com/recovery-day-toolbox-speed-power-athletes/ isort logo: https://raw.githubusercontent.com/timothycrosley/isort/develop/logo.png hammer: https://www.flickr.com/photos/jamesrbowe/6371964415 swiss army knife: https://www.flickr.com/photos/joelogon/3281797885 Light bulb: https://www.flickr.com/photos/n1ct4yl0r/9507089021
  88. 88. distraction free high quality development

×