Testgetriebene Web-Entwicklung mit Ruby on Rails Baustert... · 2010. 3. 24. · Entwicklung von...

Preview:

Citation preview

www.b-simple.de 1

Ruby on Rails

2005

Testgetriebene Web-Entwicklung

mit

Ruby on Rails

Thomas Baustert

www.b-simple.de

www.b-simple.de 2

Ruby on Rails

2005

Agenda• Rails Einführung

• Test-Unterstützung in Rails

• Testgetriebene Web-Entwicklung mit Rails

• Live Demo

Eindruck von Rails und dessenUnterstützung für umfangreichgetestete Web-Anwendungen

www.b-simple.de 3

Ruby on Rails

2005

Ruby on Rails („Ruby auf Schienen“)

• MVC-Architektur• Konvention statt

Konfiguration• DRY-Prinzip• Weniger Code• Extrahiert

• UnmittelbaresFeedback

• Hohe Testbarkeit• Ruby• Open Source• David Heinemeier

Hansson

Ruby on Rails ist ein Framework für dieEntwicklung von datenbankbasiertenWeb-Anwendungen in Ruby.

www.b-simple.de 4

Ruby on Rails

2005

Ruby• Dynamisch typisierte Sprache• Rein objektorientiert• Einflüsse von Perl, Smalltalk,

LISP, u.a.• Ca. 1995 veröffentlicht• Yukihiro Matsumoto („Matz“)

• Garbage Collection,Ausnahmen, ReguläreAusdrücke, Introspektion,Erweiterung von Klassen,Code-Blöcke, usw.

www.b-simple.de 5

Ruby on Rails

2005

Rails MVC

Controller

ModelModel

View

HTTP-Request erzeugt, liest, ändert, löscht

erzeugt

Redirect

DB

Response

www.b-simple.de 6

Ruby on Rails

2005

Controller

• Steuern Kontrollfluss (Action)• Bearbeiten HTTP-Requests• Aufruf per Reflection => keine Konfiguration• Erzeugen Views• View-Daten über Instanzvariablen

www.b-simple.de 7

Ruby on Rails

2005

Modelle

• Domainobjekte• Active Record Pattern• Tabellenname = plural(Modellname)• Beziehen Attribute aus Datenbanktabelle (DRY)• Rails erzeugt dynamisch Getter und Setter• Modell-Relationen (1:1, 1:N, N:M)• Vererbung (Single Table Inheritance)

People

firstname

lastname

www.b-simple.de 8

Ruby on Rails

2005

Views

• Präsentation von Modellen in HTML• Daten über Instanzvariablen• Eingebetteter Ruby-Code (keine neue Sprache)

www.b-simple.de 9

Ruby on Rails

2005

Testgetriebene Softwareentwicklung• Entwurfs- und Programmiermethode• Tests treiben die Softwareentwicklung (Design)• TDD-Kreislauf:

Software wird änderbar und lebt lange

1. TestSchreibe einen fehlschlagenden Test

2. CodeSchreibe gerade soviel Code, dass der neue Test undalle vorhandenen Tests fehlerfrei ausgeführt werden

3. RefactoringEntferne Code Duplizierung und andere „Code Smells“

www.b-simple.de 10

Ruby on Rails

2005

Unit Tests• Basis für testgetriebene Softwareentwicklung

• Programmierte, automatisch ausführbare Tests

• Selbstständige Überprüfung der Ergebnisse

• Voraussetzung für Änderungen (z.B. Refactoring)

• Dynamische Sprachen

Zusätzliche Fehlerquelle (?)

Tests „notwendiger“ (?)

• Ruby Test::Unit

www.b-simple.de 11

Ruby on Rails

2005

Test-Unterstützung in Rails• Web-spezifische Erweiterung von Test::Unit

– assert_redirected_to– assert_template– assert_tag– assigns, session, cookie– u.a.

• Test-Unterstützung:– Modelle, Controller, Views– Mocks– Action Mailer– Action Web Services

www.b-simple.de 12

Ruby on Rails

2005

Demo „Wunschzettel“

Person WunschN1

• Papa: Socken und Krawatte• Mama: Lockenwickler und Schal• Bruder: Computer und Freundin• Schwester: ...

www.b-simple.de 13

Ruby on Rails

2005

Testen und Fixtures• Separate Testdatenbank

• Tabellen werden vor jedem Test automatisch gefüllt

• Aussagekräftige Namen wichtig

DB

Unit Tests

www.b-simple.de 14

Ruby on Rails

2005

Modelle testen• Neues Modell + Assoziation

www.b-simple.de 15

Ruby on Rails

2005

Controller testen• Action prüfen

• Zuweisung von Daten an Instanzvariablen prüfen

• Web-Server muss nicht laufen

www.b-simple.de 16

Ruby on Rails

2005

Views testen• HTML Code prüfen (Tags, Attribute, Daten, ...)

www.b-simple.de 17

Ruby on Rails

2005

• AJAX-Unterstützung (Asynchronous JavaScript And XML)

– Hoch interaktive Applikationen ähnlich Rich Client

– Drag & Drop, Visuelle Effekte

• Action Mailer

– E-Mail versenden und empfangen

• Action Web Services

– Anbindung anderer Systeme

Und sonst?

www.b-simple.de 18

Ruby on Rails

2005

Einsatz pro/contra• Für einen Großteil von

Web-Anwendungen

• EinfachesDatenmodell

• Keine verteilteTransaktion

• Apache/LightTPD undFastCgi

• Performanz?

• Anbindung externerSysteme (Host, SAP)

• Rich Client Anbindung

• Fehlende Tools, APIs(z.B. PDF-Server)

• Keine Integrationmöglich oder nurNeuimplementierung?

• Performanz?

www.b-simple.de 19

Ruby on Rails

2005

Unsere Erfahrungen• Rails seit Januar 2005

• csWebCert:

– Konsequent testgetrieben

– ca. 400 Testsca. 3000 Assertions

– Test-Code > Anwendungs-Code

• Änderungen sicherer und schnellerdurchführbar

• Extrem geringe Fehlerrate inAkzeptanztests

• Produktion: Apache/FastCgi

Anwendungen:

• Basecamp

• bellybutton

• Odeo

• ...

www.b-simple.de 20

Ruby on Rails

2005

Fazit• Schneller, kostengünstiger, früherer ROI

• Hohe Testbarkeit, Optimale Test-Unterstützung

• Sichere Nutzung dynamischer Sprachen durchkonsequentes Testen

• Auf Änderungen vorbereitet

• Wartbarkeit und Langlebigkeit

• Großteil aller Web-Anwendungen können mit Railsentwickelt werden

www.b-simple.de 21

Ruby on Rails

2005

Quellen• www.rubyonrails.org

• www.rubyonrails-ug.de

• www.rubyonrails.de

• www.ruby-lang.org/en

Hanser 01/2006

www.rapidwebdevelopment.de

www.b-simple.de 22

Ruby on Rails

2005

Rails.

Is it love?

Recommended