Top Banner
® Copyright 2008 Adobe Systems Incorporated. All rights reserved. Quality Best Practices & Toolkit for Enterprise Flex
55

Quality Best Practices & Toolkit for Enterprise Flex

Sep 12, 2014

Download

Technology

Quality Best Practices & Toolkit for Enterprise Flex

Presentation given at the French Flex User group : "les tontons flexeurs" on the 21st of July 2009

Author : Xavier Agnetti, François Le Droff (and Alex Ulhmann)

Copyright: Adobe
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Quality Best Practices

& Toolkit for

Enterprise Flex

Page 2: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Xavier Agnetti

Adobe Consulting

A Flex geek :

leader FlexPMD

Contributeur FlexUnit

conférencier à MAX,

Contact:

xagnetti<at>adobe.com

Page 3: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

François Le Droff

Adobe TXI (Technology & eXperience Innovation)

10 ans (RIA & web 1+n.0)

OSS geek :

membre de

ossgtp, du ParisJUG,

Tontons Flexeurs

contributeur sur qsos, xradar , fna

conférencier à MAX, Solution Linux, Tontons Flexeurs,

BreizhJUG, RiveriaJUG

Contact:

ledroff<at>adobe.com

Page 4: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

François Le Droff

blog : http://www.droff.com

Page 5: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Et vous ?

Flex ?

FlexUnit ?

Fluint ?

FlexCover ?

FlexMonkey ?

RiaTest ?

Build and CI ?

Ant ?

Maven ?

Hudson ?

Page 6: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Agenda

Unit Test Best Practice (Alex )

FlexUnit

FlexUnit Demo

Mock

Code Coverage

Functional Test

Load Test

Static Code Analysis

Build

Continuous Integration

Page 7: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

UnitTestBest Practices

Page 8: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Our Agile Testing Principles.

Test Concerns Separately Test Many Things At Once

Test Everything –

Frameworks, Integration

etc.

Accept and Minimize

Untestable Code

Page 9: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Persistence Layer

Translators /

Utilities

Commands /

Delegates

Presentation Behavior Layer

Flex - Testing Concerns Separately

Persistence Definition Layer

Network Access

Brokers /

DataModels

File Access LocalConnection

Presentation Graphic Layer

MXML UIComponent DisplayObject

Domain / Application Layer

Utilities /

Factories Domain Models

Utilities

Application Models

Presentation Models

VehicleDescriptorView

AccidentWizardView

VehicleDescriptorPM

AccidentWizardPM

CarCompany

Customer

IncidentDescriptor

SaveReportCommand

IncidentReportTranslator

“saveReport”

RemoteObject

Page 10: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Our Agile Testing Principles.

Test First Test Last

Run Tests Continuously One Test Suite Rules Them

All

Page 11: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

State Verification

Object under

test

Exercise

Assert return

Assert stateUnit test

Page 12: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

FlexUnit

Page 13: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: UnitTesting

FlexUnit : http://opensource.adobe.com/wiki/display/flexunit/FlexUnit

Page 14: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: Unit Testing

FlexUnit

Very similar to JUnit

Event test enabled

Page 15: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: UnitTesting

FlexUnit Html Reports:

Page 16: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: UnitTesting

FlexUnit Dashboards:

Page 17: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Unit Next

Fluint : http://code.google.com/p/fluint/

FlexUnit4 : http://opensource.adobe.com/wiki/display/flexunit/FlexUnit+4+feature+overview

Page 18: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Demo FlexUnit

Page 19: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Persistence Layer

Translators /

Utilities

Commands /

Delegates

Presentation Behavior Layer

Testing Events

Persistence Definition LayerNetwork Access

Brokers /

DataModels

File Access LocalConnection

Presentation Graphic LayerMXML UIComponent DisplayObject

Domain / Application Layer

Domain Models

Utilities

Application ModelsUtilities /

Factories

Presentation Models

Page 20: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Demo

Page 21: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Mock

Page 22: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Isolating The Object under Test

Object under Test

Depended-on Object

Test Double

Production

Unit Tests

Page 23: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Substitution via Dependency Injection (IoC)

Substitution via Dependency Injection

Object under Test

Domain

Interface

Interface

Domain Test DoubleInterface

public function PolicyPM( policyValidator : IPolicyValidator )

{

}

model = new PolicyPM( new PolicyValidator() );

model = new PolicyPM( new PolicyValidatorDummy() );

15

