Performance/Speicherplatz-Nutzung bei Tests

Alenka87

Mitglied
Hallo zusammen,

ich bing rad dabei Tests für sehr komplexe Fälle zu schreiben. Insgesammt werden pro test so um die 50 Attribute abgefragt. Ist ne fusselige Geschichte :eek:

So habe ich angefangen:

Java:
public MeinObjectTest{

	String attr1;
	String attr2;
	String attr3;
	String attr4;
	String attr5;
	
	Object object;
	@Before
	public void setUp(){
		object = new Object(...);
	}
	
	@Test
	public void test_FallEins(){
		daten_Fuer_Fall_Eins_Vorbereiten();
		tests_Fuer_Fall_Eins_durchfuehren();
	}
	
	@Test
	public void test_FallZwei(){
		daten_Fuer_Fall_Zwei_Vorbereiten();
		tests_Fuer_Fall_Zwei_durchfuehren();
	}
	
	private void daten_Fuer_Fall_Eins_Vorbereiten(){
		attr1 = object.getAttr1();
		attr2 = object.getAttr2();
	}
	
	private void tests_Fuer_Fall_Eins_durchfuehren(){
		vergleiche(vergleichValue1, attr1);
		vergleiche(vergleichValue2, attr2);
	}
	
	private void daten_Fuer_Fall_Zwei_Vorbereiten(){
		attr3 = object.getAttr3();
		attr4 = object.getAttr4();
		attr5 = object.getAttr5();
	}
	
	private void tests_Fuer_Fall_Zwei_durchfuehren(){
		vergleiche(verlgiechValue3, attr3);
		vergleiche(verlgiechValue4, attr4);
		vergleiche(verlgiechValue5, attr5);
	}	
}

Pro test habe ich also eine Methode, die die Werte holt
Code:
private void daten_Fuer_Fall_XXX_Vorbereiten()
und dann die Methode, die Daten vergleicht
Code:
private void tests_Fuer_Fall_XXX_durchfuehren()
.

die VergleichValues sind Werte die aus einem bereits transformierten Object geholt werden, ich prüfe nur, ob nach der Transformation bestimmte Werte, die sich nicht ändern dürfen, immer noch gleich sind. (Beispiel stark vereinfacht) Und es gibt wie gesagt so ca. 50 von solchen Werten.

So wie meine Tests jetzt aussehen, werden ja wirklich viele String angelegt:

Java:
public MeinObjectTest{

	String attr1;
	String attr2;
	String attr3;
	String attr4;
	String attr5;
             ...
             String attr50;

}

Und dann kam der Gedanke: Das muss sich doch negativ auf Speicherplatz und Performance auswirken, oder?
Oder ist es bei der Anzahl der Attribute nicht relevant?

Die Tests könnten ja auch so aussehen:

Java:
public MeinObjectTest{

	Object object;
	
	@Before
	public void setUp(){
		object = new Object(...);
	}
	
	@Test
	public void test_FallEins(){
		vergleiche(vergleichValue1, object.getAttr1());
		vergleiche(vergleichValue2, object.getAttr2());
	}
	
	@Test
	public void test_FallZwei(){
		vergleiche(verlgiechValue3, object.getAttr3());
		vergleiche(verlgiechValue4, object.getAttr4());
		vergleiche(verlgiechValue5, object.getAttr5());
	}
}

ist vielleicht blöde Frage... aber ich merk grad dass mir etwas an Grundwissen fehlt :oops:;(...
 

Alenka87

Mitglied
Was ich noch hinzufügen wollte/sollte:
bei der Idee, die Test-Methode auf zwei einzelne zu splitten - 1)vorbereiten und 2)durchführen - habe ich an CleanCode (Regel: pro Methode nur eine Abstraktionsebene) gedacht
 
M

maki

Gast
Und dann kam der Gedanke: Das muss sich doch negativ auf Speicherplatz und Performance auswirken, oder?
Solche Gedanken solltest du ignorieren solabnge du keine Probleme mit der Performance hast.

bei der Idee, die Test-Methode auf zwei einzelne zu splitten - 1)vorbereiten und 2)durchführen - habe ich an CleanCode (Regel: pro Methode nur eine Abstraktionsebene) gedacht
das finde ich gut, allerdings bestehen Test aus 4 Schritten:
1. Setup
2. Exercise
3. Validate
4. Teardown

Kann dir das Buch "xUnit Test Patterns: Refactoring Test Code" sehr empfehlen.

Du nutzt ja schon "Custom Assertions", allerdings heissen die bei dir nicht so ;)
Deutsche Begriffe gehen gar nicht in Quellcode, führt nur zu hässlichem Denglish...
 

