Outline. 1. A bit about Bing 2. Velocity What does it mean? 4. Modern Engineering Principles 5. The inner and outer loop 6. Performance gating



Similar documents
Modern CI/CD and Asset Serving

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Software Continuous Integration & Delivery

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Service Design Best Practices

ALM 271 From End-User Experience Monitoring to Management Dashboards and Reporting Stefan Lahr, SAP Active Global Support September, 2011

About me - Joel Montvelisky

From Traditional Functional Testing to Enabling Continuous Quality in Mobile App Development

Guide to Mobile Testing

Testing Lifecycle: Don t be a fool, use a proper tool.

GUI Test Automation How-To Tips

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

WHITE PAPER Redefining Monitoring for Today s Modern IT Infrastructures

Test Automation: A Project Management Perspective

Continuous???? Copyright 2015 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

A Modern Approach to Monitoring Performance in Production

Cloud Computing Trends

Agile extreme Development & Project Management Strategy Mentored/Component-based Workshop Series

Agile Software Factory: Bringing the reliability of a manufacturing line to software development

Improve performance and availability of Banking Portal with HADOOP

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

What s new in the HP Functional Testing 11.5 suite Ronit Soen, product marketing John Jeremiah, product marketing

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

SOFTWARE TESTING TRAINING COURSES CONTENTS

Agile Journeys. The CareerBuilder Story

White Paper. How Streaming Data Analytics Enables Real-Time Decisions

WHITE PAPER September CA Nimsoft Monitor for Servers

Testhouse Training Portfolio

ICAgile Learning Roadmap Agile Testing Track

A Hundred Days of Continuous Integration

Continuous Delivery Benefits, Best Practices and Practical Advice

Achieving Continuous Integration with Drupal

Modern Web development and operations practices. Grig Gheorghiu VP Tech Operations Nasty Gal

The Importance of Continuous Integration for Quality Assurance Teams

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Continuous Delivery at SAP: From dinosaur to spaceship. Darren Hague / SAP Global IT November 1st, 2013 Public

Continuous delivery Release software on-demand, not on Red Alert

ROCANA WHITEPAPER How to Investigate an Infrastructure Performance Problem

Continuous Integration

Virtual CPE and Software Defined Networking

The Role of Feedback in Continuous Integration, Continuous Delivery and Agile ALM

HIGH-SPEED BRIDGE TO CLOUD STORAGE

The Tester's Role in Continuous Integration

Field Service Management in the Cloud

A How-to Guide By: Riaan Van Der Merwe, General Manager, Dynamics, Neudesic

NoSQL for SQL Professionals William McKnight

Fundamentals of Continuous Integration

Glassbox: Open Source and Automated Application Troubleshooting. Ron Bodkin Glassbox Project Leader

API Architecture. for the Data Interoperability at OSU initiative

Making Data Available on the Web

Scalable Web Programming. CS193S - Jan Jannink - 1/12/10

OpenShift. Marek Jelen, OpenShift, Red Hat

Rotorcraft Health Management System (RHMS)

Accelerating Wordpress for Pagerank and Profit

Test Run Analysis Interpretation (AI) Made Easy with OpenLoad

MOBILE APP DEVELOPMENT CUSTOM CROSS PLATFORM APPLICATIONS

DevOps for the Mainframe

IO Visor: Programmable and Flexible Data Plane for Datacenter s I/O

Why Test Automation Fails

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

WHITE PAPER NOVEMBER Eliminate Software Development and Testing Constraints with Service Virtualization

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

4D Deployment Options for Wide Area Networks

Integrating Online Banking and Top-up Card into Payment Gateway

Web UI & Functional Test Automation for Continuous Agile Deliveries

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

A Gentle Introduction to Cloud Computing

10 Best Practices for Application Performance Testing

Header 1. John T. Irwin Software Consulting Manager EMEA Managing End User Experience

Co-Presented by Mr. Bill Rinko-Gay and Dr. Constantin Stanca 9/28/2011

Modern practices TIE-21100/

Preparing Your Business for Magento 2.0

Improving your Drupal Development workflow with Continuous Integration

