Automation of Flex Building and Unit Testing or Continuous Integration with Flex, FlexUnit, and Ant



Similar documents
Build Management. Context. Learning Objectives

Application Notes for Packaging and Deploying Avaya Communications Process Manager Sample SDK Web Application on a JBoss Application Server Issue 1.

CSE 70: Software Development Pipeline Build Process, XML, Repositories

Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science

Hudson Continous Integration Server. Stefan Saasen,

jenkins, drupal & testing automating every phing! miggle

Vaidya Guide. Table of contents

Continuous Integration

Software Construction

XMLVend Protocol Message Validation Suite

Unit Testing with FlexUnit. by John Mason

Tutorial 5: Developing Java applications

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Using Actian PSQL as a Data Store with VMware vfabric SQLFire. Actian PSQL White Paper May 2013

EMC Documentum Composer

Practical Android Projects Lucas Jordan Pieter Greyling

Siebel Application Deployment Manager Guide. Siebel Innovation Pack 2013 Version 8.1/8.2 September 2013

CI:IRL. By Beth Tucker Long

Enterprise Service Bus

Builder User Guide. Version 5.4. Visual Rules Suite - Builder. Bosch Software Innovations

Builder User Guide. Version Visual Rules Suite - Builder. Bosch Software Innovations

DiskBoss. File & Disk Manager. Version 2.0. Dec Flexense Ltd. info@flexense.com. File Integrity Monitor

Joomla! Override Plugin

SDK Code Examples Version 2.4.2

Authoring for System Center 2012 Operations Manager

Microsoft Windows PowerShell v2 For Administrators

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.

Oracle Endeca Information Discovery Integrator

Java Web Services Developer Pack. Copyright 2003 David A. Wilson. All rights reserved.

Delivering Quality Software with Continuous Integration

Automating Testing and Configuration Data Migration in OTM/GTM Projects using Open Source Tools By Rakesh Raveendran Oracle Consulting

Creating a Java application using Perfect Developer and the Java Develo...

CrownPeak Playbook CrownPeak Hosting with PHP

PEtALS Quick Start. PEtALS Team Roland NAUDIN - February

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

GLEN RIDGE PUBLIC SCHOOLS MATHEMATICS MISSION STATEMENT AND GOALS

BI xpress Product Overview

EventTracker: Configuring DLA Extension for AWStats Report AWStats Reports

Evaluation of the CMT and SCRAM Software Configuration, Build and Release Management Tools

Installation Guide of the Change Management API Reference Implementation

Functional UI testing of Adobe Flex RIA. Viktor Gamov August,

Expert PHP 5 Tools. Proven enterprise development tools and best practices for designing, coding, testing, and deploying PHP applications.

Northwestern University Dell Kace Patch Management

Test Automation Integration with Test Management QAComplete

DocBook Framework (DBF)

OpenMake Dynamic DevOps Suite 7.5 Road Map. Feature review for Mojo, Meister, CloudBuilder and Deploy+

Open EMS Suite. O&M Agent. Functional Overview Version 1.2. Nokia Siemens Networks 1 (18)

SAS Marketing Automation 4.4. Unix Install Instructions for Hot Fix 44MA10

Web Application Development

FreeForm Designer. Phone: Fax: POB 8792, Natanya, Israel Document2

EventTracker: Configuring DLA Extension for AWStats report AWStats Reports

Force.com Migration Tool Guide

EMC Clinical Archiving

VOC Documentation. Release 0.1. Russell Keith-Magee

S. Bouzefrane. How to set up the Java Card development environment under Windows? Samia Bouzefrane.

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Configuring Firewalls An XML-based Approach to Modelling and Implementing Firewall Configurations

Accessing Data with ADOBE FLEX 4.6

Web Application Architecture (based J2EE 1.4 Tutorial)

About This Document 3. Integration and Automation Capabilities 4. Command-Line Interface (CLI) 8. API RPC Protocol 9.

WORKING WITH LOAD BALANCING AND QUEUEING FOR ADOBE INDESIGN CS5 SERVER

OpenGeo Suite for Linux Release 3.0

ESX 4 Patch Management Guide ESX 4.0

Redbooks Paper. Deploying Applications Using IBM Rational ClearCase and IBM Tivoli Provisioning Manager. Introduction

Part II Achieving Continuous Performance Management

Getting Started with STATISTICA Enterprise Programming

SAS in clinical trials A relook at project management,

Java Language Tools COPYRIGHTED MATERIAL. Part 1. In this part...

PATROL From a Database Administrator s Perspective

Continuous Integration on System z

Braindumps.C questions

CSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira

WA Continuous Integration with Jenkins- CI, Maven and Nexus. Classroom Setup Guide. Web Age Solutions Inc. Web Age Solutions Inc.

Using Network Application Development (NAD) with InTouch

EMC XDS Repository Connector for ViPR

Hands on exercise for

Capabilities of a Java Test Execution Framework by Erick Griffin

CONFIGURING A WEB SERVER AND TESTING WEBSPEED

Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper.

The Essentials of File Management with LabVIEW

Software Development In the Cloud Cloud management and ALM

"Build and Test in the Cloud "

Documentation Installation of the PDR code

Django Assess Managed Nicely Documentation

ArpViewer Manual Version Datum