DerSchokoBär

Aktives Mitglied
Legst du für jeden einzelnen Fall einen manuellen String an?
Java:
    String attr1;
    String attr2;
    String attr3;
    String attr4;
    String attr5;

und legst für jedes Objekt eine eigene Methode (getAttr1(), getAttr2(), ...) an?
Java:
        attr1 = object.getAttr1();
        attr2 = object.getAttr2();
 

Alenka87

Mitglied
@Maki:
ich nutze schon englische Bezeichnungen, das hier war ehe so Pseudocode auf die schnelle:)
Danke für den Buchtip, ich werd mich weiter in die Richtung informieren, da ich denk, das dies nicht meine letzten tests sind.

@DerSchokoBär:

Mal angenomen, mein Objekt ist "Person":

Java:
public class Person{

	String name;
	String vorname;
	String namenszusatz;
	String tital;
	/usw.
	
	Adresse adresse;
	Job job;
	Familie familie;
	/usw.
}

public class Adresse{
	String stadt;
	String land;
	String strasse;
	String hausnummer;
	String plz;
}

public class Job{
	String bezeichnung;
	String abteilung;
	String position;
	Person vorgesetzter;
	Adresse firmenanschrift;
}

public Familie;
	Person partner;
	Person mutter;
	Person vater;
	Job mutter;
	Job vater;
	Job partner;
	Andresse eltern;
}

Im ersten Testfall frage ich nur die persönlichen Daten ab: Name, Nachname, Adresse
Im zweiten Testfall frage ich die Informationen über den Job, dann zum Schluss alles über die Familie usw. :

Java:
...
@Test
public void test_persoenlicheInfo(){...}

@Test 
public void test_adresse(){...}

@Test
public void test_jobInfo(){...}

@Test
public void test_partnerPersoenlicheInfo(){...}

@Test
public void test_partnerJobInfo(){...}

@Test
public void test_mutterPersoenlicheInfo(){...}

@Test
public void test_mutterJobInfo(){...}


@Test
public void test_vaterPersoenlicheInfo(){...}

@Test
public void test_vaterJobInfo(){...}



...