Reference Model for Cloud Applications CONSIDERATIONS FOR SW VENDORS BUILDING A SAAS SOLUTION

The Next Wave of Big Data Analytics: Internet of Things and Sensor Data. November 6, 2014 Hannah Smalltree, Director

Testing Tools using Visual Studio. Randy Pagels Sr. Developer Technology Specialist Microsoft Corporation

Security Automation in Agile SDLC Real World Cases

From the Monolith to Microservices: Evolving Your Architecture to Scale. Randy linkedin.com/in/randyshoup

Course Goals. Solve Non-Technical Customer problem Server side: Ruby on Rails Client side: HTML, CSS, AJAX, JavaScript Deploy using cloud computing

DevOps Unify Your Tests Or Fail. Kevin Surace CEO Appvance Inc

B O L T. BOLT: Streamlining Oracle Commerce Implementation and Development. Amplifi Commerce. March Copyright 2015 Amplifi Commerce.

A Sumo Logic White Paper. Harnessing Continuous Intelligence to Enable the Modern DevOps Team

APPLICATION PERFORMANCE MONITORING

Integrating Mobile apps with your Enterprise

Continuous Delivery Software-Deployments ohne graue Haare. 3. April 2012 Corsin Decurtins

Perfect Your Mobile App with Load Testing and Test Automation

Transcription:

Bing Agility MODERN ENGINEERING PRINCIPLES FOR LARGE SCALE TEAMS AND SERVICES

Outline 1. A bit about Bing 2. Velocity What does it mean? 3. What is tested? 4. Modern Engineering Principles 5. The inner and outer loop 6. Performance gating

A bit about Bing Search market share 70.00% 60.00% 50.00% 40.00% 30.00% 20.00% 10.00% 0.00% 1. BING IS GROWING Jan-09 Jan-10 Jan-11 Jan-12 Jan-13 Jan-14 WW > 300M users, 9B searches/month US >100M users, 4B searches/month Queries/UU (Dec 2014) Bing 38.3 2. MORE WORK TO DO Google 66.9 Bing Powered by Bing Google 3. DIFFERENTIATE

Velocity Does not mean Does mean Shipping untested code (any bozo can do that) Shipping thoroughly tested code Shipping with high quality Shipping fast!

What is tested? Security Performance Browser Device Globalization Localization Privacy Scenario Coverage Instrumentation Composition

Modern Engineering Principles Current engineering landscape Hundreds of engineers 2000 engineers, across all continents Ship 4x/day Agile Full build shipped to production, no live site issues! {design, dev, test} ship (no P0 bugs) repeat One source tree Componentization, contracts, modularization 19.7% search market share (>30% share if Yahoo! is included)

Modern Engineering Principles Test-Driven Evolution: 11 Principles 1. Automate every test, but don t test everything 2. Run all tests for every single check-in 3. Tests are binary: either they all pass, or they all fail 4. No test selection. Run them all. Scale thru HW + SW + Quota 5. Retire/Change old definitions and concepts 6. Embrace the Open-Source! 7. Testing in Production (deploy to production, test in production) 8. Deployment gated by tests: if any test fails, rollback 9. Defensive coding techniques (code + test case for every check-in, small check-ins, code behind flights, etc.) 10. Be truly data driven 11. Live Site remains the King!

1. Automate every test, but don t test everything Make every test reliable: Use mock data to isolate the code Write Once, Run Against Multiple Contexts Have contractual tests running to validate FE BE schema Trust modern tools: UI automation is no longer fragile (Selenium) Cloud helps with elasticity for your tests (scaling out) Have a browser matrix, stick with it and deal with the rest!

2. Run all tests for every single check-in Integration of tests with Code Flow Takes one hour for the first review to come (idle time) Changes build deploy tests 20,000 tests <= 20min, code coverage ~65% Fast: mocked data Fast: Machines + Parallelism Fast: time quota system per feature team

3. Tests are binary: either they all pass, or they all fail No concept of priorities until the test fails All tests must pass, otherwise check-in s blocked

