Qualitätssicherungskonzept

Ähnliche Dokumente
Qualitätssicherungskonzept

Einführung in Javadoc

Coding Standards Brandbox

1. Zeilenendkommentare: // geklammerte Kommentare: /*... */ 3. Dokumentationskommentare: /**... */

Programmieren I. Dokumentation mit Javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Übung 1: Von einer naiven JavaScript Applikation zu einem modernen Front-End Build:

Einstieg in die Informatik mit Java

Qualitätssicherungskonzept

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Informatik für Elektrotechnik und Informationstechnik

Einführung in die Informatik Tools

Frontend-Entwicklung mit JavaScript

3. Grundregeln für die Java-Programmierung

JS goes mobile: Eine Übersicht. Frederik von Berg w11k / thecodecampus

Multivariate Tests mit Google Analytics

Web-Testen mit JUnit und HttpUnit. Kai Schmitz-Hofbauer Lehrstuhl für Software-Technik Ruhr-Universität Bochum

JavaScript und das Document Object Model

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

VB.net Programmierung und Beispielprogramm für GSV

Erlernbarkeit. Einsatzbereich. Preis. Ausführungsort

JUnit - Test Driven Development. Bernhard Frey, Thorsten Stratmann, Jackson Takam, Michel Müller 1

Qualitätssicherungskonzept Link Discovery

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014

ASICMS. Das einfache php-framework. Anleitung und Referenz. ASICMS Das einfache php-framework by Andreas Kasper 25. August 2007.

Swp08-6 Verantwortliche: Yundensuren, Baigalmaa. Testkonzept

PHP Code Konventionen Um einen einheitlichen Code zu generieren, der von jedem gelesen werden kann, müssen folgende Konventionen eingehalten werden.

Prinzipien der Softwareentwicklung S. Strahringer

Dokumentation zur Anlage eines JDBC Senders

Programmiertechnik II

Automatisierte Erstellung von Software-Builds und -dokumentationen. Teil 1

Entwicklungswerkzeuge

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Über mich. Daniel Bälz. Softwareentwickler (inovex GmbH) github.com/dbaelz

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: Übung WS 2014/2015. Benedikt Schumm M.Sc.

Repetitorium Informatik (Java)

Codingstandard. Softwareentwicklung Praktikum Stand:

Glossar. SVG-Grafiken in Bitmap-Grafikformate. Anweisung Eine Anweisung ist eine Folge aus Schlüsselwörtern, Variablen, Objekten,

Prozedurale Datenbank- Anwendungsprogrammierung

Systemprogrammierung: Erste Schritte (P) Das Manpage-System (P) Versionsverwaltung mit Subversion (P)

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG

Kapitel 12 Dokumentation und Zugriffsrechte

Tabellenkalkulation / Funktionen. VBA Visual Basic for Applications VBA auf einfache Art und Weise nutzen Der Makro-Recorder von EXCEL

Kurzanleitung zu XML2DB

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Seite Seite 2

Firefox Add-ons. Präsentation in WAP WS09/10 von Christoph ASCHBERGER, Andreas BERTOLIN, Robert MUTTER und Yunzhou XU

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2 Woche 9: GUI-Anbindung über JDBC

Grundlagen von Python

Dokumentation zum Projekt Mail-Adapter in SAP PI Sinkwitz, Sven Theel, Thomas

Einführung in die Cross-Plattform Entwicklung Das Intel XDK

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

FB Informatik Prof. Dr. R.Nitsch. C++ - Dokumentation. Reiner Nitsch r.nitsch@fbi.h-da.de

Java Einführung Programmcode

ab Redirector-Version 2.14

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Die Programmiersprache Go

Installation des edu-sharing Plug-Ins für Moodle

Code-Formatierung mit Artistic Style

Aktivitäten in C# /.NET umsetzen

Multimedia im Netz Wintersemester 2011/12

Software Engineering, SoSe 07, WSI, D. Huson, (Original Author: A. Zeller), 12. Juni

Erste Schritte in Java

TDD für iphone OS. xpdays Tammo Freese

visionapp Platform Management Suite Save Event Version 2.0 Technische Dokumentation

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: install.odt. Berger EDV Service Tulbeckstr.

zlib-lizenz (kompatibel zur GNU General Public License )

SCADA SOFT AG. Technische Fragen zu Wizcon (TFW035): Installation von Apache 1.3.x / 2.0.x

Eclipse 3.0 (Windows)

Es wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Programmierkurs: Delphi: Einstieg

OXID esales Dokumentation

Anleitung # 4 Wie mache ich ein Update der QBoxHD Deutsche Version

XPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015

2.4 Das erste C++-Programm *

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Objektorientierte Programmierung für Anfänger am Beispiel PHP

5 Grundlagen der Java-Syntax

Installation/Update und Konfiguration des Renderservice (v1.7.0)

Code und Qualität 2: Testing

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

.NET Code schützen. Projekt.NET. Version 1.0

11 Funktionen Vorteile von Funktionen. Leseprobe aus Access und SQL Server

pylottosimu Documentation

Testen mit JUnit. Apcon Workplace Solutions Member of itelligence. Testen von Java-Code mit JUnit. ÿstruktur eines Testfalls

