Documento técnico de negócios
Introdução
da produção
nos testes de
desempenho
O valor do fornecimento contínuo de
desempenho de aplicativos
Desafios comuns em testes de desempenho
Nos últimos 20 anos, os aplicativos de negócios evoluíram de
sistemas de mainframe centralizados e monolíticos para sistemas
complexos, distribuídos e compostos que operam em nuvens
públicas e privadas. Em paralelo às mudanças na tecnologia
subjacente, a abordagem que adotamos para projetar, construir
e entregar aplicativos de negócios também mudou. Evoluímos a
partir de uma rigorosa e rígida abordagem em cascata, para uma
abordagem de desenvolvimento ágil, leve, sem redundâncias e
responsiva. Os tempos dos ciclos de desenvolvimento são agora
medidos em semanas e até dias, em oposição a anos. Alterações
tanto na tecnologia quanto na metodologia de desenvolvimento
aumentaram a pressão sobre os engenheiros que planejam e
executam os testes de desempenho. Além da avaliação de novos
aplicativos, os engenheiros de desempenho continuam a tratar
de problemas de desempenho de aplicativos legados. No centro
dos testes de desempenho, situa-se a arte de simular a atividade
e o comportamento reais do usuário e, em seguida, avaliar como
o sistema responde. No entanto, a exatidão na modelagem do
comportamento do usuário real pode, muitas vezes, ser incerta. Com
sistemas totalmente novos, o engenheiro de desempenho é forçado
a fornecer uma hipótese fundamentada para o comportamento do
usuário com base em casos de uso, requisitos e projeto. E mesmo
com os sistemas existentes, muitas vezes é igualmente desafiador
modelar de maneira eficaz o comportamento e a interação do
usuário com o sistema. Outro desafio comum da engenharia
de desempenho é utilizar de modo confiável dados de uma
infraestrutura limitada, que não é de produção, para assim, prever
com precisão como o aplicativo irá funcionar em um ambiente de
produção mais robusto. A produção é quase sempre muito diferente
do teste. Engenheiros de desempenho fazem o seu melhor para
extrapolar e tentar prever como o sistema irá funcionar, mas muitas
vezes obtêm um sucesso limitado na previsão de desempenho. Por
fim, a resposta final é muitas vezes fortemente dependente de arte
e julgamento.
Exploração das riquezas de dados de
desempenho em produção
É difícil imaginar que esses desafios permaneçam depois que
um aplicativo encontra-se operativo em produção. Uma vez que
um aplicativo tenha usuários reais e esteja gerando dados reais
de desempenho, é de se supor que os desafios da engenharia de
desempenho desaparecerão, mas este raramente é o caso. Muito
frequentemente, o foco muda para outros projetos, impedindo as
equipes de desenvolver dados de uso e ferramentas de previsão.
2
Problemas organizacionais ou de confiança, ou simplesmente a
falta de iniciativa, impedem o compartillhamento de dados entre
teste e produção. A cada dia os usuários acessam o sistema e
desenvolvem padrões reais de fluxo de trabalho e transações, o que
seria inestimável para futuros testes de desempenho, mas muitas
vezes esses dados não são capturados. A produção também é rica
em dados armazenados em aplicativos, servidores e logs de banco
de dados, os quais ajudam a descrever como o sistema funciona e se
comporta. O monitoramento da produção é a fonte de dados final,
onde tanto a atividade do usuário quanto dados de desempenho são
frequentemente medidos e ativamente gerenciados.
Mesmo que o ambiente de produção seja uma fonte de insight
incrível, os engenheiros de desempenho muitas vezes se
esforçam para tirar proveito dos dados ao planejar e executar
testes de desempenho. Os dados de produção podem ser difíceis
de serem coletados, organizados e analisados. Estão também
frequentemente distribuídos em diversas plataformas sob uma
variedade de formatos, o que complica ainda mais o trabalho de
obtenção de dados significativos. Uma vez coletados, a quantidade
de dados torna a análise um obstáculo final. No final das contas,
os dados de produção podem ser muito difíceis de serem obtidos e
analisados quando os testes de desempenho se deparam com um
prazo final que se aproxima.
CIO
Gerenciamento do desempenho de vários aplicativos ao longo de todo o ciclo de vida
Equipe de desenvolvimento
Equipe de produção
P&D e QA
Operações e linhas de negócios
• Valida o desempenho
• Testa os cenários corretos de utilização
• Identifica todos os problemas antes de
entrar em funcionamento
• Gerencia mudanças de produto de forma
previsível
• Provê disponibilidade
• Atende ou supera SLAs
• Detecta mudanças em tempo real
• Reduz a complexidade de gerenciamento
Prática de desempenho em silos
Falta de tempo e de recursos
Barreiras para soluções manuais são
abundantes
É claro que engenheiros de desempenho sempre encontraram
maneiras criativas e inovadoras para modelar cenários de teste
e avaliar aplicativos. Com os novos aplicativos, eles se debruçam
sobre requisitos, casos de uso e documentos de projeto para
antecipar como o novo sistema será utilizado. Frequentemente, eles
se envolvem com especialistas no assunto para entender melhor os
fluxos de negócios e os modelos de utilização prováveis. Então, com
essa visão, eles tentam projetar cenários de teste que representem
a forma como acreditam que o novo sistema será realmente
utilizado. No caso de um sistema já existente, o engenheiro de
desempenho frequentemente tem acesso a usuários e dados reais.
Agora, eles podem entrevistar e observar os usuários reais do
sistema para saber como eles o utilizam. São também capazes de
analisar os logs dos sistemas e os relatórios de monitoramento para
aprender sobre o uso do aplicativo e padrões de carga. Se forem
minuciosos, irão pesquisar também o desempenho do aplicativo sob
a perspectiva do help-desk para entender os problemas comuns e
outras questões. No final das contas, essa informação de utilização
de produção, quando coletada, consolidada e analisada, ajuda o
engenheiro de desempenho a projetar scripts e cenários de teste
de desempenho mais realistas e confiáveis. No entanto, o custo e o
esforço para coletar e analisar as informações de desempenho são
frequentemente uma barreira em todos os aplicativos, à exceção
dos mais críticos. A complexidade dos aplicativos modernos torna
freqüentemente a coleta e análise manuais muito difíceis.
Além disso, a divisão entre desenvolvimento e operações pode
se tornar uma barreira para o fornecimento de aplicativos de
forma eficiente. As duas equipes têm frequentemente prioridades
e objetivos concorrentes, que podem tornar a colaboração e a
coordenação um desafio.
Muitas vezes, essa divisão é mais evidente quando os aplicativos
entram em funcionamento dentro do prazo (cumprindo as metas da
equipe de desenvolvimento) apenas para experimentar problemas
de disponibilidade e de desempenho (impactando os objetivos da
equipe de produção).
3
Monitores
Monitores
SLAs
SLOs
Teste de
desemp.
Produção
Scripts/sessões
Scripts
Carga de transações
Cenário
O desempenho contínuo causa impacto.
A abordagem de vincular informações de desempenho da produção a
testes é o que chamamos de fornecimento contínuo de desempenho
de aplicativos. O objetivo final de se ter uma abordagem contínua
para desempenho é aumentar a eficiência e a eficácia das atividades
de engenharia de desempenho, acelerando a entrega de aplicativos
e reduzindo os riscos de incidentes e paralisações relacionados com
desempenho. Devemos quebrar os silos entre desenvolvimento e
operações e permitir que as duas equipes coordenem e colaborem.
Para atingir os objetivos de uma abordagem contínua para
fornecimento de desempenho, a equipe precisa estabelecer um
método para compartilhar dados de desempenho de aplicativos
entre produção e teste. Por exemplo:
• Dados de uso — Como usuários reais utilizam o sistema?
• Dados de uso — Quais são as transações mais comuns?
• Dados de desempenho — Qual é a utilização de pico e quando?
• Dados de desempenho — Qual é a resposta provável da produção
na utilização de pico?
• Dados de monitoramento — Como monitorar o aplicativo em
produção?
Como uma abordagem manual para preencher a lacuna entre
produção e teste é demorada e frequentemente produz resultados
imperfeitos, isso deve ser incorporado como um fluxo de trabalho
automático nas soluções de testes. Engenheiros de desempenho
devem ser capazes de eficientemente incorporar um insight de
produção ao planejar e implementar testes de desempenho
de aplicativos. A abordagem contínua para fornecimento de
desempenho de aplicativos baseia-se numa série de passos, que em
conjunto levam a testes de desempenho mais confiáveis e válidos.
4
De quais informações de produção os
testadores podem tirar proveito?
Há um grande número de informações que as equipes de testes
podem obter das métricas de produção.
• Quais processos de negócios devo testar? Quais scripts devo
construir para executar testes?
Muitas vezes, um desafio é determinar os processos de negócios
a testar. Em teoria, se você é capaz de visualizar as sessões reais
de usuários no ambiente de produção por meio de um produto,
como o HP Real User Monitoring (RUM), você deve ser capaz de
tirar proveito desse dado para construir scripts que reflitam os
processos de negócios reais de usuários.
Além disso, considerando que o desenvolvimento de scripts pode
ser uma tarefa demorada, que muitas vezes consome a maior
parte de todo o ciclo de teste, se a organização já tem uma solução
para monitoramento sintético de transações, como o HP Business
Process Monitoring (BPM), você deve ser capaz de tirar proveito
dos scripts usados p
​​ ara monitoramento da produção em seus
trabalhos de testes de desempenho.
Uma combinação entre essas duas abordagens pode ajudar a
acelerar os trabalhos de testes, assim melhorando a eficiência dos
mesmos.
• Qual combinação de transações devo testar? Estou testando as
condições de utilização corretas?
Um dos desafios durante os testes de desempenho é descobrir
exatamente: o que você precisa para testar? Para quantos usuários
você deve fazer o teste? Qual é a combinação de transações que
devo testar? A fim de criar cenários de teste, se possível, você deve
usar informações de produção para garantir que está testando
os itens certos. Por exemplo, em hora de pico, há um total de 450
usuários no sistema, com 50% dos usuários executando ações de
"navegação", 20% realizando transações de "busca" e 10% fazendo
transações de "compra". Ou, em hora de pico de uso, você tem uma
combinação de 10 buscas, 15 compras, etc.
Esses dados geralmente estão disponíveis em produtos de
monitoramento, como o HP RUM (Real User Monitoring), e
em outros produtos como o Webtrends, ou mesmo em logs
de servidores. A solução de teste deve ser capaz de obter
esses dados de utilização em hora de pico dos aplicativos de
monitoramento, a fim de criar cenários de testes precisos.
Além disso, quando você dispõe das informações de utilização de
produção e é capaz de construir testes baseados nelas, também
deve ser capaz de comparar a utilização de produção e de testes
para determinar a precisão de seus testes — quão próxima
a combinação de transações de testes ficou da combinação
de produção? O ajuste dos cenários de teste de desempenho
pode ajudar a promover confiança nos resultados obtidos. Isso
aprimora a precisão dos testes, tornando-os mais significativos e
confiáveis.
• Quais devem ser meus objetivos de nível de serviço (SLOs) para
diversas transações?
Se o aplicativo já existe em produção, a equipe de monitoramento
da produção normalmente tem informações sobre que tempos de
resposta esperar para determinadas transações, e estabelecem
seus acordos de nível de serviço (SLAs) com base nisso. A equipe
de testes deve ser capaz de tirar proveito dessas informações de
SLA para facilmente configurar SLOs para testes de desempenho.
Isso lhe fornece uma melhor medida do desempenho de suas
transações em relação a um benchmark de produção.
• Quais métricas de sistema devo monitorar durante os testes?
Novamente, as equipes de produção já dispõem de informações
sobre quais sistemas e métricas elas monitoram. A equipe de
testes deve ser capaz de tirar proveito dessas informações para
facilmente configurar o monitoramento no ambiente de teste.
Além de ajudar a acelerá-los.
Abordagem da HP para desempenho
contínuo de aplicativos com o HP
Performance Center
A HP incorporou os recursos de desempenho contínuo no
Performance Center, versão 11.5. Com esta nova e estimulante
versão do Performance Center, engenheiros de desempenho são
capazes de incorporar insights de produção ao planejamento e
implementação de testes de desempenho de aplicativos de forma
eficiente. A abordagem contínua para fornecimento de desempenho
baseia-se numa série de passos, que em conjunto levam a testes de
desempenho mais confiáveis e válidos.
5
1. Importe dados de produção.
Importe informações dos sistemas de produção. Isso inclui
informações como tráfego de usuários e monitoramento de dados
dos sistemas de produção, bem como scripts de processos de
negócios. O HP Performance Center 11.5 suporta a importação
de dados do HP Business Service Management (BSM) 9.2 e do
Webtrends 9.0 ou posterior, e também fornece APIs para importar
dados de outras fontes, como logs, etc. Sessões reais de usuários
do HP Real User Monitoring (RUM) podem ser convertidas em
scripts a serem utilizados em testes de desempenho. Da mesma
forma, os scripts utilizados para monitoramento sintético de
transações via HP Business Process Monitoring (BPM) também
podem ser aproveitados em testes de desempenho. As métricas
de monitoramento do HP SiteScope também podem ser
importadas diretamente para o Performance Center. Todas as
informações do HP BSM podem ser empacotadas e enviadas ao HP
PC. Além disso, outros sistemas de monitoramento da produção
podem fornecer dados diferentes, que podem influenciar quais
informações ficam disponíveis para o usuário.
4.Execute o teste inicial de carga.
Execute o teste de carga para reunir dados de tráfego e outras
informações.
2.Crie um relatório de produção.
Com base nas informações de produção, o usuário cria um
relatório que exibe informações relevantes sobre as diferentes
atividades que foram observadas na produção. Por exemplo, a
lista de URLs ou o número de acessos por URL, etc.
7. Exporte dados para produção.
O engenheiro de desempenho pode exportar vários itens que
podem ajudar a acelerar a implementação de uma nova versão em
produção.
3.Projete o teste de carga com base na produção.
O relatório de produção agora é usado para criar um teste de
carga. As transações são mapeadas entre ambientes de produção
e de testes. Fatores de escala são definidos uma vez que muitas
vezes o ambiente de testes pode ser significativamente menor
em escala do que o ambiente de produção. O projeto do primeiro
teste de carga provavelmente apresentará um comportamento
muito diferente daquele de produção, e é apenas o ponto de
partida para ajustes.
6
5.Compare a produção com o teste inicial de carga.
Crie um relatório que compare as informações de produção
com as do teste de carga. Isto lhe permite compreender quais
atividades de produção não estão representadas no teste de
carga na quantidade adequada, para que você possa dimensionar
e ajustá-las melhor.
6.Ajuste o teste de carga.
Com base no relatório de comparação, o usuário pode atualizar
o teste de carga para tentar fazer com que o comportamento
e os padrões de uso se assemelhem ao máximo à utilização de
produção. Esse é um processo iterativo no qual o teste de carga é
atualizado, executado e comparado novamente às informações
de produção até que produção e testes sejam suficientemente
semelhantes.
Por meio do processo de fornecimento contínuo de desempenho de
aplicativos, os engenheiros de desempenho são capazes de coletar
e incorporar insights de produção ao projeto de seus cenários de
teste de modo eficaz. Seus testes e resultados serão mais realistas
e confiáveis, fornecendo-lhes maior segurança em reuniões para
decidir sobre a continuidade de projetos, quando lhes é perguntado
se o aplicativo está pronto ou não.
Resumo
Equipes de teste de desempenho e de monitoramento de produção
de modo geral trabalham na direção de um objetivo comum: o
desempenho de aplicativos. Por meio da colaboração mútua,
a equipe de testes pode fornecer aplicativos que apresentarão
menos problemas em produção. Da mesma forma, a equipe de
produção pode ajudar a reduzir o tempo do ciclo de teste ao fornecer
informações de produção valiosas para testes de desempenho.
A colaboração assegura o verdadeiro fornecimento contínuo de
desempenho de aplicativos.
7
Conecte-se
hp.com/go/getconnected
Veja as tendências de tecnologia,
os alertas e as soluções HP.
© Copyright 2012 Hewlett-Packard Development Company, L.P. As informações contidas neste documento estão sujeitas a alterações sem aviso.
As únicas garantias para produtos e serviços HP são as estabelecidas nas declarações de garantia expressa que acompanham tais produtos e
serviços. Nada aqui contido deve ser interpretado como constituindo uma garantia adicional. A HP não será responsável por omissões, erros técnicos
ou erros editoriais contidos neste documento.
4AA4-1689PTL, criado em maio de 2012
Download

Introdução da produção nos testes de desempenho