· oop 2006 martin heider & andreas oetjen 19.01.06 15 • >? -1 ˝ ˘ ’ verwendete...
TRANSCRIPT
OOP 2006Martin Heider & Andreas Oetjen
19.01.061
����������������� ���������������
������������������ ��������������� �
OOP 2006Martin Heider & Andreas Oetjen
19.01.062
• ��� �������� ��������������������
• ��������������������
• �������������������������
• ��������!�"
• #�$��%&������������
• '�����(�����
Themen/Agenda
OOP 2006Martin Heider & Andreas Oetjen
19.01.063
Ausgangssituation
OOP 2006Martin Heider & Andreas Oetjen
19.01.064
• )�������)��������"
Ausgangssituation
*+������,-��.���� ��/�������������������������
����
0����� ��/��� ��������
OOP 2006Martin Heider & Andreas Oetjen
19.01.065
• )-� �������� ����������������������
• 1���������������� �������������������� �
• 1��������+������$�1�������������
• 1���+�������-����������������������
• ����������� ���� �#��������
• �$�������������#�������� ���+���������
• 2��������������������3������
• ��������������������4�������� �������
Ausgangssituation
OOP 2006Martin Heider & Andreas Oetjen
19.01.066
• �����������,�������������"
• 5���� ����6���3������5����� ����������
• '7� ������������������������4�������
• &������$��
• ���������������������������� � 3�8���088
• +��������� �����������������
• 1��������������9�4����1����� ��:
• ������ ��;�����-�������/����(�������
• '���� ��<������� ������
• �������
• +������������9����� 1����� ��:
• 1������������������
Ausgangssituation
OOP 2006Martin Heider & Andreas Oetjen
19.01.067
• ;������ ������������� ��������
Ausgangssituation
HTTP
PUTGETDELETE
TrackWorld Server
Presentation(Servlet)
PersistenzBusiness Logik
ActionManager
EventBroker
Access
SQLServer
MySQL
Unzip /Zip
Service
Filesystem
Anhang
HTTP
ZIPXML<tw:request><tw:action>...</tw:action></tw:request>
SQL-Generator
DBMSMapper
WebClient
OOP 2006Martin Heider & Andreas Oetjen
19.01.068
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.069
• 1��=���������"
• /�����/����� �-����������� ��1��������
• >?���� �-�1���������� ��'��������
• <?@�-������� ��;�����-������/���A�������
• ����$��/���/�3����� ?�����
• > �� ������-��� �� �������
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0610
• /�����/����� �-����������� ��1���������������
• ���7��� �����+����������3�
• 5�����&B���
• 5�����5�������
• 5�����&����
• ���������������������������
• 5������������������
• @����B��� ��������������
• ������������������
• 5������������3�,���������������� ��,������
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0611
• /�����/����� �-����������� ��1���������������
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0612
• /�����/����� �-����������� ��1���������������
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0613
• >?���� �-�1���������� ��'��������
• ������������6=��<����<�'@�<�>@5/��/<�"
• ���7��� ��3������������-�������3��� ������,� ���
• C����� �������� ���� �����A�������#�����
• ���� �������������������� �<�����
• ,�����������������D�'�
• �2�����
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0614
• >?���� �-�1���������� ��'��������
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0615
• >?���� �-�1���������� ��'��������
Verwendete Testumgebung
Threadgroup
Controller
Listener
Testplan
Config
Sampler
Timer
Assertions
Pre-/Postprocessors
OOP 2006Martin Heider & Andreas Oetjen
19.01.0616
• <?@�-������� ��;�����-������/���A�������
• #����
• ����������'���$���������
• ����/���
• �����������/���
• @����$�����/���9/��B<����@��� ���:
• <���1� �-�3��� ������1@��9$E5E� �����:
• ������������,�����,�������
• �����,�����>�3�����D<���������������
• ,�����������������D�'�
• �2�����
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0617
• <?@�-������� ��;�����-������/���(�������
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0618
• ����$��/���/�3����� ?�����
• ����������������/�3����� )����
• +������?�������5�� ��&����
• 5B�� ���1������������
• ��������B
• ������
• ��������������6��4��D?'�=�?'
• ?���� 3�3��� ������/�3����� �������
• �2�����
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0619
• ����$��/���/�3����� ?�����
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0620
• > �� ��-��� �
• ?�����?���������-�5�����
• &�������������
• ������ ���assertEquals�assert(Not)Null�assert(Not)Same
• Test�TestCase�TestSuite
• ����,���
• �2�����
• ������F#�������
• �������� ���������������2������3����
• @Test�@Before9/����:�@After9/����:�@Ignore
• �������� ���4�� ����4 ������ ���<��������
• �����,��� ��������
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0621
• 1��2��������
• >�3�2/��
• ���B�� � ��?� ���G� ��
• =�('@51?����B@������
• �����������$���
• #��H#��2����
• )���
Verwendete Testumgebung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0622
Tests und Testautomatisierung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0623
• ;����� ��������$�����
Tests und Testautomatisierung
������ ��������
������ ����� ����
������ �������������� �����
������ ���������������
���������������
���������
OOP 2006Martin Heider & Andreas Oetjen
19.01.0624
• ������$�������)���� ����� ������-�/���I������
Tests und Testautomatisierung
������ ���� �����
������ ����� �����
������ �������������� � �����
������ ����������������
���������������
��������� ���������������� !����
������������ "�� !����
����� ������ �"�������#���������
OOP 2006Martin Heider & Andreas Oetjen
19.01.0625
• ;����� ��������� ��-����
Tests und Testautomatisierung
�������� ���
��� "��
���������� �����
�����$
%������ �����
%������� �����
%���������������� � �����
%������������������
��&�����������
'��������'����
���������������
���������
OOP 2006Martin Heider & Andreas Oetjen
19.01.0626
• ������� ��-������3��������)���$����
Tests und Testautomatisierung
���������� �����
�����$
%������ �����
%������� �����
%���������������� � �����
%������������������
��&�����������
'��������'����
(����)*++'
*++'
�+�)(���,���
(+����)*++'
(+����)*++'
(����)*++')(+����)(���,���)�+�
�������������)'��
OOP 2006Martin Heider & Andreas Oetjen
19.01.0627
• 1��������������9�4����� ����������:
• �������
• @����������������3���� ����������
• ���� ����3�>?�����<����
• ���� �����3� �������������>?���� ��������
• �����������>?���� �2������
• �����������������������������/�����/�����
• 2��$�
• 2� ����3���3�� �����������3���/����3���������J�
• C������� ������3��/������7�����#�����������
• �� �������������������-��������I������
Tests und Testautomatisierung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0628
• ������ ��;�����-������/����(�������
• �������
• ���� ����3�<?@�>2/��H�??��/�����/�����
• ��� ������3�<?@����� �����<�������
• 1���������������<�������3�/�����-��??�
• ������������2������� �-�G��������
• ������������������������������/������/�����
• 2��$�
• �����-�$��$���� ��3�
• #������/����������/��B�<���� /���
• ;����� ���3�/���� C����'���
• 5�������������������� ���
Tests und Testautomatisierung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0629
• '���� ��<������� ������
• �������
• ���������3�'����������
• �B�����$���3�������
• ����������������B�
• �������������������B��-���&��������
• '�����������>?���� ���������-�C 1�������
• <������� �������-���$��� ���������������
• ��������/�����/����� �����1�������������
• 2��$�
• �������$��5���������������������
• <������� ��)�����-����3���� ����������
Tests und Testautomatisierung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0630
• �������9������ ����������:
• �������
• > �� $��������$������ ��������� �� ���
• ���B?� ��?� ���G� �� $���������������$���� �� ���
• ��������?����B�@������
• �������3�/���$��������������������
• 2��$�
• @�������������������� ���
• 5������'����������������3�#�����
Tests und Testautomatisierung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0631
• �������5��������������������
• 1�� �������������
• ?��/�����/����� ������������������
Und so läuft‘s…
XMLahead
OOP 2006Martin Heider & Andreas Oetjen
19.01.0632
Java NCSS Ant-Task
<taskdef name="javancss" classname="javancss.JavancssAntTask"/>
<target name="run-jncss"><property name="oop.programs.dir" value="C:/projects/oop2006/programs" />
<javancss srcdir = "src"generateReport = "true"abortOnFail = "false"outputfile = "javancss_metrics.xml"format = "xml"includes = "**/*.java"excludes = "**/*Test.java" />
<xslt in = "javancss_metrics.xml" out = "javancss_metrics.html"
style = "${oop.programs.dir}\javancss21.41\xslt\javancss2html.xsl" /></target>
OOP 2006Martin Heider & Andreas Oetjen
19.01.0633
PMD Ant-Task
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"/>
<target name="run-pmd">
<property name="oop.programs.dir" value="C:/projects/oop2006/programs" />
<pmd><ruleset>basic</ruleset>
<formatter type = "xml" toFile = "pmd-report.xml"/>
<fileset dir = "src"><include name = "**/*.java"/>
</fileset></pmd>
<xslt in = "pmd-report.xml" out = "pmd-report.html" />
style = "${oop.programs.dir}\pmd-3.4\etc\xslt\pmd-report-trackworld.xslt" /></target>
Weitere Regeln z.B.strictexceptiondesignunusedcodefinalizerssunsecure
OOP 2006Martin Heider & Andreas Oetjen
19.01.0634
Emma Ant-Task – Instrumentierung
<taskdef name="emma" resource="emma_ant.properties" />
<target name="run-emma-instrument">
<emma enabled="true" >
<instr instrpath = "deploy/lib/belox-trackworld.jar"outfile = "deploy/lib/coverage.em"mode = "overwrite">
<filter excludes = "*Test *.test.*" /></instr>
</emma></target>
OOP 2006Martin Heider & Andreas Oetjen
19.01.0635
Emma Ant-Task – Reporting
<target name="run-emma-report"><emma enabled="true" >
<report sourcepath = "src"sort = "+block,+name,+method,+class,+line"metrics = "method:70,block:80,line:80,class:100">
<infileset dir="deploy" includes="*.em, *.ec" />
<html outfile = "coverage.html"depth = "method"columns = "name,class,method,block,line" />
</report></emma>
</target>
Weitere mögl. Elemente:txtxml
OOP 2006Martin Heider & Andreas Oetjen
19.01.0636
JMeter Ant-Task
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<target name="run-jmeter">
<property name="oop.programs.dir" value="C:/projects/oop2006/programs" />
<jmeter jmeterhome = "${oop.programs.dir}/jakarta-jmeter-2.1.1"resultlog = "JMeterResults.jtl">
<property name = "twServerIp" value = "localhost"/><property name = "twServerPort" value = "80"/>
<testplans dir = "jmeter" includes = "*.jmx"/></jmeter>
<xslt in= "JMeterResults.jtl" out = "JMeterResults.html" />
style= "${oop.programs.dir}/jakarta-jmeter-2.1.1/extras/jmeter-results-detail-report.xsl" />
</target>
OOP 2006Martin Heider & Andreas Oetjen
19.01.0637
CruiseControl Konfiguration
<cruisecontrol>
<property name="cchome"value="..\..\programs\cruisecontrol-2.3.1" />
<project name = "TrackWorld" buildafterfailed = "true">
<modificationset quietperiod ="5"requiremodification ="true">
<cvs localWorkingCopy="projects/TrackWorld"/></modificationset>
<schedule interval = "30"><ant anthome = "${cchome}\apache-ant-1.6.3"
buildfile ="build.xml"target ="deploy test"uselogger ="true"usedebug ="false" />
</schedule>
<log><merge dir="unittest"/>
</log>
<publishers><artifactspublisher
dest = "artifacts/TrackWorld"file = "JMeterResults.html" />
</publishers>
</project>
</cruisecontrol>
OOP 2006Martin Heider & Andreas Oetjen
19.01.0638
Fazit / Zusammenfassung
OOP 2006Martin Heider & Andreas Oetjen
19.01.0639
Fazit / Zusammenfassung
Schneller Aufbau einer TestumgebungOhne Installationsaufwand (Copy-Deployment)
AutomatisierbarkeitANT / CruiseControlKontinuierlicher Build, Test, Review
Offene Formate für ReportingXSLT-Templates bereits vorhandenWeitere sind im Web verfügbar
Unterstützung nahezu aller Source Control SystemsPermanentes Review
Kleinere BugsTiefe Verzeichnisstruktur verwirrt CruiseControlXSLT-Stylesheets nicht immer sauber programmiert
OOP 2006Martin Heider & Andreas Oetjen
19.01.0640
Weiterführende Links und Quellen
- 5- ���- ���������&���*��.� "�������(���� �/�)/���"��������)
����"� 0�����1223- ����.�����������(����)(����������")����"� 0�����1223- (1**!*��.� "�������4���!���� �!����)+������� "� ��� 5������*��� �)
���"����0�����)12267�������������8
- '���- �����������������955 ����� ������:���� ������:���- (+���� ����955;�"����:��� ��:���5;�����- *++'����955����:���� ������:���- �+�����955���:���� ������:���- (���� ����955...:;����:���- (���,�������955...:" ���:��5 ������5;���5;���� ��- /�����955���: 1: �� ���/������ ����955��������:���
- �������- �����%���� ����9<'���������������/������������� (���=
����955...: �:���:���5>;������5������5�����26:���
OOP 2006Martin Heider & Andreas Oetjen
19.01.0641
Fragen?Aber gern …
Martin HeiderInfomar [email protected]
andreas oetjenbelox software gmbh