Visuelle Regressionstests
HK Hamburg Abschlussprojekt
Sommer 2016
Jan Dahlke
15.07.2016
zur Person
Jan Dahlke
das Unternehmen t8y.com GmbH
Tochter der Omnicom Media Group - global führendes Kommunikationsunternehmen
zunächst technische Abteilung bei DDB Tribal
Gründung von t8y.com in 2011
Webseiten + Content Managment Systeme mit Java und Magnolia
E-Mail Marketing
Inhalt der Präsentation
was sind visuelle Regressionstests?
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Nur nach außen sichtbares Verhalten fließt in den Test mit ein.
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Ablaufplan VRT:
was ist VRT // Grenzen des Verfahrens // Workflow// Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Grenzen der Testbarkeit des angewandten Verfahren:
Auch bei nur geringen Abweichungen kann ein Fehler gemeldet werden. Hier gilt es den MSE (Mean-Square-Error) auf die Bildgröße hochzurechnen und durch Erfahrungswerte eine gute Toleranzschwelle zu definieren.
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Baseline
Anwendung VRT
Der Testfall
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Umstellung des Backends [Automobilherstellerxyz-Seite] von Magnolia 4.5 auf Magnolia 5.4.5, aber kein Etat für Frontend.
mehr als 2400 Unterseiten, die über URLs erreichbar waren
Die V5.4.5 wird nach Fertigstellung als Testline betrachtet, die gegen die Baseline Screenshots gehalten werden.
Die V4.5 wird als Baseline definiert
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
das Tool - verwendete Technologien (Frameworks)
die konkrete Nutzung des Tools:
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
node start.js <Befehl>Schema
Befehlssatz:
node start.js createBaseline
node start.js createTestline
node start.js fullReport
node start.js compareImage
node start.js helpDas Tool wendet sich an Entwickler und Tester, die mit dem Umgang des Command Line Interface vertraut sind.
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
node start.js createBaseline
node start.js compareImage
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Codebeispiele:
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
start.js - der Einstiegspunkt
var caseDiffer = function(){
var arg = process.argv[2];
switch(arg)
{
case 'createBaseline':
//*
case 'createTestline':
//*
case 'fullReport':
//*
case 'compareImage':
//*
case 'help':
//*
default:
console.log('your input does not match any commands. Try typing: node start.js help');
}
}();case 'fullReport':
if(checkDirIsEmpty()){
console.log('fullReport');
walk.walks(base).then(function(res){
console.log(res);
for(var val of res){
compare.compareImgFullReport(path.join(val.base), path.join(val.test));
}
});
}
else{
console.log('Either the directory of base or test is empty.\nConsider to run createBaseline or createTestline.');
}
break;case 'compareImage':
console.log('compareImage');
if(checkDirIsEmpty()){
console.log('createDifferImg');
walk.walks(base).then(function(res){
//namecounter
var count = 0;
for(var value of res){
compare.createDifferImg(value.base, value.test, count);
count = count+1;
}
});
}
else{
console.log('Either the directory of base or test is empty.\nConsider to run createBaseline or createTestline.');
}
break;//own modules imports-------------------
var walk = require('./js/walker.js');
var compare = require('./js/compare.js');
var help = require('./js/help.js');
var screens = require('./js/screens.js');
//--------------------------was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
compare.js - die Vergleichsmethode
function createDifferImg(baseImg, newImg, count){
var resultPathMade = ''+resPath+resName+count+resEnding;
var options = {
file: resultPathMade,
highlightColor: 'yellow'
}
gm.compare(baseImg, newImg, function(err, isEqual, equality, raw){
if(err){
throw err;
}
// !=0 instead trying to approach the float(->discuss in theory)
if(equality != 0 ){
gm.compare(baseImg, newImg, options, function(err){
if(err){
throw err;
}
console.log(color.red('es trat eine Abweichung auf zwischen '+baseImg+' und '+newImg));
console.log(color.yellow('Das Differenzbild liegt in: ./results'));
});
}
else{
console.log(color.green('es gab keine Abweichung zwischen '+baseImg+' und '+newImg));
}
})
};Grenzen des Tools:
bei v4.5 waren alle Zustände der Seite über URL erreichbar:
URL mapping in baseline.txt und testline.txt ist zwingend notwendig!
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
http://autoherstellerxyz-seite/it/it/start/online-devices.html#tab/open/app-connect
nicht aber bei v5.4.5, weil legacy Code überflüssig wurde
--> das Testverfahren bricht!
Lösungsansätze:
Projektseitige Anpassungen:
Javascript basierte window.history() & window.location() URLs generien
Testseitige Erweiterung (= Neuausrichtung):
Implementation des Page Object Models
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Zusammenfassung:
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
> -> Falschfarbenbilder
Page Object Model andenken
URL's sind notwendig, um alle Zustände abzubilden
Vor Projektbeginn den Einsatz eines solchen Programms abwägen.
"Das Programm VRTT kann nur als Hilfsmittel dazu gelten, eine große Anzahl von Seiten und Unterseiten, repräsentiert durch Bilder, miteinander zu vergleichen. "
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Quellen:
was ist VRT // Grenzen des Verfahrens // Workflow // Testfall // das Tool - Technologien // Tool - Nutzung // Codebeispiele // Grenzen des Tools // Zusammenfassung // Quellen
Bilder:
Texte:
Spillner, Andreas / Linz, Tilo: Basiswissen Softwaretest, Heidelberg, dpunkt.Verlag, 5.te Auflage, 2012
Ressourcen:
Darstellungsumgebung - https://slides.com/
Vielen Dank für Ihre Interesse und Ihre Aufmerksamkeit.
Ergebnisse im Überblick
baseline: Beispiel Projekt
testline: Beispiel Projekt
results: Beispiel Projekt