q9 quality inside ii v2.1
TRANSCRIPT
quality for IT projects
Vortrag Q9
Quality Inside – Teil 2Hit the Code Jack
MATHEMA
frühjahrs-campus 2008
19. April 2008
Detlef Burkhardt
Andreas Kock
19.04.08 Folie 3 www.gjc-quality.com
Guten Tag, wir sind:
Detlef Burkhardt Enterprise Engineer & Architect als freier Berater
für GJC & MATHEMA 42+1 Jahre jung, bekennender Bassist, Blogger & Codesemiotiker Gestartet 1986, seit 1998 in zahlreichen IT-Projekten Mache mit bei: JCP (JSR-260 Javadoc-Update), Cuba, Oracle TechNet,
MotoCoder, Apple DevCon, Bea Dev2Dev & Arch2Arch
Andreas Kock Senior Consultant bei der GJC 36 Jahre alt, elektronische Musik & überzeugter "Foto-Graf" Gestartet 1992 als Softwareentwickler, später Projektleiter Seit 7 Jahren als QM & QS Berater unterwegs
Inhalt
19.04.08 Folie 4 www.gjc-quality.com
Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse
3.1 Sourcecode-Only-Tools3.2 Bytecode & more
4. Last words about Integration
19.04.08 www.gjc-quality.com
Gnädinger & Jörder ConsultingGJC bietet seit 1991 umfassende Beratungsleistungen in den
Bereichen Projektbegleitung und Qualitätssicherung von
Optimierungs- und IT-Projekten.
Leistungsportfolio:QualitätsmanagementQualitätssicherungProzessmanagementBetriebsmanagementOrganisationsberatung
Enge Kooperation mit der MATHEMA seit 2006
Weites Tal 2, 69198 Schriesheim a.d. Bergstrasse
19.04.08 www.gjc-quality.com
Rolle der Abteilung
Fachseiten
Internet-Abteilung
Entwicklungs-Dienstleister 1
Betriebs-DienstleisterEntwicklungs-Dienstleister 2
Entwicklungs-Dienstleister n…
19.04.08 www.gjc-quality.com
5 Ebenen der IPP
Content
Applikationen & Formulare
SW-Plattformkomponenten(PA, PIF, XSL, FGen, WCMS, GSA)
SW-Basiskomponenten(BEA, Oracle, Day, u.a.)
Hardware & OS(Linux Blades)
19.04.08 www.gjc-quality.com
DE
VINT
RE
F
PR
OD
Internet Portal Platform
NAS Load Drivers Shared Config Log Server IntroscopeShared-Services
Web Presentation Layer
Cache / Proxy
Portal
CampaignServer Farm
Business Logic Layer
Portal Integration Framework
Forms GeneratorPublish & Edit
A2 A1A2 A2
Content ManagementSystem
Publish & Edit
Data Layer
Database Database Database Database
Analytics
Web
min
ing
Mo
nit
ori
ng
Go
og
le S
earc
h A
pp
lian
ce
Inhalt
19.04.08 Folie 9 www.gjc-quality.com
Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse
3.1 Sourcecode-Only-Tools3.2 Bytecode & more
4. Last words about Integration
19.04.08 Folie 10 www.gjc-quality.com
DevQS bedeutet ...
... Partner des Architekten, des Release-Managers, der FachQS und der Entwickler sein
... Standards für CodeQuality, Security, Performance setzen ... Stärken und Schwächen einer Architektur für potentielle
Refactorings auffinden und bewerten ... eine gute Nase, um den Code der riecht aufzuspüren ... Integration der verschiedener Testvorgehen vorantreiben ... Täglicher Kampf gegen Systementropie, um
das System agil zu halten
In der DevQS sorgst Du für den
Quality In <> Quality Out Effekt
im Entwicklungsprozess
19.04.08 www.gjc-quality.com
QS-Phasen
SpezifikationAM / Projekt
Realisierung
FachlicheAbnahme
BetrieblicheAbnahme
Entwicklungs-QS
Go-Live
Betrieb
„Komponenten“-Abnahme
RtP-Prozess
Quality In Quality Out
19.04.08 Folie 12 www.gjc-quality.com
Quality In <> Quality Out
Quality In:
Widerspruchsfreie, vollständige Anforderungen inkl. erster belastbarer Testfälle
Abnahme der AnforderungAnalyse und Verteilung gefunder Issues aus
Ticket-System(en)Problem-, Incident- und Risikomanagement
Bewertung der IT- und UmsetzungskonzepteUnterstützung bei Aufwands- und Releaseplanung
19.04.08 Folie 13 www.gjc-quality.com
Quality In <> Quality Out
Quality Out:
Eingelieferten Komponenten des Dienstleisters abnehmen Reifegrad der Code- und Dokumentations-Qualität darstellen Metriken vergleichbar machen …
… zwischen Packages und Systemen … über die Release-Zyklen
Testabdeckungen aufzeigenSicherheitsrisiken möglichst früh erkennen & bewerten
Inhalt
19.04.08 Folie 14 www.gjc-quality.com
Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Code-Analyse
3.1 Sourcecode-Only-Tools3.2 Bytecode & more
4. Last words about Integration
19.04.08 www.gjc-quality.com
Wie wird heute funktional getestet?
IT:assertEquals(a,b);automatisiertFokus: Funktioniert
meine Methode
QS:Step1, Expected Result.ManuellFokus: Erhalte ich die
richtigen Ergebnisse
Lösung: Datengetriebener AkzeptanztestErmittlung belastbarer Daten durch Fachseite / FachQSAutomatisierungslösungen durch IT-SeiteHier passt die FIT Idee
Testdaten per Office-Tabellenweiter über den Parser von Ward Cunninghamzum Glue Code der vermittelt
vs.
19.04.08 Folie 16 www.gjc-quality.com
Funktionales Testen á la F.I.T.
Framework for Integrated Test treibt Ward Cunningham seit 2002 Lösung für Datengetriebener Akzeptanztest Trennung von Datenermittlung und Testcode
Mit Tabellen Fixtures definierenEinfach Fixture bestehen aus den Spalten
Command Target Erwartetes Ergebnis Erhaltenes Ergebnis
Fitnesse ist ein fix und fertigs Wiki-System für Akzeptanztests
19.04.08 Folie 17 www.gjc-quality.com
Die FIT-Idee mit Selenium leben
Der Anfang ist ganz einfach
Der Ausbau schnell möglich
Die Komposition sinnvoll
Ant-Integration mit eigenem Task
19.04.08 Folie 18 www.gjc-quality.com
Selenium ist mehr als nur IDE
Selenium RC (=Remote Control) Schlüssel zur Automatisierung Selenese Task für Ant
Aufruf von Suiten Umfangreich Parametrisierbar
Selenium unterstützt Out-Of-the-Box: HTML, Java, C#, Ruby, Perl, PHP & Python
Grenzen Kein Wechsel zwischen HTTP und HTTPS in einem Testfall Domainwechsel nur in Selenium IDE möglich
Highlights auf einen Blick Einfaches aufzeichnen und abspielen Feldauswahl mittels ID's, Namen und XPath Eigene Erweiterungen via user-extensions.js
Debuging mit Breakpoints Walk through Tests Autocomplete
Inhalt
19.04.08 Folie 19 www.gjc-quality.com
Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse
3.1 Sourcecode-Only-Tools3.2 Bytecode & more
4. Last words about Integration
19.04.08 Folie 20 www.gjc-quality.com
Dimensionen der Code-Analyse
Non-Functional Domains Code-Quality Performance Security
Analysestrategien (Tools & Services) Dynamische Analyse
jMeter/Loadrunner und Wily Introscope für Performance-Analyse Emma für Testcoverage
Statische Analysen (siehe Punkt 3.1 bis 3.2) Source- & Bytecode von Java Weitere Artefakte wie Ant, XSL, XML, JS, JSP, Groovy wichtig Datenbank-Schemata nicht vergessen
Metriken: Mengenbasierte Basis-Metriken Aggregierte Metriken & Anti-Pattern
19.04.08 Folie 21 www.gjc-quality.com
Die wichtigsten Basis-Metriken
Pyramide der GrundzahlenSetzt absolute Gundzahlen in vergleichbare Relationenermittelbar mit Hilfe von javaNCSS oder iPlasma
ANDC
AHIT
19.04.08 Folie 22 www.gjc-quality.com
Noch mehr Basis-Metriken
DupeCountsBei Bewertung den Kontext beachten Kosten- / Nutzen abwägenermittelbar z.B. Mit CPD, Teilprojekt von PMD
CodecoverageTestabdeckung Ermittelbar mit cobertura oder Emma JavaDoc-Abdeckung mit doccheck
Dependecies (Class, Package & JAR)Alarm bei zyklischen AbhängigkeitenErmittelbar mit jDepend & jarAnalyzer
19.04.08 Folie 23 www.gjc-quality.com
QBench Anti-Pattern
QBench = Anti-Pattern Katalog des Fraunhofer Institut52 Anti-Pattern aus den Bereichen
Architektur, Design und Coding z.B. mit Sissy ermittelbar
QBench-Reifegrade QBL1: Rudimentary QBL4: Advanced QBL2: Basic QBL5: Complete QBL3: Extended
Zuordnung zu wichtigen ISO 9126 Qualitätseigenschaften: Analysierbarkeit Modifizierbarkeit Stabilität Prüfbarkeit Austauschbarkeit Zeitverhalten Verbrauchsverhalten
19.04.08 Folie 27 www.gjc-quality.com
Web of Design-Disharmonies
Prof. Marinescu11 zentrale Anti-Pattern
im KontextHohe Kongruenz
zw. Marinescuund QBench
Ermittelbar mitiPlasma / Sissy
19.04.08 Folie 28 www.gjc-quality.com
Anti-Pattern des Fortify SCA
Über 150 sicherheitsrelevante Anti-Pattern u.a. aus den Bereichen: Cross-Site Scripting & Buffer Overflow Denial of Service & Race Condition Command- & SQL-Injection Log Forging & Session Fixation uvm.
Regelmässige Fortify-Rule Updates100% OWASP Compliant Java Open Review ProjectAusgereifte Audit-WorkbenchUnterstützt alle wichtigen Programmiersprachen
Java / JSP, Coldfusion, PHP, C, C++, C# Javascript, VisualBasic, VBScript, ASP PLSQL / TSQL
19.04.08 Folie 29 www.gjc-quality.com
Noch mehr Anti-Pattern
Findbugs-RepositoryUniversity of Maryland ca. 320 Muster in 15 Kategorienauch in Fortify integriert
PMD Rule Sets vs. CheckstylePMD mit ca. 260 Muster in 28 Rule-SetsCS mit 127 Rules in 14 FunktionsgruppenHohe Deckungsgleichheit zw. PMD und CSPMD Rule Sets sind imho besser ...
... Out-Of-The-Box nutzbar ... zwischen Projekten vergleichbar
19.04.08 Folie 30 www.gjc-quality.com
SCA, The Big Picture
auch XSL,JS, PL/SQL
u.a.
auch für andere Tools
nutzbar
Das Prinzip gilt z.B. auch
für Fortify
Alternative Persitenz-
Mechanismen, wie XML denkbar
(c) Fraunhofer Institut
Inhalt
19.04.08 Folie 31 www.gjc-quality.com
Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse
3.1 Sourcecode-Only-Tools3.2 Bytecode & more
4. Last words about Integration
19.04.08 Folie 32 www.gjc-quality.com
Starke Werkzeuge für ...
... Statische Code-Analyse JavaNCSSCPD / PMDSissy QBenchFortify SCA ($)
DEMO
19.04.08 Folie 38 www.gjc-quality.com
Starke Werkzeuge für ...
... DocletingXHTML-Doc vs. JavaDocDocCheckXSLDocOraDocletServletDoclet
DEMO
Inhalt
19.04.08 Folie 40 www.gjc-quality.com
Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse
3.1 Sourcecode-Only-Tools3.2 Bytecode & more
4. Last words about Integration
Inhalt
19.04.08 Folie 49 www.gjc-quality.com
Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse
3.1 Sourcecode-Only-Tools3.2 Bytecode & more
4. Last words about Integration
19.04.08 Folie 50 www.gjc-quality.com
Glean ist Ant
Mit Ant Test-Suiten integrierenGlean ein ausgereifter Ansatz
Factory System-PropertiesLokale System-Properties
Allgemeine Tool-PropertiesLokale Tool-Properties
Durchlauf-Spezifische PropertiesDutzende von Tools bereits „Vor-Integriert“Einfache Integration eigener Tools schnell möglich
19.04.08 Folie 51 www.gjc-quality.com
Wie sag ich’s wem am Besten?
Zusammenfassung aller ReportsMit XSLT nach HTML ...
... mit gemeinsamem CSS ... einfacher Navigation ... zum CQM-Portal
Herausforderungen:Entwicklung: Verlinkung zu Quellcode und BackgroundManagement: mehrdimensionale Aggregationen
19.04.08 Folie 54 www.gjc-quality.com
Weiter geht‘s mit ...
Cruise-ControlMehr als nur “Build-Server”Continous Testing & System-Checking via GleanDaily-, Integration-, Release-Build & TestingReporting & AlarmingDeploy-Targets:
Development & IntegrationReference & Production
Fernziel: Maven ab Version 2
Inhalt
19.04.08 Folie 55 www.gjc-quality.com
Einleitung1. Rolle & Prozesse2. Funktionales Testen mit der IT3. Statische Code Analyse
3.1 Sourcecode-Only-Tools3.2 Bytecode & more
4. Last words about Integration