Introducing Apache Pivot. Greg Brown, Todd Volkert 6/10/2010

Transcription:

Automation of Flex Building and Unit Testing or Continuous Integration with Flex, FlexUnit, and Ant Daniel Rinehart Software Architect Allurent, Inc.

Current Build Process Is your build process like a Rube Goldberg contraption? Manual Fragile Missing Image Source: http://mousetrapcontraptions.com/rube-cartoons-2.html 2

Ideal Build Process Goal of this talk is to introduce tools and techniques to create a continuous integration based build process. Centralized Automated Self-Testing Image Source: http://science.ksc.nasa.gov/shuttle/missions/sts-105/images/contact105_medium.html 3

Continuous Integration Continuous Integration is a software development practice where members of a team integrate their work frequently. Each integration is verified by an automated build and test that detects integration errors as quickly as possible. Source: http://www.martinfowler.com/articles/continuousintegration.html 4

Continuous Integration Cycle Watch Publish Build Test Source: http://www.methodsandtools.com/archive/archive.php?id=42 5

Build Failure Notification 6

Build Log 7

Project Dashboard 8

Project Distributions 9

Continuous Integration Cycle Watch Publish Build Test 10

Build Process Build File Source Code Build Tool Generated Assets 11

Project View Build Tool Project /src Source Code / /bin Generated Assets Build File 12

Ant Build Automation Tool Widely Used Extensive Documentation Cross Platform Robust XML Based 13

Key Ant Concepts Project Root element of a build file Defines steps of build process Ideally one-to-one correspondence to real projects Target Logical chunk of work Can depend on other targets Works like a script Property Holds a constant textual value or file location Accessed with ${} syntax Environment or custom defined Task Individual command Accepts arguments to control behavior Used in targets 14

Ant Hello World Demonstration 15

Hello World Build Script <project name="helloworld" default="build"> <property name="message" value="hello World!"/> <target name="init" description="initialize the build"> <tstamp/> </target> <target name="build" depends="init" description="build the Hello World project"> <echo message="${message} Today is ${TODAY}"/> </target> </project> 16

Hello World Build Script Output Executed build file Buildfile: build.xml Name of target being run init: Name of target being run Task name and output build: [echo] Hello World! Today is September 17 2007 Result of the build Diagnostic information BUILD SUCCESSFUL Total time: 0 seconds 17

Ant mxmlc Demonstration 18

Compiling an Application <!-- Using the Flex Ant Tasks provided by Adobe Labs --> <project name="sampleapplication" default="build"> <taskdef resource="flextasks.tasks" classpath="${basedir}/flextasks/lib/flextasks.jar"/> <property name="flex_home" value="c:/talk/flex2.0.1hf2"/> <target name="build"> <mxmlc file="src/${ant.project.name}.mxml" output="bin/${ant.project.name}.swf"> <load-config filename="${flex_home}/frameworks/flex-config.xml"/> <source-path path-element="${flex_home}/frameworks"/> </mxmlc> </target> </project> 19

Build Practices Keep source and output separated Don t do work you ve already done Provide reasonable defaults Centralize behavior Predictability 20

Build Templates Build Templates Build File User Specific Overrides Source Code Build Tool Generated Assets 21

Antennae Build Templates Encapsulates Best Practices Handles Flex Applications, Libraries, and Documentation Cross Project Dependencies Multiple Project Builds 22

Antennae Demonstration 23

Antennae Build Script <project name="sampleapplication" default="build"> <property name="root.dir" location="../"/> <property file="${root.dir}/build-user.properties"/> <import file="${root.dir}/tools/build-imports.xml"/> <path id="flex2.lib.path"/> <target name="build" depends="init,flex2-application" description="build the application" /> </project> 24

Continuous Integration Cycle Watch Publish Build Test 25

FlexUnit Build Verification Supports Flex and ActionScript Asynchronous Testing Facilities Graphical Test Results 26

FlexUnit Test Results 27

FlexUnit Demonstration 28

Antennae FlexUnit Automation Test Suite Generation Test Filtering Actionscript to Java Result Reporting 29

Antennae Demonstration 30

Automated Test Script <project name="sampletestapplication" default="test"> <!-- Shared imports --> <import file="${root.dir}/lib/build-assets.xml" /> <path id="flex2.lib.path"> <pathelement location="${flexunit2.swc}"/> <pathelement location="${arc-flexunit2.swc}"/> <!-- Include asset under test here --> </path> <target name="build" depends="init,flex2-test-application" description="build the test application"/> <target name="test" depends="build,test-flexunit2" description="run the test application"/> </project> 31

Continuous Integration Cycle Watch Publish Build Test 32

Ant Demonstration 33

Continuous Integration Cycle Watch Publish Build Test 34

Continuous Integration Key Concepts Source code repository Clean build machine Runs after every commit Popular platforms CruiseControl Apache Continuum Many others 35

Resources Ant http://ant.apache.org/ FlexUnit http://code.google.com/p/as3flexunitlib/ Antennae http://code.google.com/p/antennae/ Continuous Integration Matrix http://docs.codehaus.org/x/gck Flex Ant Tasks http://labs.adobe.com/wiki/index.php/flex_ant_tasks 36

Q & A 37

danielr@neophi.com http://danielr.neophi.com/ 38