java, jruby och rspec€¦ · sammanfattning •bdd är ett sätt att skriva tdd i black box-manér...

24
Java, JRuby och RSpec Ola Bini

Upload: others

Post on 26-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Java,JRuby och

RSpecOla Bini

Page 2: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Agenda• Om mig

• Vad är Ruby och JRuby

• Vad är BDD

• RSpec

• Demonstrationer

• Ett större Javasystem

• Frågor och svar

Page 3: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Om mig• Ola Bini

• Utvecklare, Karolinska Institutet

• JRuby Core Developer

• Javautvecklare sedan 1998

• Rubyfantast sedan 2004

• Stort intresse för programmeringsspråk

Page 4: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Vad är Ruby?•Rent OO, dynamist, starkt typat, interpreterat programmeringsspråk

•Open Source (GPLv2)

•C-implementation de-facto standard (MRI)

•Startades 1993 av Yukihiro ('Matz') Matsumoto

•Kraftfullare än Perl, mer OO än Python

•'Principle of least surprise'

Page 5: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Rubykod•1.upto(10) { |n| puts n }

•class Foodef initialize(val)

@internal = val

end

def bar(arg1, *rest)

rest.each do |v|

yield @internal * v * v

end

end

end

Foo.new(13).bar(:aSymbol, 17, 42, 25, 113) { |o|

puts “We got the value #{o}”

}

Page 6: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Vad är JRuby?

• 100% Java impl av Ruby...Ruby på JVM:en

• Rent interpreterat, operativsystemstrådar

• Föddes 2001, många utvecklare inblandade

• Mestadels Ruby 1.8-kompatibel

• Långsammare än MRI... För tillfället

Page 7: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Ruby anropar Java

• require ‘java’

JBrame = javax.swing.JFrame

JButton = javax.swing.JButton

frm = JFrame.new(“Ett fönster”)

btn = JButton.new(“En knapp”)

frm.set_size(300, 300)

frm.content_pane.add(btn)

frm.show

Page 8: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Ruby anropar Java• AL = java.awt.event.ActionListener

class MyListener < AL

def actionPerformed(event)

event.source.text = “Ny text”

end

end

btn.add_action_listener(MyListener.new)

• btn.add_action_listener(AL.impl { |ev,_|

ev.source.text = “Nyare text” })

Page 9: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Vad är BDD?•Behavior Driven Development

•Ett sätt att strukturera test

•Bör användas som TDD

•Testar förväntat beteende

•Black box

•Kan också testa prestanda och säkerhet

Page 10: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

RSpec• BDD-ramverk för Ruby

•“Executable specifications of program behavior”

•Fungerar väl i JRuby

•Kan användas för att testa Javakod

Page 11: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Demonstration av RSpec-test

Page 12: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Demonstration av Rspec-test av

Javakod

Page 13: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Ett större Javasystem

•Samla data från flera datakällor

•Vara bas för all identitetsinformation på KI

•Administration via Javainterface

•IBM Tivoli Directory Integrator är spindeln i nätet

Page 14: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Acceptanstester -behov

•KIMKAT har massor av enhetstester

•Dock ej systemtester och integrationstester

•Tidsbrist!

•Beskrivningen av testfall skall vara så lika testimplementationerna som möjligt

Page 15: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

En bild av KIMKAT

ITDI

OmniaS

PRIMULA

LADOK

OmniaExt

Web-interface KKFront J2EE-stuff Hibernate

MDB:sMQ/JMS

LDAP

Page 16: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

ITDI - MetaMerge

•Samlar information från datakällor

•Formaterar om data, implementerar affärsregler

•Skriver till databaser

•Använder Java 1.4.2 och JavaScript

•Vår svagaste punkt

Page 17: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

KKFront

•Klientaccess till KIMKAT

•Hanterar behörighetskontroll

•Skrivning till mer än en datakälla är transparent

•Allt som behövs för ett Webgränssnitt till KIMKAT

Page 18: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Testning av Databaser + ITDI

•KITLib

•Standard Ruby

•Test::Unit

•ActiveRecord

•Mimer-adapter

Page 19: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Demo av KITLib

Page 20: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Testning av KKFront

•KITLib + extensions

•Kör i JRuby

•Ett extralib för att jobba mot KKFront

Page 21: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Demo av KKITLib

Page 22: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Sammanfattning•BDD är ett sätt att skriva TDD i black box-manér

•Testning av innehåll i databaser med ActiveRecord är väldigt användbart

•Ruby kan användas för att skapa läsbara test-DSL:er

•JRuby är väldigt användbart för att testa Javakod

•Java+Ruby är en kombination som inte bör förringas

Page 23: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Information

• Email: [email protected]

• Blog: ola-bini.blogspot.com

• Ruby: www.ruby-lang.org

• JRuby: www.jruby.org

• RSpec: rspec.rubyforge.org

Page 24: Java, JRuby och RSpec€¦ · Sammanfattning •BDD är ett sätt att skriva TDD i black box-manér •Testning av innehåll i databaser med ActiveRecord är väldigt användbart

Frågor?Svar?

42!