B e h a v i o r D r i v e n G U I T e s t A u t o m a t i o n f o r J a v a D e s k t o p , E m b e d d e d & M o b i l e A p p l i c a t i o n s
A b o u t m e A m a n d a B u r m a d | A B a c k g r o u n u t o m a t e d Q A T e s t E n g i n e e r i n g | froglogic C o m p a n y s | S F o c u s a r e a o f t w a r e q u a l i t y t o o l s & C r o s s - p l a t f o r m t e s t i n g
A g e n d a W h a t i s B D D ? W h y B D D a n d B D T ? A u t o m a t i n g a B e h a v i o r D r i v e n G U I T e s t I n t e g r a t i n g B D T a n d T e s t A u t o m a t i o n
W h a t i s B e h a v i o r D r i v e n D e v e l o p m e n t ( B D D ) ? W h a t i s B e h a v i o r D r i v e n T e s t i n g ( B D T ) ? “BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.” - Dan North http://en.wikipedia.org/wiki/Behavior-driven_development OR...
W h a t i s B e h a v i o r D r i v e n D e v e l o p m e n t ( B D D ) ? W h a t i s B e h a v i o r D r i v e n T e s t i n g ( B D T ) ? T e s t fi r s t d e v e l o p m e n t o n a h i g h e r l e v e l C l e a r s e p a r a t i o n o f t e s t l o g i c a n d i m p l e m e n t a t i o n F e a t u r e s & t e s t s - d e fi n e d i n a c o m m o n h u m a n r e a d a b l e l a n g u a g e - i m p l e m e n t e d i n a c o m m o n h u m a n r e a d a b l e l a n g u a g e
W h y B D D ? C l e a r F e a t u r e R e q u i r e m e n t s & R e s u l t s W h y B D D & B D T ? Write a Failing Feature Test D e s c r i b e ( T e s t ) i n a h u m a n - r e a d a b l e D S L R e p e a t I m p l e m e n t F o c u s o n a p p l i c a t i o n b e h a v i o r Make C l e a r l o g i c v s . i m p l e m e n t a t i o n s e p a r a t i o n Refactor Feature Test Code Pass E n a b l e n o n - e n g i n e e r t e s t c r e a t i o n B u g R e l e a s e Production
W r i t i n g a F e a t u r e F i l e » » G i v e n W h e n T h e n Feature: Create new address books Feature: Scenario: Scenario: Create a new blank address book Given Given the app is running When When user creates a new address book W r i t e a F a i l i n g F e a t u r e T e s t Then Then the address book is blank R e p e a t I m p l e m e n t M M a a k k e e R e f a c t o r F F e e a a t t u u r r e e T T e e s s t t C o d e P P a a s s s s B u g R e l e a s e P r o d u c t i o n
T e s t S t e p I m p l e m e n t a t i o n G e n e r a t e u s i n g G u i d e d - R e c o r d i n g ( o p t i o n a l ) Given("the app is running", function function(context) { startApplication("AddressBookSwing.jar"); }); When("user creates a new address book", function function(context) { W r i t e a F a i l i n g F e a t u r e T e s t activateItem(waitForObjectItem(":AddressBook_javax.swing.JMenuBar", "File")); activateItem(waitForObjectItem(":File_javax.swing.JMenu", "New...")); R e p e a t I m p l e m e n t }); M M a a k k e e R e f a c t o r F F e e a a t t u u r r e e T T e e s s t t C o d e Then("the address book is blank", function function(context) { P P a a s s s s waitFor("object.exists(':AddressBook_javax.swing.JTable')", 20000); test.compare(findObject(":AddressBook_javax.swing.JTable").rowcount, 1); B u g R e l e a s e }); P r o d u c t i o n
T e s t S t e p I m p l e m e n t a t i o n R e f a c t o r i n g Given("the app is running", function function(context) { startApplication("AddressBookSwing.jar"); }); When("user creates a new address book", function function(context) { W r i t e a F a i l i n g F e a t u r e T e s t common.invokeMenuItem("File","New"); }); R e p e a t I m p l e m e n t Then("the address book is blank", function function(context) { M M a a k k e e R e f a c t o r F F e e a a t t u u r r e e T T e e s s t t C o d e common.verifyRowCount(":AddressBook_javax.swing.Jtable", 1); P P a a s s s s }); B u g R e l e a s e P P r r o o d d u u c c t t i i o o n n
B D D G U I T e s t A u t o m a t i o n D e m o
B D D i n S q u i s h B u i l t - i n B e h a v i o r D r i v e n D e v e l o p m e n t & T e s t i n g S u p p o r t C o m p l e t e s u p p o r t f o r F e a t u r e F i l e s w r i t t e n i n G h e r k i n - 1 0 0 % c o m p a t i b l e w i t h C u c u m b e r , B e h a v e , e t c . T e s t s t e p s c a n b e i m p l e m e n t e d i n a n y o f S q u i s h ' s s u p p o r t e d s c r i p t i n g l a n g u a g e s - P y t h o n , P e r l , J a v a S c r i p t , T c l & R u b y F u l l I D E s u p p o r t - E d i t o r w i t h c o d e c o m p l e t i o n , r e c o r d i n g o f s t e p s , e t c . P r o d u c e c l e a r e r t e s t r e s u l t s - C o l o r - c o d e d r e s u l t s d i r e c t l y i n F e a t u r e s fi l e
W h y S q u i s h ? O b j e c t - b a s e d G U I T e s t A u t o m a t i o n Technologies Platforms
C o n t a c t M e a m a n d a @ f r o g l o g i c . c o m a m a n d a b u r m a
Recommend
More recommend