Funktionen in PHP 1/7

Apache Wicket Web Framework: Reinvented the Wheel? Stärken und Schwächen: Ein Erfahrungsbericht aus drei Projekten

Einführung in die Cross-Plattform Entwicklung Zugriff auf Sensoren mit dem Intel XDK

Die Cargo Plattform bietet einen sicheren und einfachen Datentransfer mit einem modernen Web- Interface.

8. Generics Grundlagen der Programmierung 1 (Java)

Panagon Capture 3.0 Dokumentation

Installieren und Verbinden des Mac Client

Allgemein: Klassen testbar machen. 5. Mocking. Mocks programmieren. Zusammenspiel von Klassen testen

Sprout Companion. Benutzerhandbuch

UpToNet Events and Artists Installation der Testversion und Einrichten einer Demodatenbank

Bedienungsanleitung. 2. überarbeitete Auflage

Einführung in die C-Programmierung

Unit Testing mit JUnit. Dr. Andreas Schroeder

Transkript:

UNIVERSITÄT LEIPZIG SOFTWARETECHNIK-PRAKTIKUM Qualitätssicherungskonzept SPE16: Gebäude-Navigator für Leipzig 18. Juli 2016 Inhaltsverzeichnis: 0. Qualitätssicherungskonzept...S.02 1. Dokumentationskonzept...S.02 1.1. Interne Dokumentation...S.02 1.2. Quelltextnahe strukturierte Dokumentation...S.03 2. Coding Standard...S.04 3. Testkonzept...S.06 3.1. Vorbemerkung zum Test in React...S.06 3.2. Jest...S.06 3.3. Jasmine 2...S.06 3.4. Testvorgehen...S.06 3.5. Beispiel...S.06

0. Qualitätssicherungskonzept Die Qualitätssicherung dieses Projektes hält in diesem Dokument fest, wie die Dokumentation sowie die Tests zum erfolgreichen Erstellen und zur nachhaltigen Erweiterbarkeit der Software gewährleistet werden. 1. Dokumentationskonzept Die Dokumentation des Quelltexts ist eine der wichtigsten Aufgaben beim Erstellen der Tests sowie der Wartung und Erweiterbarkeit eines Softwareprojekts. Um diese Ziele zu erreichen, ist eine genaue Beschreibung der Software nötig. Dies beinhaltet die Dokumentation im Quelltext sowie einer genauen quelltextnahe strukturierte Dokumentation mit Hilfe eines geeigneten Werkzeugs. 1.1. Interne Dokumentation Die im Projekt SPE16 verwendete Skriptsprache ist JavaScript. Die Dokumentation des Quelltexts wird durch die in der Skriptsprache festgelegte Zeichenfolge ermöglicht. Diese Zeichenfolge wird im folgendem dargestellt: 1. Zum Kommentieren einer Zeile werden zwei Slashs (/) verwendet. Diese können eine Zeile auskommentieren oder aber am Ende der Zeile stehen um einen erklärenden Kommentar zu hinterlassen. //Dies ist ein einzeiliger Kommentar. 2. Weiterhin können ganze Blöcke im Quellcode eingeklammert werden. Ein Slash, gefolgt von einem Stern (*), öffnet einen Block. Zum Schließen eines Blocks wird der Stern vor dem Slash platziert. /* Dies ist ein mehrzeiliger Kommentar. */ Diese Zeichenfolge soll bei der Implementierung verwendet werden im den Quelltext intern zu dokumentieren. Vom Programmierer, der die Implementierung durchführt, ist darauf zu achten, dass der Quellcode, der nicht selbsterklärend ist, durch die oben genannte Zeichenfolge verständlich zu beschreiben ist. 2