oh jetzt ist mir der Groschen gefallen.... ist brauche doch keine tausend Testfälle, das kann doch alles in einem Testfall getestet werden, wenn das objekt sich nicht verändert?!?!?!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
H Watson-Crick-Complement Performance Allgemeine Java-Themen 18
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
B Performance Messungen Allgemeine Java-Themen 4
J Threads verbessern die Performance NICHT ? Allgemeine Java-Themen 8
X Performance für Tomcat / Apache optimieren Allgemeine Java-Themen 2
I Performance - JDBC UPC PoolDataSoure Allgemeine Java-Themen 0
E Lambda filter performance Allgemeine Java-Themen 2
D Performance-Probleme mit Joda-Time Allgemeine Java-Themen 3
A Jasper Report Performance bei PDF erzeugen Allgemeine Java-Themen 0
A Best Practice Variablen vertauschen - Performance Allgemeine Java-Themen 1
R DBUnit Performance Probleme Allgemeine Java-Themen 0
P Performance: super explizit erwähnen oder weglassen? Allgemeine Java-Themen 5
S starke performance probleme des forums Allgemeine Java-Themen 10
C Performance Tips Allgemeine Java-Themen 13
R Java Performance testen Allgemeine Java-Themen 18
StrikeTom Java Performance Fragen Allgemeine Java-Themen 5
V Performance steigern Allgemeine Java-Themen 7
D Reflection-Performance Allgemeine Java-Themen 7
M Einfluss von Caching auf die Performance (große Arrays) Allgemeine Java-Themen 24
R Collections Performance einer HashMap Allgemeine Java-Themen 26
i<3java [Groovy/Grails](oder auch java) Mögliche Performance Probleme bei Mailversendung Allgemeine Java-Themen 2
D Performance Objektallokation Allgemeine Java-Themen 28
J Java Performance nicht nachvollziehbar Allgemeine Java-Themen 3
I Library für High Performance Mime Type Erkennung Allgemeine Java-Themen 8
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
M Performance Allgemeine Java-Themen 6
M Performance Allgemeine Java-Themen 5
E Performance website download Allgemeine Java-Themen 13
MQue Performance Methodenaufruf - if Abfrage Allgemeine Java-Themen 19
hdi Was frisst in meinem Programm den Speicher / verschlechtert die Performance Allgemeine Java-Themen 11
J Performance von Java GUI-Anwendungen Allgemeine Java-Themen 2
U Java Performance im Vergleich zu C++ in speziellem Anwendungsfall Allgemeine Java-Themen 6
S Performance und Function Call Depth Allgemeine Java-Themen 6
H Performance Vorteil durch Wechsel der JVM? Allgemeine Java-Themen 6
A Performance: byte[] in byte[][][] konvertieren Allgemeine Java-Themen 2
T Performance ArrayList#remove Allgemeine Java-Themen 8
ARadauer Performance Pptimierung -Lesen/Schreiben Allgemeine Java-Themen 10
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
M Listener und Performance Allgemeine Java-Themen 9
P Performance: Ziehen ohne Zurücklegen (große Datenmenge) Allgemeine Java-Themen 10
D Performance: ArrayList vs. Array vs. "Eigene Liste&quot Allgemeine Java-Themen 8
M nichtreferenzierte Objekte auf NULL setzen -> Performance Allgemeine Java-Themen 4
S Ursache für schlechte Performance Allgemeine Java-Themen 2
L Java Performance Check Tool Allgemeine Java-Themen 3
S Performance von Comparator Allgemeine Java-Themen 3
egrath Performance Problem mit File-I/O Allgemeine Java-Themen 6
S Performance Problem Allgemeine Java-Themen 11
X Java Performance auf Sun Systemen bzw. generell Allgemeine Java-Themen 4
T Performance String-Operationen und StringBuffer (1.4und 1.5) Allgemeine Java-Themen 18
P miese performance bei nem BufferedImage + repaint :( Allgemeine Java-Themen 6
T Performance-Grundlagen Allgemeine Java-Themen 4
G Performance Problem bei der Übertragung Server zum Client Allgemeine Java-Themen 3
V Performance Leck finden Allgemeine Java-Themen 3
T Tile Game Performance Allgemeine Java-Themen 32
M Performance enorm langsam Allgemeine Java-Themen 26
F Performance von Reflection vs Statisches Coden Allgemeine Java-Themen 4
M Performance: Java zu C/C++ bei Datenbankanwendung Allgemeine Java-Themen 3
Y unnecessary cast & Performance Allgemeine Java-Themen 29
conan2 Performance von paint() Allgemeine Java-Themen 2
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2
F Bilder als "Thumbnails" laden - Performance Allgemeine Java-Themen 6
S Java3D Performance optimieren Allgemeine Java-Themen 5
F Wenn ihr Performance wollt nehmt C++ Allgemeine Java-Themen 39
N Performance-Test (Geschwindigkeit von Methoden vergleichen)? Allgemeine Java-Themen 4
S Performance Test mit JMeter Allgemeine Java-Themen 2
T Performance Allgemeine Java-Themen 8
J Anfängerliste für gute Performance? Allgemeine Java-Themen 3
Luma Performance-Problem mit RandomAcces File Allgemeine Java-Themen 4
I Performance bei "String <-> Byte"-Umwandlung Allgemeine Java-Themen 4
I Performance-Probleme bei Schleife Allgemeine Java-Themen 3
C Performance von FOR Schleifen Allgemeine Java-Themen 25
C Performance Vergleich, Java vs. Tcl/Tk Allgemeine Java-Themen 3
Y Auszuführendem Projekt mehr Speicherplatz zuweisen Allgemeine Java-Themen 3
V Speicherplatz eines Strings? Allgemeine Java-Themen 12
L Speicherplatz eies RIESEN objektes direkt wieder freigeben Allgemeine Java-Themen 5
YohnsonM String - Aufteilung und Nutzung einzelner Chars Allgemeine Java-Themen 7
Blender3D Linzensen OpenJDK ist die kommerzielle Nutzung kostenfrei? Allgemeine Java-Themen 3
I Java Optional: Nutzung als Getter? Angenommen? Allgemeine Java-Themen 11
J IndexOutOfBoundsException bei der Nutzung der Klasse Message von mime4j Allgemeine Java-Themen 5
J Erste Schritte Kommerzielle nutzung eigener Javaapplets auf der Homepage Allgemeine Java-Themen 2
N iText-Nutzung (Version 2.1.7) in kommerzieller Website Allgemeine Java-Themen 8
G Generics - W.card unter Nutzung von Annotationsklasse? Allgemeine Java-Themen 6
M Verbieten Applets die Nutzung von Commons Logging? Allgemeine Java-Themen 7
D Kommerzielle Nutzung Allgemeine Java-Themen 4
G Lizenzgeführen bei kommerzieller Nutzung der NetBeans IDE? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben