ABTesting: Não há nada como testar em produção!

55
Daniel Semedo http://semedo.azurewebsites.net [email protected] A/B Testing: Não há nada como testar em produção!!

description

Apresentação realizada na trilha de testes no TDC 2014

Transcript of ABTesting: Não há nada como testar em produção!

Page 1: ABTesting: Não há nada como testar em produção!

Daniel Semedohttp://[email protected]

A/B Testing: Não há nada como testar em produção!!

Page 2: ABTesting: Não há nada como testar em produção!

Every company is a software company

“Hoje, quase todas inovações significativas para uma empresa requer o uso de sofwares, muitas empresas ainda não estão preparadas para entregar software no tempo em que o negócio exige.”*

Aplicações Modernas

Investimentos baseados em uso real

Habilitado para Nuvem

Desenvolvimento e ciclo curto de entregas

*GARTNER Agenda Overview for Application Development, 2014, Ian Finley, Thomas E. Murphy, Jim Duggan, Mark Driver, Gordon Van Huizen, Nathan Wilson, David Mitchell Smith, Matthew Hotle, Joe Bugajski, Brian Prentice, Ray Valdes, Ross Altman, Richard Marshall, Van L. Baker, David Norton, 9 January 2014

Page 3: ABTesting: Não há nada como testar em produção!

“It has been said that the only sustainable advantage in business is the ability for a company to learn faster and respond more effectively than its competitors (also known as business agility).” – CIO magazine, 2012

Page 4: ABTesting: Não há nada como testar em produção!

Entrega rápida de Valor

Aumentar o fluxo de entrega de valor

Ciclos curtos de entrega

Redução de retrabalho

ProduçãoDesenvolvimento Colaboração

Monitor + learnPlan

Develop + test Release

Requisitos

Page 5: ABTesting: Não há nada como testar em produção!

Visual Studio Online Service

Um exemplo sobre curto ciclo de entrega

Visual StudiovNext

Visual Studio 2013

Visual StudioUpdate 1

Visual StudioUpdate 2

Visual StudioUpdate N

3meses

Novo update

3semanas

Novo CTP (customer test preview)

6meses

Visão roadmap

Page 6: ABTesting: Não há nada como testar em produção!

Histórico de Releases no site

Há cada 3 semanas

novas features na versão

online

Page 7: ABTesting: Não há nada como testar em produção!

Release

Page 8: ABTesting: Não há nada como testar em produção!

O que impulsiona Release Management?

Apps de Negócios estão em uma cadência ágil de entrega devido a

competitividade.

Impedimentos exarcebados já

existentes.

Deployment complexo devido a aplicações multi-plataforma. Complexidade em suportar diferentes dispositivos e garantir

serviços always “on”.

40

%

Releases quadrimestrais ou menos frequentes

Source: Continuous Delivery Is Reshaping The Future Of ALM, Forrester Research, Inc., July 22, 2013

Page 9: ABTesting: Não há nada como testar em produção!

Padrões de Deploy em Produção

Stop and Go Canary

Blue-Green

Install AppValidationTest Auto

ConfigureEnvironment

ConfigureApplication

A

Rollback

Page 10: ABTesting: Não há nada como testar em produção!

Simple Stop and Go

Stop Server

Install Components

Configure

Start Server

Manual Test

Restore Service

Stop Service

Page 11: ABTesting: Não há nada como testar em produção!

Stop and Go – Multi Servers

Stop Server

Install Components

Configure

Start Server

Sanity Test

Restore Service

Stop Service

Stop Server

Install Components

Configure

Start Server

Page 12: ABTesting: Não há nada como testar em produção!

Canary

Stop Server

Install Components

Configure

Start Server

Sanity Test

Restore Traffic

Remove Traffic

Stop Server

Install Components

Configure

Start Server

Sanity Test

Restore Traffic

Remove Traffic

Stop Server

Install Components

Configure

Start Server

Sanity Test

Restore Traffic

Remove Traffic

Page 13: ABTesting: Não há nada como testar em produção!

A/B TESTING

Page 14: ABTesting: Não há nada como testar em produção!

Blue-Green

Staging

Dev Test

Prod

Page 15: ABTesting: Não há nada como testar em produção!

Staging

Blue-Green

Staging

Dev Test

ProdRollback

Após AprovaçãoStaging IP ganha status Prod

Prod

Em Falha:Rollback é feito em Prod

Page 16: ABTesting: Não há nada como testar em produção!

Staging

Blue-Green

Staging

Dev Test

ProdRollback

Após SuccessoRollback é reaberto como staging

Prod

Staging

Page 17: ABTesting: Não há nada como testar em produção!

Pipeline

Page 18: ABTesting: Não há nada como testar em produção!

Error reporting

Page 19: ABTesting: Não há nada como testar em produção!

Aprovações

Page 20: ABTesting: Não há nada como testar em produção!

Automação de cada ambiente

Page 21: ABTesting: Não há nada como testar em produção!

Papel do QA no time de desenvolvimento do Visual Studio

Page 22: ABTesting: Não há nada como testar em produção!

24 | Un-Managing Agile Teams

Times de 8-12

Multi-disciplinar

3 perfis distintos

Estrutura

Page 23: ABTesting: Não há nada como testar em produção!

25 | Un-Managing Agile Teams

Nossas Regras

Program Manager – Responsável por assegurar que estamos construindo a coisa certa.

Desenvolvimento – Responsável por assegurar que estamos construindo produtos que sejam rápidos, confiáveis e bem construidos.

QA – Responsável por assegurar que estamos construindo um produto de alta qualidade e que atenda as expectativas e necessidades dos usuários.

Page 24: ABTesting: Não há nada como testar em produção!

26 | Un-Managing Agile Teams

Estrutura Organizacional

Program Manager Desenvolvimento QA

Page 25: ABTesting: Não há nada como testar em produção!

27 | Un-Managing Agile Teams

Nossos Times

Program Manager Desenvolvimento QA

Page 26: ABTesting: Não há nada como testar em produção!

28 | Un-Managing Agile Teams

Nossos Times

QADev QA

Dev QA

Dev QA

Dev

PM PM PM PM

Collaboration

Version Control BuildWork Item Tracking

Page 27: ABTesting: Não há nada como testar em produção!

QA garante a passagem entre ambientes

Papel de QA: Garantir

Qualidade ao longo do

Pipeline de Deployment

Como garantir?

-Garantia de Qualidade do Build (Code

Analysis, Code Coverage, Code Metrics, Unit

Tests);

-Testes Funcionais (Testes de regressão);

-RBT – Requirements based Tests em QA para

garantia de regressão em novas features

-Performance e Load Tests

-Monitoramento do ambiente e disparo de

alertas

SLA em cada teste automatizado...

Page 28: ABTesting: Não há nada como testar em produção!

Fase 1 – Análise de QA do Build-Compilação-Unit Tests-Code Analysis-Code Metrics-Architecture Validation...++

Build recebe status de pronto

para deploy

Team Foundation Server 2013 Update 3

Page 29: ABTesting: Não há nada como testar em produção!

Parâmetros de Rejeição do Build-Baixo nível de Code Analysis ou (excesso de Warnings ou não compliance);-Testes unitários falhos ou com resultados de execução elevados;-Code Coverage Results inferior ao estipulado;-Tempo de geração do build fora do comum;

Visual Studio Ultimate 2013 Update 3

Page 30: ABTesting: Não há nada como testar em produção!

QA em cada ambiente

Release Management 2013 Update 3

Page 31: ABTesting: Não há nada como testar em produção!

Exploratory Tests e RBT Manual Requisito a ser

validado

Detalhes do resultado do teste

Microsoft Test Manager 2013 Update 3

Page 32: ABTesting: Não há nada como testar em produção!

Garanta o processo de deployment

Papel de QA: Garantir Qualidade ao longo do

Pipeline

Page 33: ABTesting: Não há nada como testar em produção!

Validação do ambiente + Aplicação

-Janela de tempo para reprodução de testes de carga e performance nos ambientes de QA e Produção-Rollback do banco de dados e demais operações preparadas para eventual falha

Visual Studio 2013 Ultimate Update 3

Page 34: ABTesting: Não há nada como testar em produção!

Bugs

Page 35: ABTesting: Não há nada como testar em produção!

Monitor+Learn

PROD

Page 36: ABTesting: Não há nada como testar em produção!

Service Availability& Operational Metrics

• TFS switched to weekday deployments S61• Build availability impacted by external

dependencies (Networking/Service Bus). • App Insights Usage feature had multiple

incidents due issues IaaS VM with SQL installed. Working to migrate to more resilient and operable design.

• App Insights lacks impact telemetry for customer data flows which reduces time to detect, accuracy of root cause and limits ability to asses incident severity .

• App Insights Usage currently supported by Dev team & working to migrate to Service Delivery for more consistent Live Site Management

38

DRAFT

Page 37: ABTesting: Não há nada como testar em produção!

-40%-20%

0%20%40%60%80%

100%120%140%160%

% Growth in Active Accounts (by Services)

Build Active AccountsELS Active AccountsAI Active AccountsMonaco Active Websites

Jan-

13

Jan-

13

Feb-

13

Mar

-13

Apr-1

3

Apr-1

3

May

-13

Jun-

13

Jul-1

3

Jul-1

3

Aug-1

3

Sep-

13

Oct-1

3

Oct-1

3

Nov-1

3

Dec-1

3

Jan-

14

Jan-

14

Feb-

14

Mar

-14

VSO Account Growth Over Time

Rastrear taxa mensal de crescimento (não apenas Cumulativa)

Launch

MoM Growth in [sub]Service Adoption

Page 38: ABTesting: Não há nada como testar em produção!

Created an Account

Created a Project

Check-In / Push

Build

Deployed

Todo serviço possui multíplos FunisAlimentar/medir apenas a boca do funil pode ser uma métrica sem valor, pense em alimentar/medir toda a experiência do serviço, garantindo o resultado de uso completo.

Pense em cada progressão e planeje a expansão da eficiência do funil

Experimente!  August September OctoberNovemb

erDecember January*

Accounts Created

Projects Created

Code Checked-In

Builds Executed

Deployments to Azure

 

  August September OctoberNovemb

erDecember January*

Account -> Project

Project -> Check-In

Check-In -> Build

Build -> Deploy

E2E Conversion

Page 39: ABTesting: Não há nada como testar em produção!

Learn

Measu

re

Build

Um exemplo - Build, Measure, Learntinhamos…

… Decidimos que podiamos fazer melhor

30%Criavam novos Team Projects no primeiro acesso

Page 40: ABTesting: Não há nada como testar em produção!

Build

Build, Measure, Learn

Então fizemos…

Measu

re50%+20% Aumento

Page 41: ABTesting: Não há nada como testar em produção!

Performant

Successful

AvailableAvailable

Applic

ati

on Insi

ghts

Page 42: ABTesting: Não há nada como testar em produção!

Saiba antes que seus clientes saibam

Configure o dashboard com métricas que

mais lhe interessam

Identifique issues e comportamentos monitorando suas

aplicações

Verifique a “pulsação de

suas aplicações”

• Tenha uma visão 360 para monitorar e detectar issues em produção com Application Insights.

Page 43: ABTesting: Não há nada como testar em produção!

• Testes web são executados com frequência (5m-10m) para validar disponibilidade, performance e comportamento da aplicação em produção

Global service monitoring

Saiba antes que seus clientes saibam

Page 44: ABTesting: Não há nada como testar em produção!

Melhore de forma contínua• Identifique erros sistêmicos

e de mal comportamento da aplicação para priorizar/prevenir falhas

• Priorize melhorias, bugs e demais correções com métricas de uso da aplicação de forma quantitativa e qualitativa

Dados valiosos para definir o futuro de suas aplicações

Valide seus investimentos

Page 45: ABTesting: Não há nada como testar em produção!

Dev & TestComo o desenvolvedor apoia neste processo e torna possível o curto ciclo de entrega da aplicação?

Page 46: ABTesting: Não há nada como testar em produção!

Produtividade para Dev & TestConexão com

Microsoft Azure direto do próprio Visual

Studio

Faça sua aplicação e teste utilizando os diferentes serviços

dísponiveis para simular e testar sua aplicação

Execute testes e monitore a performance,

exceções e demais comportamentos de sua

aplicação

Page 47: ABTesting: Não há nada como testar em produção!

Deploy+Monitor em cliques

Faça o deploy de sua aplicação em

ambientes de Staging ou Produção

Acesse a instância e faça configurações no sistema operacional caso seja necessário

Page 48: ABTesting: Não há nada como testar em produção!

Deploy para a Nuvem ou On Premise

Resultado do Deploy

Configure Builds+Deploy local

ou na nuvem (Utilizando RM ou

publish direto)

Page 49: ABTesting: Não há nada como testar em produção!

Teste a Performance de sua Aplicação

Teste a performance de sua aplicação e verifique a disponibilidade, performance e requisições realizadas por execução

Page 50: ABTesting: Não há nada como testar em produção!

Melhore de forma contínua

• Identifique erros sistêmicos e de mal comportamento da aplicação para priorizar/prevenir falhas

• Priorize melhorias, bugs e demais correções com métricas de uso da aplicação de forma quantitativa e qualitativa

Dados valiosos para definir o futuro de suas aplicações

Valide seus investimentos

Application Insights (Visual Studio Online)

Page 51: ABTesting: Não há nada como testar em produção!

Dev & Test

VIDEO DEMO

Page 52: ABTesting: Não há nada como testar em produção!
Page 53: ABTesting: Não há nada como testar em produção!

Resumindo Assuma o real papel de QA

Regra clara entredev (qa) x ops

Automação não é nada sem controle

Priorize Métricas vitais para o negócio

Page 54: ABTesting: Não há nada como testar em produção!

Não há nada como produção!

http://erikasaca.files.wordpress.com/2011/03/ruby-red-slippers2.jpg

Page 55: ABTesting: Não há nada como testar em produção!

Daniel Semedohttp://[email protected]/in/danielsemedowww.microsoftvirtualacademy.com

Obrigado! Veja estes e outros recursos no Visual Studio Online (FREE até 5 usuários)

www.visualstudio.com