Page 24: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Behavior Verification Testing What Objects Do Behind the Scenes

PolicyPMTest

PolicyValidatorMock

PolicyPM

Set expected

behavior

Assert stateExercise

Exercise

Page 25: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Behavior Verification Testing What Objects Do Behind the Scenes

var mock : PolicyValidatorMock = new

PolicyValidatorMock();

mock.mock.method( “validate” ).withNoArgs.once;

//exercise

var model : PolicyPM = new PolicyPM( mock );

model.next();

mock.mock.verify();

Page 26: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Our Agile Testing Principles.

Behavior Verification

Testing Internal Behavior

State Verification First

Testing Public API

Write Test as Code

ExamplesWrite Java/AS Docs

Page 27: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Making Untestable APIs Testable

public class LocalConnectionWrapper extends LocalConnection

implements ILocalConnection

{

}

Production Code

public interface ILocalConnection extends ISendingLocalConnection,

IReceivingLocalConnection

{

}

Page 28: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Making Untestable APIs Testable

public interface ISendingLocalConnection extends IEventDispatcher

{

function send( connectionName : String, handler : String, ...args ) : void;

}

public interface IReceivingLocalConnection

{

function set client( value : Object ) : void;

function allowDomain( ...domains ) : void;

function connect( connectionName : String) : void;

function close() : void;

}

20

Page 29: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Substitution via Overriding

Object under Test Untestable behaviour

Test Subclass Substitution

Page 30: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Substitution via Overriding

protected function createReceivingConnection() : IReceivingConnection

{

return new LocalConnectionWrapper();

}

Production Code

override protected function createReceivingConnection() :

IReceivingConnection

{

return new LocalConnectionMock();

}

Test Subclass

Page 31: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Substitution via Overriding

var mock : LocalConnectionMock = new LocalConnectionMock();

mock.mock.method( “send” ).withArgs( “connection” ).once;

//exercise

var connector : TestSubclass = new TestSubclass( mock );

connector.go();

mock.mock.verify();

Page 32: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Mock tooling

Page 33: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Mock Frameworks

mock-as3: http://code.google.com/p/mock-as3

Used by Adobe Consulting

Mock4AS: http://code.google.com/p/mock4as

Page 34: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Code Coverage

Page 35: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Code Coverage Flexcover - Custom Compiler Approach

http://code.google.com/p/flexcover

Page 36: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Code Coverage Flexcover - Custom Compiler Approach

http://code.google.com/p/flexcover

Page 37: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Hudson

Page 38: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Sonar

Page 39: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Functional Tests

Page 40: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: Testing

Functional Testing

OS:

Selenium for Flash

FlexMonkey, FunFX

Mercury QTP

IBM Rational Functional Tester

RIATest

Page 41: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Load/Stress/Endurance Tests

Page 42: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: Testing

Load and Stress Testing

JMeter, OpenSTA, Grinder

Other commercial (Flex/AMF specific) products :

NeoLoad

WebLoad

Page 43: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Static Code Analysis

Page 44: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: Building : Quality

Quality Reports within your build

AS3NCSS

http://localhost:9999/hudson/job/cairngorm/site/javancss.html

FlexPMD

http://localhost:9999/hudson/job/cairngorm/12/pmdResult/

Page 45: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex PMD

Page 46: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Demo FlexPMD

Page 47: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Build

Page 48: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: Building

Ant :

FlexAntTasks

Ant : Antennae

• Maven :

• Flex-mojos• Alternatives :

• ServeBox (Projet Français)

• and Israfil

• Archetypes

FlexMojos V3 est un projet sonatype

Sonatype et Adobe travaillent ensemble pour le support FB dans m2eclipse

Page 49: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Managing Dependencies

Maven (or Ant + Ivy)

Demo : http://localhost:9999/hudson/job/cairngormenterprise/site/dependencies.html

Page 50: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Managing Dependencies

Page 51: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: UnitTest within your Build

FlexUnit within your build

Maven

FlexMojos V3 est un projet sonatype

Sonatype et Adobe travaillent ensemble pour le support FB dans m2eclipse

Page 52: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

FlexPMD within your build

Maven

Page 53: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

CI

Page 54: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Flex Frameworks and Tools: Building and CC

Quality within your build : CC

Demo : http://localhost:9999/hudson/

Page 55: Quality Best Practices & Toolkit for Enterprise Flex

®

Copyright 2008 Adobe Systems Incorporated. All rights reserved.

Des questions ?