1.2. Quelltextnahe strukturierte Dokumentation Zu der internen Dokumentation des Quelltexts wird im Rahmen des Projekts eine quelltextnahe strukturierte Dokumentation angelegt. Diese sorgfältig angelegte Dokumentation im Quelltext wird durch ein weiteres, Skriptsprachen unabhängiges, Werkzeug erstellt. Dieses Werkzeug, verwendet mit der im Projekt angewendeten Skriptsprache JavaScript, ist JSDOC. Mit diesem Hilfsmittel wird anhand einer festgelegten Syntax und Konventionen in den Kommentaren des Quelltexts eine leicht navigierbare HTML-Seite erstellt. Diese HTML-Seite beschreibt die Daten und Funktionen mit Typeninformation für Parameter oder Rückgabewerte. Die folgende Tabelle stellt einige der wichtigen Angaben in den Kommentaren dar, damit JSDOC eine quelltextnahe, strukturierte Dokumentation erstellen kann. JSDOC-Angabe @param {Typ Beschreibung des Parameters @return {Typ Beschreibung der Rückgabe @fires #[event:] @throws {Typ Beschreibung @author [] @deprecated [] Beschreibung Beschreibung eines Parameters mit Datentyp und Name. Beschreibt die Semantik der Rückgabe und den Type einer Funktion. Dokumentiert die Events, die eine Funktion emittieren kann. Beschreibt eventuell auftretende Ausnahmen (Exceptions) bei der Ausführung der Funktion. Hinterlegt Angaben zum Autor. Markiert die Funktion als veraltet mit einer optionalen Beschreibung. Diese und weitere JSDOC Angaben werden vom Programmierer in den Kommentaren eingepflegt mit dem Ziel, eine quelltextnahe, aber außerhalb des Quelltexts verfügbare Dokumentation zu erstellen. Diese dient, wie auch die interne Dokumentation, einer einfacheren Pflege und Wartung des Softwareprojekts. 3

2. Coding Standard Beim Coding Standard wird der Quelltext nach festgelegten Regeln erstellt. Durch diese Regeln wird die Softwarequalität verbessert und die Wartung und Pflege werden erleichtert. Da externe Werkzeuge nur schlecht oder äußerst eingeschränkt einen guten Programmierstil überprüfen können, trägt der Programmierer die Verantwortung, diesen Programmierstil zu erstellen. Der Coding Standard in diesem Projekt orientiert sich an dem Coding Standard von airbnb für react (https://github.com/airbnb/javascript/tree/master/react). Auf Basis dieses Coding Standards gelten z.b. folgende Regeln: 1. class extends React.Component wird React.createClass bevorzugt: class Listing extends React.Component { //... return <div>{this.state.hello</div>; statt const Listing = React.createClass({ //... return <div>{this.state.hello</div>; ); 2. Verwendung camelcase bei Props und Variablen <Foo username="hello" phonenumber={12345678 /> 3. JSX Tags werden in Klammern geschrieben, sofern sie mehr als eine Zeile umfassen return ( <MyComponent classname="long body" foo="bar"> <MyChild /> </MyComponent> ); statt: 4

return <MyComponent classname="long body" foo="bar"> <MyChild /> </MyComponent>; 4. Tags, die keine Kindknoten besitzen, sind immer selbstschließend. Es wird stets ein Leerzeichen vor dem schließenden Tag gesetzt: <Foo classname="stuff" /> statt <Foo classname="stuff"></foo> und bei mehrzeiligen Attributen: <Foo bar="bar" baz="baz" /> 5. render-methoden geben immer einen Wert zurück return (<div />); statt (<div />); Desweiteren gilt für den normalen JS-Code der Coding Standard von Google für die Skriptsprache JavaScript (https://google.github.io/styleguide/javascriptguide.xml). Der Programmierer soll sich an diese Regeln halten, damit die Lesbarkeit von Quelltext innerhalb des Erstellungsprozesses der Software sowie weitere Arbeiten garantiert bleiben. 5

3. Testkonzept 3.1. Vorbemerkung zum Test in React Da die Anwendung in react geschrieben wird bietet es sich an ein Test Framework, welches im Zusammenhang mit react entwickelt wurde, zu verwenden. React bietet von Hause aus Test Utilitys an, welche ausgewählte Ereignisse simulieren. Mit Hilfe von jest, einem Unit Testing Framework von Facebook, wird in Kombination mit dem Assertion System Jasmine 2 ein vollständiges Test Framework zur Verfügung gestellt. 3.2. Jest Jest verbindet die Test Utilities von react und das Assertion System von Jasmine 2 um Tests auf den Komponenten durchzuführen. Um jest zu verwenden müssen bestimmte Voraussetzungen erfüllt werden. Zum einen muss ein Ordner tests im Root-Verzeichnis angelegt werden und zum anderen eine Datei.babelrc mit dem Inhalt {"presets": ["es2015", "react"] erstellen. Jest wird in Node.js mit dem Befehl npm install --save-dev jest-cli installiert. 3.3. Jasmine 2 Jasmine 2 ist das Assertion System welches standardmäßig in jest verwendet wird. Jasmine 2 ist ein verhalten orientiertes Softwareentwicklungsframework bei dem anhand von bestimmten Szenarios die Module getestet werden. Der Aufbau von Jasmine 2 beginnt mit einem describe welche die Test Suite beschreibt. In dem folgenden it werden nach einander expect ausgeführt die nacheinander Erwartungen der zu testenden Komponente mit fail durchgefallen und pass bestanden bewerten. 3.4. Testvorgehen Soll eine Komponente getestet werden, so wird eine JavaScript Datei im Ordner tests erstellt. Durch npm test wird jest gestartet. Jest durchsucht den Ordner tests nach den Tests und startet diese. In der Konsole erscheinen nach einiger Zeit die Ergebnisse der Tests. 3.5. Beispiel Die Testdatei ist wie folgt aufgebaut: jest.unmock('../src/js/components/filter'); import React from 'react'; import ReactDOM from 'react-dom'; import TestUtils from 'react-addons-test-utils'; 6

import Filter from '../src/js/components/filter'; //Test Suite Body describe("filter", function() { it('should exists', function() { // Render into document var filter = TestUtils.renderIntoDocument( <Filter /> ); //Jasmine 'tobetruthy' matcher expect(testutils.iscompositecomponent(filter)).tobetruthy(); ); ); Dieser Test macht nichts weiter, als die Komponente Filter zu rendern und anschließend wird erwartet dass diese Komponente gerendert ist. 7