47
Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends José Bonnet, Business Support Systems/Customer Processes, PT Inovação, S.A. 25th & 26th June 2010 This document is part of the Intellectual Property of PT Inovação and cannot be reproduced or used without an explicit and written authorization

Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

  • Upload
    jbonnet

  • View
    1.888

  • Download
    1

Tags:

Embed Size (px)

DESCRIPTION

How to use BDD techniques and tools to test the integration of multiple systems

Citation preview

Page 1: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Behave yourself!Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

José Bonnet, Business Support Systems/Customer Processes, PT Inovação, S.A.

25th & 26th June 2010

This document is part of the Intellectual Property of PT Inovação and cannot be reproduced or used without an explicit and written authorization

Page 2: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Page 03 Who are we and what do we do?09 What’s the problem?10 What’s the proposed solution?31 Doubts and Conclusions

Agenda

2 © 2010 Portugal Telecom Inovação, S.A.

Page 3: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

3

!"#$#%!"#$###%

&#'(%)*"+*%

!(",(%"$"##$###%

!(",-.#/%

0$1'(#%%$"##$###%

&#1#'/#23#%&'$(##$###%

4#""(3(1%

5"#1$/%(!$###$###%

5"#1$/%

67(%8(9:%)#$###%

67(%8(9:%*%!";23$<*%

=#'("(2*%&$(##$###%

5(,1>#2#%

?;/$%'"#$###%

8$9("%0*1,*%

0$1'(#%&$"##$###% 0$1'(#%

'##$###% 0$1'(#%!##$###%

*+,-./+012+/34560789:5,;<0=0''0

>+?@5,A0BC+,9?5,<=0&&0

DE>1F<0G0H5IJ,96K<0=0&0G0L0

DE>BF<0=0&0

0$1'(#%'##$###%

© 2010 Portugal Telecom Inovação, S.A.

http://www.ptinovacao.pt/

Page 4: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

No fence sitting!

4 © 2010 Portugal Telecom Inovação, S.A.

Page 5: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Be creative!5© 2010 Portugal Telecom Inovação, S.A.

Page 6: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Be

flex

ible

!

6

© 2010 Portugal Telecom Inovação, S.A.

Page 7: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Be agile!

“It’s not the big that eat the small, it’s the fastest that eat the slow” Jason Jennings, Laurence Haughton

© National Geographic

Page 8: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

! " # !" "# !# !"# $

CORPORATE SALES MANAGEMENTCAMPAIGN MANAGEMENTCAMPAIGN ANALYTICSCAMPAIGN DESIGNLEAD GENERATION

TM FORUM APPLICATIONS FRAMEWORK (TAM)

THE BSS/OSS SYSTEMS LANDSCAPE RELEASE 3.0

MARKET / SALES MANAGEMENT

AMDOCS > CUSTOMER EXPERIENCE SYSTEMS INNOVATION

For the TM Forum Application Framework refer to the TM Forum document GB929 v3.0 at www.tmforum.org. An electronic copy of this poster is available at http://www.amdocs.com/public/TAM3.0.pdf. TAM poster design © Amdocs. TAM content © TM Forum 2008.

PRODUCT MANAGEMENTPRODUCT/SERVICE CATALOG MANAGEMENT

> Product Offering Structure Data Model> Product Instantiation> Product Components Maintenance> Components Reuse> Product to External Functions View Mgmt.> Components Relations Management

> End-toEnd Product Data Management> Service Logical Representation Management> Components to Services and Resources Relationship Management

AP

PLIC

ATIO

N IN

TEG

RA

TION

INFR

ASTR

UC

TUR

E

CO

MM

ON

CO

MM

UN

ICA

TIO

NS

- EN

TE

RP

RIS

E A

PP

LIC

AT

ION

INT

EG

RA

TIO

NB

US

INE

SS

PR

OC

ES

S M

AN

AG

EM

EN

T &

WO

RK

FL

OW

PRODUCT STRATEGY / PROPOSITION MGMT.> Strategy Delivery Project Management> Strategy Performance Reporting

> Strategy Capturing and Management> Proposition Organization> Link Strategy to Propositions> Link Propositions to Products

OPERATIONS SUPPORT & READINESS FULFILLMENT ASSURANCE BILLING

SERVICE MANAGEMENT

RESOURCE MANAGEMENT

> Product Campaign Tracking> Product Revenue Reporting> Product Cost Reporting> Product Capacity Analysis

> Product Cost Management> Product Inventory Optimization> Product Sourcing Determination

PRODUCT PERFORMANCE MANAGEMENT> Model Products> Provide Detailed Product Specifications> Introduce New Products> Solicit Product Requirements

> Manage Existing Products> Obsolesce/Retire Products> Implement Marketing & Offer Strategies

PRODUCT LIFECYCLE MANAGEMENT

SERVICE QUALITY MONITORING &IMPACT ANALYSIS

> Monitor Service Quality> Analyze Service Quality

> Improve Service> Identify & Report Service Constraints

SERVICE ORDER MANAGEMENTSERVICE CONFIGURATION MANAGEMENT> Service Parameters Allocation> Service Parameters Reservation> Update Service Inventory> Compose a Service Configuration Plan> Service Configuration> Cross Service Dependencies

SERVICE ACTIVATION MANAGEMENT> Plan Service Activation> Service Configuration Activation> Activation Notifications> Update Information in Service Inventory

SERVICE AVAILABILITY> Service Address Validation> Service Availability Validation> Service Termination Points Dertermination> Determination of Access Provider> Determination of Delivery Interval.

SERVICE DATA COLLECTION

SERVICE ORDER VALIDATION

SERVICE DESIGN/ASSIGN> Design Solution> Assign/Procure Network Resources> Procure Access> Procure CPE

SERVICE ORDER PUBLICATION

SERVICE ORDER ORCHESTRATION> Product/Service Order Decomposition> Service Order Tracking & Management

RESOURCE PROCESS MANAGEMENT

REAL-TIME BILLING MEDIATION

BILLING DATA MEDIATION

VOUCHER MANAGEMENT

> CDR Formatting, Mediation & Correlation> IP & IPCDR Formatting / Mediation / Correlation

> Wholesale Partner Gateways> CDR/IPCDR Pre-Processing / Rating

> Acquisition and Validation of Events> Common Event Record Formatting> Customer Identification and Event Routing

> Communication with the Session Control Device> Communication with the Rating Engine

> Voucher Ordering> Definition and Creation of Packages and Tentative Vouchers> Pin Generation and Encryption

> Pairing of Serial Numbers with PINs> Sending of the Order File to the Manufacturer> Voucher Distribution to Dealers

ENTERPRISE MANAGEMENTREVENUE ASSURANCE MGMT. HR MANAGEMENT FINANCIAL MANAGEMENT ASSET MANAGEMENT SECURITY MANAGEMENT KNOWLEDGE MANAGEMENT

> Data Management Acquisition> Data Transformation & Remodeling> Data Cleansing> Data Integration> Data Warehousing

ENTERPRISE INFORMATION APPLICATIONS> Business Intelligence Application> Generation of Event Triggers> Marketing and Campaign Management Support> Meta Data Repository

SUPPLIER / PARTNER MANAGEMENTSUPPLY CHAIN MANAGEMENT WHOLESALE/INTERCONNECT BILLING APPLICATION

> Reference Data Creation & Management> Products and Services Definition> Partners’ Accounting> Partners’ Business Event Processing> Error Management> Partner Invoice Management

> Settlement Management> Handling of Payment> Disputes Management> Monitoring Tools> Payment Tracking

PARTNER MANAGEMENT> Partner Definition and Hierarchy Management> Agreement Definition> Direct and Indirect Settlement> Real-Time Settlement> Drill Down Reconciliation

> Partner Event Processing and Revenue Share Accounting> Partner Payment Handling> Pre-Defined Revenue Sharing Agreements and Variation Rules

SLA MANAGEMENT> SLA Metrics Calculation> SLA Alarms Handling> Charge/Settlement Adjustment Notification> Collate Historical SLA Information

> Operational Level to SLA Metric Comparison> KPIs and KQIs Collection> Analyze Historical SLA Information

> Sla Alarms Reporting> Update Datawarehouse with Sla Statistics

SERVICE PROBLEM MANAGEMENT> Problem Reception> Trouble Ticketing> Problem Consolidation> Closure> Allocating Priority> Reporting> Updating Billing Systems

> Advising the Network Operations Center> Tasks Allocation> Tracking Progress> Advising the Customer Resource Management Systems (CRM)> Confirming When Impact has been Removed

> Updating Configuration Management Systems> Updating Inventory Management Systems> Advising any other OSS/ Systems as Needed> Confirming when Fix has been Completed

> Detection of Data Discrepancies> Detection of Data Integrity & Correctness Problems> Rating & Billing Verification> Investigation of Revenue Leakages> Grouping & Classification of Leakages

> Equipment and System Testing> Trouble Reports and Alarms> Automation of Revenue Assurance Controls & Data Collection> Automation of Leakages correction> Generation of Revenue Leakage Reports and Documentation

> Job Aides> Product Support

SALES AIDS

FRAUD MGMT.

SERVICE INVENTORY MANAGEMENT> Service Inventory Retrieval> Service Inventory Update Notifications

> Service Inventory Update> Service Inventory Reconciliation

> Service Inventory Information Model

SERVICE SPECIFICATION MANAGEMENT

> Short-Term Performance Repository> Input to Service Planning & Forecasting Applications> Identification of Service Related Problems> Historical Trending> Service Performance “Dashboard”

> Collection of Service Performance Data> Map the Performance Data to Service Topology> Calculate Service Related KPIs, KQIs> Long-Term Performance Archive> Service Triage/Testing

SERVICE PERFORMANCE MANAGEMENT

CUSTOMER SELF MANAGEMENTCUSTOMER INFORMATION MANAGEMENT> Customer Name> Contact Persons for this Customer> Account Managers for this Customer> Customer’s Interactions History> Customer Addresses> Customer Contact Phone Numbers

> Customer Organizational Hierarchy> Customer’s Billing Accounts> Customer’s Products/Services> Customer’s Orders History> Customer’s Trouble Tickets History

CUSTOMER QoS/SLA MANAGEMENTCUSTOMER ORDER MANAGEMENTCUSTOMER ORDER ESTABLISHMENT> Channel Guidance and Data Capture> Customer & Product Data Collection> Product Offering Availability> Customer Order Validation

CUSTOMER ORDER PUBLICATION

CUSTOMER ORDER ORCHESTRATION> Customer Order Distribution> Customer Order Tracking & Mgmt.

CUSTOMER ORDER LIFECYCLE MGMT.> Pending Orders Maintenance> Order Versioning Maintenance> Tracking & Logging> Order Change Management> Order Cancelation> Ordering Business Rules> Ordering Activity Governance

> Measure Perceived QoS> Document Conractual SLA Obligation

> Manage QoS/SLA Violation > Manage Reporting

> Verify Customer Relationship> Bill Capture and Notification> Customer’s SLA’s Verification> Problem Reception> Evaluate & Qualify Problem

> Plan & Assign Resolution> Track & Manage Resolution> Close & Report> Billing Systems Update> Advising Other OSS Systems

CUSTOMER SELF EMPOWERED BILLING> Bill View> Unbilled Charges View> Usage View> Payment Capture> Dispute Capture and Resolution> Usage and Charges Comparison> Penalties View> Address Book Driven Usage View> Split Statement for Demarcation Between Calls

> Calls Assignment for Classification of Usage> Corporate Customer Support> Reports on Usage and Charges

CUSTOMER SELF EMPOWERED ASSURANCE> Account Management> Self Registration to Online Services> Service Requests Management> Service Requests Submission> Service Request Amendment> Service Request Closure> Users Management> Alert and Notifications Setting> Address Book Management

> Access to Call Center Agents> Service Requests and SLA Reporting> Corporate Customers Support

CUSTOMER SELF EMPOWERED FULFILLMENT> Product Catalogue and Offerings Browsing> Guided Selling Driven View for Offer Eligibility> Shopping Cart Driven Order Management> Assigned Products Maintenance> Rate Plans Amendment> Alerts and Notifications Setting> Knowledge Management Access> Access to Call Center Agents> Reports on Fulfillment and SLA Aspects> Corporate Customers Support

COMPENSATION & RESULTS

CAMPAIGN EXECUTION & REFINEMENT

CAMPAIGN PERFORMANCETRACKING

CUSTOMER/PROSPECT DATA ACQUISITIONCUSTOMER QUALIFICATION> Customer Credit Eligibility> Product & Service Availability

MASS MARKET SALES WORKFLOW MGMT.OFFER MANAGEMENTSALES NEGOTIATIONMASS MARKET SALES REPORTING &TRACKING

MASS MARKET SALES MANAGEMENT

SALES PORTALS

> Contract Workflow> Design/Price/Propose Workflow> Sales Workflow

CORPORATE SALES WORKFLOW MGMT.

> Design> Price

SOLUTION MANAGEMENT

TRANSACTIONAL DOCUMENT PRODUCTIONDOCUMENT ARCHIVING

> Compression and Storage of Transactional Document Data> Retrieval Mechanisms for External Systems> Archive Maintenance and Administrative Functions

CUSTOMER SERVICE / ACCOUNTPROBLEM RESOLUTION

RESOURCE ORDER TRACKING & MGMT.> Resource Order Tracking> Jeopardy Tracking> Resource Order Completions> Dependencies Management> Status Reporting

RESOURCE ORDER ORCHESTRATION

RESOURCE ORDER VALIDATION

RESOURCE ORDER DATA COLLECTION

RESOURCE AVAILABILITY> Resource Address Validation> Resource Availability Validation> Resource Feasibility Validation> Establishment of Service Termination Points> Determination of Delivery Interval

RESOURCE ORDERCONFIGURATION MANAGEMENT> Resource Parameters Allocation> Resource Parameters Reservation> Update of Resource Inventory> Compose A Resource Configuration Plan> Resource Configure> Cross Resource Considerations

RESOURCE ORDER PUBLICATION

CUSTOMER MANAGEMENT

CUSTOMER SERVICE REPRESENTATIVE TOOLBOX

CUSTOMER CONTACT, RETENTION & LOYALTYVERIFY CUSTOMER RELATIONSHIP ANALYZE & MANAGE CUSTOMER RISK

VALIDATE CUSTOMER SATISFACTION

INTERACTION MANAGEMENT BUILD CUSTOMER INSIGHT PERSONALIZE CUSTOMER PROFILE FOR RETENTION & LOYALTY

CSR ASSURANCE BILLING INQUIRY DISPUTE & ADJUSTMENT MANAGEMENTCSR FULFILLMENT> Product Catalogue & Offerings Browsing> Order Capture & Negotiation> Assigned Products Maintenance> CSR Access to A Specific Order> Business/Financial/Operational Reporting> Error Resolution> Jeopardy Notifications> Order Take-Over & Relinquish> Orders Administration

> Price/Cost Optimization> Propose

CONTRACT MANAGEMENT> Contract Generation> Contract Implementation> Contract Storage

FUNNEL & LEAD MANAGEMENT> Funnel Management> Sales Account Management> Lead Management

CUSTOMER SALES PORTALS INDIRECT SALES PORTALSINTERNAL SALES PORTALSCOMPENSATION RESULTS REPORTING

> Work Flow and Rules Engine Testing> Auto and Manual Test Initiation> Life Cycle Management Testing

> Head Management Test> Manage Test Head Resources Capacity> Manage Test Head Availability

RESOURCE TESTING MANAGEMENT> Element and Test Head Command and Control> Test Results Management> Test Results Interpretation

RESOURCE ASSURANCE MANAGEMENT

> Network Topology Modeling> Network Topology Monitoring> Protection/Rerouting Policy> Resource Load Monitoring> Application Keep-Alive Monitoring

> Threshold Policy Modeling> Automatic Workforce Control> Resource Status Alarm Handling> Resource Status Alarm Logging

RESOURCE STATUS MONITORING

> Alarm Correlation > Root Cause Analysis

CORRELATION & ROOT CAUSE ANALYSIS

> Distributed Meta Model of the Configurable Resources> Distributed Meta Model of Expected Resource Load> Process Driven Workforce Coordination

> Mediation Layer to Support Interaction of Diverse Applications> Directory-Based Profiles

FAULT STATUS MONITORING

> Event Management> Trouble Ticket Creation> Auto and Manual Ticket Initiation> Outage Classification and Prioritization> Problem Tracking / History> Ticket Workflow and Notification> Problem Workflow> Personnel Utilization and Interface to Work Force Management

> Knowledge Management> Resolution Identification, Tracking and Confirmation> MTTR and Uptime Measurements> Problem Trending and Identification of Design Flaws or Hot Spots> Feedback to Customer: Service Status, Trouble Status, Network Bulletins> Business Rules Management

RESOURCE PROBLEM MANAGEMENT APPLICATIONS

> Resource Performance Data Collection> Resource Topology Status Data Collection> Business Rules> Cross NE and Layer Data Mediation> Long-Term Performance Archive> Short-Term Performance Repository> Input to Capacity Planning and Forecasting Applications> Input to Resource Problem Management Applications

> Historical Trending> Capacity and Configuration Problem Identification> Problem Triage and Testing> Utilization Trending> Capacity/load Management> Performance “Dashboard”

RESOURCE PERFORMANCE MANAGEMENT

SLA METRIC MANAGEMENT

TRAFFIC MANAGEMENT

RESOURCE INVENTORY MANAGEMENT APPLICATIONS> Resource Inventory Information Model> Resource Inventory Retrieval

> Inventory Update Notifications > Resource Inventory Update> Resource Inventory Reconciliation

> Scheduling> Forecasting

WORKFORCE MANAGEMENT APPLICATIONS> Dynamic Management> Operational Support

> Provides the Orchestration Between Planning Duties and Manual Network Engineering Activities> Interfaces to Workforce Management

RESOURCE CHANGE MANAGEMENT> Supports Interface to Financial Control to Authorize Expenditure> Supports Links to Vendors ERP> Provide Jeopardy Management

> Support Project Management of Build Projects> Coordinate Project Activities With the Suppliers> Support Collaborative Project Management Across Business Boundaries

JEOPARDY MANAGEMENT

RESOURCE ASSURANCE PROCESS ORCHESTRATION

TRANSACTIONAL DOCUMENTFORMATTER> Bills and Letter Template Formatting> Template Usage Business Rules> Input Data Source Definition> Input Binding Rules to Template> Resource Template Definition

DOCUMENT DELIVERY

> Single Sign-On > Centralized Data Entry > Customer Information Dashboard > In-Context, Configurable, Workflow-Driven Navigation > CSR Guidance > Conversational Scripting > Embedded Actions > Launch In-Context Common Actions

CHANNEL SALES MANAGEMENT> Create and Promote Leads > Create and Promote Contacts > Literature Dispatching > Lead Management > Sales Quotation

DIRECT SALES FORCE> Opportunities Dispaching> Sales Quotes Dispatching> Forecast Analysis> Opportunity & Quote Mgmt.> Territory Management

> Action Items and Follow Ups> Holistic Customer View> Order Capture, Negotiation and Activation> Order Tracking Capabilities> Multi Media Integration> Cross Sell/Up Sell recommendations> Scripting

TELESALES> Customer Information Management> Contact and Retention Management> Order Capture and Negotiation> Problem Resolution> Self Service Kiosk> Agent Portable Device Support> Retail Store Integration

RETAIL OUTLET VIRTUAL NETWORK OPERATORS> Customer Information Management> Contact and Retention Management> Order Capture and Negotiation> Billing Management Activities> Receivables and Collection Activities> Problem Resolution> Data Fencing> VNO Personalization

> Mass Service/Product Activation> Mass Transaction Feed of New Orders> Activation of Service / Product Sold by Affiliate> Registration of Pre Activated Service / Product

AFFILIATES

> Customer Acquisition> Upgrade Customer’s Products /Services

DEALERS

ONLINE CHARGING> Real-time Rating> Service-Consumption Reservation and Authorization> Use of Customer Billing Hierarchy> Advice of Charge/Advice of Rate> Balance Management> Balance Management Policies> Balance Management Operations> Real-Time Charging

Non-Functional Aspects:> Multi-Session Support> Pre-paid/Post-Paid Convergence> High Availability> Low Latency> High Throughput

BILLING INQUIRY, DISPUTE &ADJUSTMENT MANAGEMENT

BILL INQUIRY> Balance, statement> List all invoices> View exact bill image> List all charges per invoice

RECEIVABLES MANAGEMENTA/R MANAGEMENT> Invoice Charges From Billing> Payment Management> Financial Account Management> Bill Preparation.

JOURNALIZATION

FINANCIAL REPORTING

COLLECTION MANAGEMENTCOLLECTION POLICY DEFINITION AND CONFIGURATION> Collection Flows Creation > Collection Rules Definition

> Collection Decision Engine > Collection Execution Monitoring> Collection Treatment Management > Manual Intervention

> Build Payment Plan > Payment Plan MonitoringCOLLECTION SETTLEMENT

COLLECTION POLICY EXECUTION AND MONITORING

BILL CALCULATION> Split Bill Charge and Event Distribution> Support Flexible Bill Cycle Definition> Discounts and Promotions> Taxes Requirements and Exemptions> Contract Commitment Tracking> Incorporate Payments, Adjustments, and Other Financial ActivityDISCOUNTS CALCULATIONTAX APPLYINGCOMMITMENT TRACKING

CUSTOMER BILL CHARGE CALCULATION> Recurring > One time > Usage

MANAGE BILL CYCLE RUN

QUOTATION ENGINE> Order Components> Customer information> Rating Schemes> Market Rating Rules

BILLING ACCOUNT MANAGEMENTBILLING ACCOUNT ASSOCIATIONS MANAGEMENT> Price Plan Determination> Shared Allowances Community> Charge Distribution to Pay Means

BILLING ACCOUNT CONFIGURATION MANAGEMENT

> Replenishment Relations> Reporting> Billing Statement Association> Charges Association to Billing Account

PRODUCT / SERVICE RATING> Charge Calculation> Charge Level Discounts And Taxes> Arbitrary Mathematical Rating> Pro Rating of Recurring Charges> Rerating> Flexible Accumulators of Usage Data

> Threshold Notifications> Advice of Charge> Advice of Rate

Non Functional Aspects: High ThroughputSmall Changes Precision

RESOURCE DOMAIN MANAGEMENTRESOURCE DISCOVERY RESOURCE ACTIVATION APPLICATIONS

> Update the Resource Instance to Perform the Activation or Deactivation> Update the Resource to Activate Billing Data Collection> Notify Resource Provision/Control of Activation Status> Update Resource Inventory with Resource Status Information> Queued/Scheduled Activation Requests

OSS INVENTORY / DATA SYNCHRONIZATION MANAGEMENT

> Configuration Validation and Rollback> Manage Dependencies Within, and Across Network Elements Through Rules> Multi-vendor and Multi-Technology Activation> Multiple NE Activation Coordination> Confirm / Identify Available Resources

TRANSACTIONAL DOCUMENT GENERATOR

> Document Information Formatting> Marketing Information Incorporating> Apply Regional Requirements> Legend Formatting> Send to Downstream Interface PAYMENT

> Immediate Payment of Balance/Specific Invoice > Prepaid Recharge

COLLECTION> Collection Inquiries> Perform Manual Collection Activities> Payment Arrangement Settlement with the Customer

> Issue Write-Offs> Manual Intervention in Collection Treatment> Collection Agent Reassignment

DISPUTE MANAGEMENT

> View unbilled charges> Generate bill on demand> View usage summary and details

ADJUSTMENTS

RESOURCE ORDER MANAGEMENT

PROTOCOL MANAGEMENT

RESOURCE FAULT & PERFORMANCE DATA MEDIATION

> Parsing of Data from One Format to Another> Correlation

> Pattern Recognition> Tools to Set Up and Maintain Parsing Rules

> What-If Configurations and Modeling> Real World Modeling> Controls Manual Installation Tasks> Interface with Configuration or Inventory Applications> Multi-Layer Modeling and Design

RESOURCE DESIGN/ASSIGN APPLICATIONS> Physical, Logical, and Software Resources Design> Graphical Resource Presentation> End-To-End Resource Design> Architecture Modifications to Include Resources or Changes> New Technology and New Resource Designs

RESOURCE LIFECYCLE MANAGEMENT> Resource Configuration Verification Versus Design> Resource Topology Verification Versus Inventory Mgmt. Systems

RESOURCE COMMISSIONING & CONFIGURATION MANAGEMENT> Resource Commissioning Process> Resource Configuration Management> Resource Configuration Logs

> Record Location of Spares> Record Commercial Information> Support Retrieval, Update, Update Notifications & Reconciliation

SPARES & WAREHOUSE INVENTORY MANAGEMENT> Database of All Spares> Barcode/RFID tracking of All Spares Resources> Record Location of Spares

> Network Asset Deployment Workflow> Resource Supply Chain Management> Resource Distribution> Resource Planning (Capacity)> Workforce Management> Resource Problem Management (Fault Management)> Resource Needs Identification

RESOURCE LOGISTICS> Resource or Kit Distribution> People + Part + Event Coordination> Stock Balancing> Warehouse Stock Level Projections> Engineering Work Order Management> Engineering Project Management

IMPLEMENTATION PLANNING> Implement Tactical Plans Locally> Provide Physical Implementation Information> Identify Shortfalls in Physical Infrastructure

RESOURCE SPECIFICATION MANAGEMENT

CAPABILITY SPECIFICATION MANAGEMENT

TACTICAL PLANNING> Implementing Strategic plans at All Technology Layers> Support Network Rearrangement> Remedial Relocation of Network Capacity in Response to Unpredicted Demand> Detailed Design and Implementation of Interconnect with Other Operators> Reactive Planning for Fulfillment> Reactive Planning for Fault Mgmt.> Reactive Planning for Performance Management

PLANNING DESIGN AUTOMATION> Applies Algorithmic and Heuristic Analysis of the Network> Use Generalized Capability View of the Network> Support Forecasting Functionality

STRATEGIC PLANNING> Analyze Demand Forecasts and Utilization Trends> Determine Optimum Network Deployments> Support Strategic Network Sizing Decisions> Support Strategic Data Centre locations, Sizing, Interconnectivity and Resilience> Determine the Role of Different Technologies in the Network.> Determine Network vendors, Devices and Configuration> Selection of Application Server Vendors and Infrastructure Applications> Specify the Generalized Resource Device and Technology Requirements> Support Radio Spectrum Allocation> Determining Interconnect Sites and Capacity to Other CSPs> Support Partner Management with Volume Requirement

8

Page 9: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

AOMACH

OCS

ASE

CIS

BIS APM OMG

VTS

Other systems

Other systems

9 © 2010 Portugal Telecom Inovação, S.A.

Page 10: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Other systems

Other systems

9 © 2010 Portugal Telecom Inovação, S.A.

PT Inovação’s BSS offer

Page 11: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

10

Behaviour-Driven Development

© 2010 Portugal Telecom Inovação, S.A.

Test Driven DevelopmentDomain Driven DesignAcceptance Test Driven Planning

http://behaviour-driven.org/

Page 12: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

11 © 2010 Portugal Telecom Inovação, S.A.

Page 13: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

12

Stories

© Tim Burton

Page 14: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

13

What’s in a story?Title  (one  line  describing  the  story)  Narrative:As  a  [role]I  want  [feature]So  that  [benefit]  Acceptance  Criteria:  (presented  as  Scenarios)  Scenario  1:  TitleGiven  [context]    And  [some  more  context]...When    [event]Then    [outcome]    And  [another  outcome]...  Scenario  2:  ...

© 2010 Portugal Telecom Inovação, S.A.

http://blog.dannorth.net/whats-in-a-story/

Page 15: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

13

What’s in a story?Title  (one  line  describing  the  story)  Narrative:As  a  [role]I  want  [feature]So  that  [benefit]  Acceptance  Criteria:  (presented  as  Scenarios)  Scenario  1:  TitleGiven  [context]    And  [some  more  context]...When    [event]Then    [outcome]    And  [another  outcome]...  Scenario  2:  ...

describe an activity

© 2010 Portugal Telecom Inovação, S.A.

http://blog.dannorth.net/whats-in-a-story/

Page 16: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

13

What’s in a story?Title  (one  line  describing  the  story)  Narrative:As  a  [role]I  want  [feature]So  that  [benefit]  Acceptance  Criteria:  (presented  as  Scenarios)  Scenario  1:  TitleGiven  [context]    And  [some  more  context]...When    [event]Then    [outcome]    And  [another  outcome]...  Scenario  2:  ...

© 2010 Portugal Telecom Inovação, S.A.

http://blog.dannorth.net/whats-in-a-story/

include a role, a feature and a benefit

Page 17: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

13

What’s in a story?Title  (one  line  describing  the  story)  Narrative:As  a  [role]I  want  [feature]So  that  [benefit]  Acceptance  Criteria:  (presented  as  Scenarios)  Scenario  1:  TitleGiven  [context]    And  [some  more  context]...When    [event]Then    [outcome]    And  [another  outcome]...  Scenario  2:  ...

© 2010 Portugal Telecom Inovação, S.A.

http://blog.dannorth.net/whats-in-a-story/

scenario title: say what’s different

described in terms of Givens, Events and Outcomes

describe the feature

givens should define all of, and no more than, the required context

Page 18: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

13

What’s in a story?Title  (one  line  describing  the  story)  Narrative:As  a  [role]I  want  [feature]So  that  [benefit]  Acceptance  Criteria:  (presented  as  Scenarios)  Scenario  1:  TitleGiven  [context]    And  [some  more  context]...When    [event]Then    [outcome]    And  [another  outcome]...  Scenario  2:  ...

© 2010 Portugal Telecom Inovação, S.A.

a story should be small enough to fit in an iteration

http://blog.dannorth.net/whats-in-a-story/

Page 19: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Cucumber

14 © 2010 Portugal Telecom Inovação, S.A.

http://cukes.info/

http://wiki.github.com/aslakhellesoy/cucumber/

Page 20: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

15

DSL Gherkin

Feature

Scenario outlineScenario

Given

When

Examples

Then

And

But

Background© 2010 Portugal Telecom Inovação, S.A.

Feature: watch a 1min video from the World Cup on my mobile As a Customer I want to watch a short video (1min) on my mobile for 0.50€ So that I can watch all goals, wherever I am

Scenario: show a 1min. video by 0.5€ Given a message with a URL sent to the customer’s mobile And a balance of 1€ When the customer clicks the URL Then 0.50€ is discounted from the customer’s balance And the video is shown

Scenario: not enough balance to show the video Given a message with a URL sent to the customer’s mobile And a balance of 0.45€ When the customer clicks the URL Then an error of “Sorry, not enough balance” is returned

Page 21: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

16

Feature: watch a 1min video from the World Cup on my mobile As a Customer I want to watch a short video (1min) on my mobile So that I can watch all goals

Scenario: show a 1min. video by 0.5€ Given a message with a URL sent to the customer’s mobile And a balance of 1€ When the customer clicks the URL Then 0.50€ is discounted from the customer’s balance And the video is shown

Scenario: not enough balance to show the video Given a message with a URL sent to the customer’s mobile And a balance of 0.45€ When the customer clicks the URL Then an error of “Sorry, not enough balance” is returned

© 2010 Portugal Telecom Inovação, S.A.

Title

Narrative}

Acceptance criteria}

Page 22: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

17 © 2010 Portugal Telecom Inovação, S.A.

$ cucumber features/video.feature

Page 23: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Feature: watch a 1min video from the World Cup on my mobile As a Customer I want to watch a short video (1min) So that

Scenario: show a 1min. video by 0.5€ # features/video.feature:6 Given a message with a URL sent to the customer’s mobile # features/video.feature:7 And a balance of 1€ # features/video.feature:8 When the customer clicks the URL # features/video.feature:9 Then 0.50€ is discounted from the customer’s balance # features/video.feature:10 And the video is shown # features/video.feature:11

Scenario: not enough balance to show the video # features/video.feature:13 Given a message with a URL sent to the customer’s mobile # features/video.feature:14 And a balance of 0.45€ # features/video.feature:15 When the customer clicks the URL # features/video.feature:16 Then an error of “Sorry, not enough balance” is returned # features/video.feature:17

2 scenarios (2 undefined)9 steps (9 undefined)0m0.011s

17 © 2010 Portugal Telecom Inovação, S.A.

Page 24: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

You can implement step definitions for undefined steps with these snippets:

Given /^a message with a URL sent to the customer’s mobile$/ do pending # express the regexp above with the code you wish you hadend

Given /^a balance of (\d+)€$/ do |arg1| pending # express the regexp above with the code you wish you hadend

When /^the customer clicks the URL$/ do pending # express the regexp above with the code you wish you hadend

Then /^(\d+)\.(\d+)€ is discounted from the customer’s balance$/ do |arg1, arg2| pending # express the regexp above with the code you wish you hadend

Then /^the video is shown$/ do pending # express the regexp above with the code you wish you hadend

17 © 2010 Portugal Telecom Inovação, S.A.

Page 25: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

17 © 2010 Portugal Telecom Inovação, S.A.

Given /^a balance of (\d+)\.(\d+)€$/ do |arg1, arg2| pending # express the regexp above with the code you wish you hadend

Then /^an error of “Sorry, not enough balance” is returned$/ do pending # express the regexp above with the code you wish you hadend

If you want snippets in a different programming language, just make sure a filewith the appropriate file extension exists where cucumber looks for step definitions.

Page 26: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

18

"pt":  name: Portuguese  native: português  background: Contexto  feature: Funcionalidade  scenario: Cenário|Cenario  scenario_outline: Esquema do Cenário|Esquema do Cenario  examples: Exemplos  given: "*|Dado"  when: "*|Quando"  then: "*|Então|Entao"  and: "*|E"  but: "*|Mas"

© 2010 Portugal Telecom Inovação, S.A.

Multi-languageMore than 40 written languages already

If you want snippets in a different programming language, just make sure a filewith the appropriate file extension exists where cucumber looks for step definitions.

Cuke4Duke: JVM

http://github.com/aslakhellesoy/gherkin/blob/master/lib/gherkin/i18n.yml

http://wiki.github.com/aslakhellesoy/cuke4duke/

Page 27: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

19© Pragmatic Programmers

David Chelimskyhttp://davidchelimsky.net/

Page 28: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

20

Cucumber + rSpec

1. Write an scenario with Cucumber (1)2. Write a step definition3. Run and Watch it fail (2)

1. Write a failing code example with RSpec (3)

2. Get the example to pass (4)3. Refactor (5)4. Repeat 3.1 – 3.3 until Cucumber step is

passing5. Repeat 2 – 3 until Cucumber scenario

is passing (6)6. Refactor (7)

© 2010 Portugal Telecom Inovação, S.A.

Red Green Refactor

Page 29: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

rSpec

21jBehave

© 2010 Portugal Telecom Inovação, S.A.

$ cat ./spec/account_spec.rbdescribe Account do context "transfering money" do it "deposits transfer amount to the other account" do source = Account.new(50, :USD) target = mock('target account') target.should_receive(:deposit).with(Money.new(5, :USD)) source.transfer(5, :USD).to(target) end

it "reduces its balance by the transfer amount" do source = Account.new(50, :USD) target = stub('target account') source.transfer(5, :USD).to(target) source.balance.should == Money.new(45, :USD) end end end

http://rspec.rubyforge.org

Page 30: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

rSpec

21jBehave

© 2010 Portugal Telecom Inovação, S.A.

http://rspec.rubyforge.org

$ spec ./spec/account_spec.rb --format nested Account transfering money deposits transfer amount to the other account reduces its balance by the transfer amount

2 examples, 0 failures

Page 31: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

22 © 2010 Portugal Telecom Inovação, S.A.

REST

http://.../customers/1/accounts/3/products

Page 32: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

23

STEP DEFINITION STYLES 307

!"#$%&'()*+,-./(,

0$'-#&'()*+,-./(,

1",(2'*3-)(%*022(//

4&/'

!%-.

5/-%&'()

56'(7,&'()

Figure 21.1: Comparing step definition styles

• Automated Browser: Access the entire Rails MVC stack in a real

web browser by driving interactions with the Webrat API and its

support for piggy-backing on Selenium. This style is fully inte-

grated but is the slowest to run and can be challenging to main-

tain.

• Simulated Browser: Access the entire MVC stack using Webrat,

a DSL for interacting with web applications. This style provides a

reliable level of integration while remaining fast enough for general

use, but doesn’t exercise JavaScript.

• Direct Model Access: Access ActiveRecord models directly, bypass-

ing routing, controllers, and views. This is the fastest but least

integrated style.

When writing Cucumber scenarios, integration and speed are opposing

forces, as illustrated in Figure 21.1. Fast is better than slow, of course,

but integrated is better than isolated when we’re looking for confidence

that an app will work in the hands of users once it is shipped. So what’s

the best approach to take?

Report erratum

this copy is (B13.0 printing, January 19, 2009)Prepared exclusively for Jose Bonnet

© 2010 Portugal Telecom Inovação, S.A.

Steps definition

Given

When,Then

Given /there are (\d+) vendors/i do |n| Vendor.transaction do Vendor.destroy_all n.to_i.times do |n| Factory.create(:vendor, :business_name => "Vendor #{n}") end endend

Given’s: set-up the context in each system

{

Page 33: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Other systems

Other systems

24

AOMACH

OCS

ASE

CIS

BIS APM OMG

VTS

© 2010 Portugal Telecom Inovação, S.A.

Given...

Page 34: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

Other systems

Other systems

24

AOMACH

OCS

ASE

CIS

BIS APM OMG

VTS

© 2010 Portugal Telecom Inovação, S.A.

Then...When...

Page 35: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

25 © 2010 Portugal Telecom Inovação, S.A.

• simulated browser• ruby acceptance tests• web_steps.rb• with jRuby: Capybara

Webrat

def test_sign_up visits "/" clicks_link "Sign up" fills_in "Email", :with => "[email protected]" select "Free account" clicks_button "Register" ... end

http://gitrdoc.com/brynary/webrat/tree/master/

Page 36: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

26

© 2010 Portugal Telecom Inovação, S.A.

• automated browser• the only way if there’s JavaScript involved

Selenium http://seleniumhq.org/

Page 37: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

27

© 2010 Portugal Telecom Inovação, S.A.

• automated browser• open-source, programmable in Ruby• any language, any browser

Watir

Starting a new browser (and going to a site)require  'watir'

b  =  Watir::Browser.new

b.goto("http://www.google.com")

Starting a new browser at a siterequire  'watir'

b  =  Watir::Browser.start("http://www.google.com")

Choosing which browser to startrequire  'watir'

Watir::Browser.default  =  "firefox"

b  =  Watir::Browser.start("http://www.google.com")

Setting a text fieldb.text_field(:name,  "username").set  "watir"

Clicking a buttonb.button(:name,  "logon").click

Clearing & setting a checkboxb.checkbox(:name,  "enabled").clear

b.checkbox(:name,  "enabled").set

Submitting a formb.form(:action,  "submit").submit

Clicking a linkb.link(:href,  "http://google.com").click

Checking for text in a pageputs  b.text.include?  "llama"

Checking the title of a pageputs  b.title

http://watir.com/

Page 38: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

28

2010 2011 2012 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4

!"#$

%"&'"()*$

+,&$&(-./0($%"&$"()1()234($

&(-./0($%"&$5)6127($

&(-./0($%"&$5-28($"(89)(-*$

Hudson

© 2010 Portugal Telecom Inovação, S.A.

• Continuous Integration server• inter-system integration: not so continuous...• ... discrete, at specific dates

http://hudson-ci.org/

Page 39: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

29

rCov

© 2010 Portugal Telecom Inovação, S.A.

• Ruby code coverage http://eigenclass.org/hiki/rcov

Page 40: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

30 © 2010 Portugal Telecom Inovação, S.A.

Master thesis• API Testing Dashboard:

• how much code is there to be covered by tests?• which tests stopped making sense since the last integration?

• I have to be notified of the test results• it’ll be like rCov for:

• multiple API’s/programming languages• multiple systems

Page 41: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

31

Doubts

Page 42: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

31

DoubtsHow costly to maintain?

Page 43: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

31

DoubtsHow costly to maintain?

How easy to evolve?

Page 44: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

31

Doubts

How much scalable?

How costly to maintain?How easy to evolve?

Page 45: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

31

Doubts

How much scalable?How much

maintainable?

How costly to maintain?How easy to evolve?

Page 46: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

32 © 2010 Portugal Telecom Inovação, S.A.

• We’ve got a hard problem in our hands:• several systems• some from other vendors• have to work together• in a very dynamic environment

• We’re trying a BDD approach to test its integration• We’ve got multiple tools available• Some tools need some improvements

So...

http://www.ptinovacao.pt/

Page 47: Behave yourself! Taming the wild, wild multiple system integration using RSpec, Cucumber & Friends

33

Thank you!

© 2010 Portugal Telecom Inovação, S.A.

[email protected]