4. No test selection. Run them all. Scale thru HW + SW + Quota The problems with test selection: A complicated imperfect system b/w product and tests Makes the process non-deterministic Some tests will rarely run! Throw machines at the problem! This is what most big software corporations do Combination of HW + SW + Quota system

5. Retire/Change old definitions and concepts Simplify! Dev Documents and Test Plans One Page Test case priorities Until they fail, they are P0 Test suites one Test pass done when the check-in goes thru Test environments production But what about destructive? production Code coverage just one data point Ship decision from managers to engineers, based on bugs Obsessed about bugs Obsessed about user impact Line b/w dev and test blurred

6. Embrace the Open-Source! Don t try to compete with them join them All our tools are now all based on open-source Selenium, WebPageTest, PhantomJS, JS libraries, and many others The work involved: Streamline the approval process Plumbing & Stitching the tools to work on MS tech

7. Testing in Production (TiP) The problems with test environments: Use an invisible PROD environment Look at issue patterns in PROD What about destructive tests? Maintenance Not representative Infinite catch-up game Behind a non-rotate flight Behind a VIP that can t be accessed from outside corpnet Instrument every single aspect of the code Big data/machine learning/telemetry techniques Do it in PROD! Failovers/Load/Switch off the power to a DC Better found by you than by someone else!

8. Deployment gated by tests: if any test fails, rollback xping: our version of Gomez/Keynote: Simple HTTP Gets xping+: complex web-based scenarios using Selenium Runs continuously, alerts based on availability threshold E2E (no mocking) Canary deployment: Deploy to one DC Observe the xping tests All passed after N minutes? Push to the other DCs No? Rollback!

9. Defensive coding techniques Code + functional test case for every check-in Small, frequent check-ins Defensive code no assumptions! Code behind a flight switchable on/off:

10. Be truly data driven Instrument every aspect of your code Build a pipeline to gather and analyze the data Flight Fail 90% Learn Ship 10% Make informed decisions based on data Example:

11. Live Site Heavy monitoring in production: Organic Monitoring (counters and rules) Synthetic Simple Monitoring (xping, 10K tests) Synthetic Advanced Monitoring (exploratory) Availability: Based on real traffic (Search Merged Logs) Real-Time DRI Designated Responsible Individual ITR Incident Tracking Record

Challenges & Learnings Management must embrace it Put dedicated engineers on the problems Be date-driven (things won t be perfect, but just do it!) This is a drastic change Not everyone was happy but don t try to please everyone! Have challenging and insane goals

The Inner Dev Loop (on demand)

Bing UX Functional Automation Mocked functional automation Create and deploy mocked data Request it as a Backend response Test case XML UX MOCK BE XML Test case

Bing UX Functional Automation Vector Data HTTP request/response Mock HTTP request/response Live Browser-driven Mock Browser-driven Live HTTP request BING BE UX XML Test case Browser Selenium Grid MOCK BE

Bing UX Functional Automation Vector Data HTTP request/response Mock HTTP request/response Live Browser-driven Mock Browser-driven Live HTTP request BING BE UX Test case Browser Selenium Grid MOCK BE

Bing UX Functional Automation Vector Data HTTP request/response Mock HTTP request/response Live Browser-driven Mock Browser-driven Live HTTP request LIVE BE UX XML Test case Browser Selenium Grid MOCK BE

Bing UX Functional Automation Vector Data HTTP request/response Mock HTTP request/response Live Browser-driven Mock Browser-driven Live HTTP request LIVE BE UX Test case Browser Selenium Grid MOCK BE

Code Reviews Parallel with build creation Parallel with test execution Can block check-in

Checked-in code Has passed ALL tests WILL ship within hours OWNED by the feature teams

Continuous Delivery Loop (every day)

Performance Testing Strategy: Budgeting Runs as a check-in test Utilizes developer maintained budgets for resources Below, identified an increase in page Below, identified an increase in page size due to a CSS change

Performance Testing Strategy: Time (Load Test) Forks traffic from production (no PII, ~1M queries) Results from initial requests cached & replayed Runs for every check-in (2ms resolution) Options: justify the increase, or offset it by optimizing other areas 4ms Optimization Checked In Here

Questions?