Apresentação realizada no evento Brateste 2013 noRio de Janeiro. Como a Virtualização de Serviços pode ser usado para facilitar os testes em ambientes complexos, especialmente testes de aplicações mobile.
Bom dia,
Eu sou Ana, trabalho com o Fábio , trabalhamos juntos no time Rational, responsáveis por soluções de Virtualização para o Brasil.
Temos exeperiencia na implantação de processos de desenvolvimento
A solução que vamos falar faz parte de um plataforma IBM para desenvolvimento de apps mobile,
Que inclui diferentes disciplinas e ferramental.
A nossa idéia hj é mostrar como o uso de Virtualização de serviços pode contrubir para uma nova abordagemem testes
Vamos então pensar um pouco mais a respeito do processo de testes
Pense no projeto que vc está trabalhando agora. Se tentar esquematizar o ambiente do seu cliente terá a;lgo muito paracedi com essa figura:
Muitos sistemas interconectados, seja ponto a ponto ou via um ESB, trabalhando com componentes de diferentes forncedores: SAP, Oracle e também sistemas desenvolvidos internamente.
Não existe mais um sistema monolítico,
Quando eu era programadora,
Um tepo atrás: eu desenvolvia o sistema, segundo meus próprios requistos de funcionalidades, testava e implantava.
Os erros eram corrigidos por mim mesma.
Inimaginável esse cenário nos dias de hj…
Então , implementar uma mudança em qualquer um dos sistemas , requer que os demais estejam diponíveis na fase de testes..
Para se realizar uma transação de negócio, ou seja, devolver o valor esperado ao cliente final da empresa,
É necessário transitar informação entre esses vários sistemas.
A questão da disponibilidade dos sistemas é crítica: qualquer indisponibilidade desses sistemas, de qq tipo e por qq razão implicam em perda de rentabilidade, impactam diretamente o negócio, em vários aspectos, inclusive confiabilidade. Garantir a qualidade dos sistemas que suportam e negócio é imperativo.
Example of this new world
Many of you will be able to relate to this. One of the first things we do as testers on a new project is to get hold of these diagrams to understand the challenge ahead.
We can see 3 departments, previously silo’d that are now converging. Need to share business information and IT needs to provide for that by making it’s components interoperable, accessible to the departments that my need to interface with them.
Now it may be, and it’s extremely probable, (given the limited resources available to testing) that when testing changes in this new world that not all of the functionality that interfaces into your testing will be available to test against.
And this is key to the requirement of tester driven stubbing.
Nossos processos de testes são muito orientados pela interface do usuário, que normalmente só são disponibilizadas tardiamente no projeto.
E constituem apenas a ponta do iceberg, pois realizar um testes funcional na camada de apresentação requer a disponibilização dos sistemas que automatizam o negócio
Mesmo quem não se orienta pela interface de usuário para os testes, acaba implementando uma interface “temporária” para porder exercitar o que quer.
E novamente, os sitemas precisam estar presentes para que o teste desejado possa acontecer.
Apesar do aumento da complexidade dos sistemas,
Os testes continuam sendo realizados da mesma forma há decadas…
De maneira geral:
Fase de requisitos, codif, testes untiários, de sistemas/integração/ holog
E performance no final do ciclo de desenvolvimento
Consequencia: Big Bang: defeitos todos de uma vez, atrasos no projeto. O risco fica alto até final do projeto.
Mas vc pode me dizer: eu uso metdos ágeis, trabalho de modo iterativo.
Cuidado! Temos visto muitos casos em que os times agile só realizam testes nas interações finais,
Isso nao condiz com o manifesto agile,
É na verdade um mix de agile com tradicional… o risco continua alto até as iterações de testes serem realizadas..
Como modernizar os processos de testes? Simples, realizado os testes desde início do desenvolvimento.
Os testes de integração contecendo junto com os testes unitários, fazem com que o codigo va com melhor qualidade para eta de testes de sistemas.
E portanto , essa fase pode diminuir..
O tempo do projeto pode ficar menor
Os testes de perfomance, tb acontecendo durantem os testes unitários…
Simples não? Alguém trabalha dessa forma hj?
Quando o gerente de projeto faz o plano de trabalho, a curva de esforço se assemelha a isso:
Uma onde de desenvolvimento, os testes acontecendo no final dela. Os erros encontrados geram nova onda ou várias, aonde eles são corrigidos e depois,
Maravilha: liberamos para a produção.
No mundo real trabalhamos com riscos, mas o fato é que muitos incidentes são registrados quando o sistema é colocado em produção.
E muitas vezes são erros de performance, de requisitos não funcionais, que implicam em revisam da arquitetura.
E portanto em retrabalho.
Todos ja estamos cansados de ouvir a máxima: quanto mais cedo descoberto o erro, mais barato.
Para isso, o que propomos é antecipar o testes, realizar testes, inclusive de integração, durante o desenvolvimento.
Essa é uma estratégia para nos aproximarmos do desejo do gerente, que imaginava uam quantidade de erros minima, próximo a data de implantação
As vantagens dessa abordagem
Por conta dessa complexidade, podemos imaginar o esforço necessário para se confirgurar um ambinete de testes, quando se implanta um sistema novo ou se faz upgrade de uma nova versão.
A quantidade de hardware, software, sistemas operacionais, banco de dados usados nesse processo.
Em muitos casos, o time de infraestrutura é responsável pela disponibilização desse ambiente. Fazem uso de Vmware, que sem dúvida facilita a montagem dos ambientes, mas ainda assim estas precisam ser instaladas, configuradas e uma vez disponibilizadas, se precisa de alguém que conheça as aplicações, às vezes de terceiros, que saiba como usá-las, conheça as senhas, etc.
Isso é uma reliadade para a maioria de nossos clientes.
Para complicar, muitos dos sistemas , banco de dados, dispositivos necessários à realização dos testes não~podem ser usados à qualquer hora. Ou são compartilhados, ou são sistemas externos à empresa, ou mesmo, sistemas de produção que disponibilizam janelas de testes.
Isso compromete o cronograma e gera estresses enormes entre as equipes.
É nesse contexto que entra a virtualização: tudo o que não está disponivel pode ser virtualizado através dos serviços.
Por conta dessa complexidade, podemos imaginar o esforço necessário para se confirgurar um ambinete de testes, quando se implanta um sistema novo ou se faz upgrade de uma nova versão.
A quantidade de hardware, software, sistemas operacionais, banco de dados usados nesse processo.
Em muitos casos, o time de infraestrutura é responsável pela disponibilização desse ambiente. Fazem uso de Vmware, que sem dúvida facilita a montagem dos ambientes, mas ainda assim estas precisam ser instaladas, configuradas e uma vez disponibilizadas, se precisa de alguém que conheça as aplicações, às vezes de terceiros, que saiba como usá-las, conheça as senhas, etc.
Isso é uma reliadade para a maioria de nossos clientes.
We always want to be testing.
Stub interfacing components out that are unavailable at the time and then re-introduce them when they are available.
O teste de integração pode ser feito em nível de componente.
Inicia-se os testes virtualizando os componentes que não estao disponiveis. Ã medida que ficam prontos, são substituídos.
E entao, quando um novo componente ou uma nova versão é introduzida, pode se executar testes de regressao.
Assim se contra o risco de liberar um componente com erros. É uma abordagem iterativa para os testes de integração.
Essa abordagem é interessante para times usando métodos agile, permitindo que os testes sejam de fato executados em cada iteração.
Goal: Get your customer talking and engage with them to identify their mobile challenges.
MAIN POINT: User expectations of mobile is high…. yet those expectations are not being met
Source: Harris Interactive Survey of Mobile User Experience March 2011
Goal: Get your customer talking and engage with them to identify their mobile challenges.
MAIN POINT: Quality and time are two factors in the “software paradox” and many organizations face these same challenges.
Source: SD Times: “More than half of organizations are building mobile applications” http://www.sdtimes.com/link/36553
MAIN POINT: Mobile poses unique challenges that separate it from traditional IT projects. Let’s look at a few of them.
SPEAKER NOTES:
First of all the apps themselves are different. Not just smaller in footprint, but more strategic, and delivering more user and context-awareness. Unlike traditional apps, mobile apps are intended to run on unstable networks. Interruption in service is the norm, not the exception.
Development is different. The app development lifecycle is more complicated. In addition to being faster and more iterative, you have to deal with multiple device platforms and development styles. You have to securely integrate into back-end enterprise services and cloud and be ready to scale appropriately – even when demand occurs in less predictable patterns. On top of all that you have unique mobile requirements like a user interface that has significant restrictions in terms of real-estate. Then there are questions about how do you effectively take advantage of unique capabilities mobile has to offer. Things like geo-location, for instance.
Management is different. Managing app distribution and governance means working with as many as four different AppStores – each with their own approach and challenges for managing B2C apps. And, because the devices they run on are outside of IT control, mobile apps pose greater challenges associated with app governance, distribution, and version management.
Finally, security is different with greater risks of exposing applications and data on small, light, and always on portable devices. You need to figure out how to protect your confidential information and the privacy of the participants – all while you are enabling connection through devices owned privately by the participants themselves and not controlled by the enterprise.
MAIN POINT: Introduce these Solutions to Improve ROI.
SPEAKER NOTES: There are several “dimensions” to testing: User Interface functionality and usability, performance testing, Solutions to improve ROI:
Automate UI and Performance tests for mobile apps (new capability introduced at Innovate2013)
Virtualize back-end services to maintain agility
Improve manual test case management and optimize execution across multiple mobile devices
Extend Worklight with automated testing
MAIN POINT: Agile and Mobile are often used in conjunction with each other.
SPEAKER NOTES: Agile and Mobile are aligned in that most simply want to:
Accelerate Time to Market
Manage the Changing Priorities and
Increase Productivity
MAIN POINT: Responding to these challenges means thinking differently about familiar tasks.
SPEAKER NOTES:
Within the highly repetitive, Agile mobile lifecycle, we see a familiar cadence of activities – planning, designing, building, test, deliver etc.
Three key themes emerge the continually support the mobile lifecycle for teams: Quality Management, Continuous Delivery and Extending Enterprise Apps to Mobile.
This section of the presentation uses these three themes and presents the value in an “outline” format to discuss value in each of the areas.
MAIN POINT: Introduce these Value areas that Rational’s Mobile Solutions provide.
SPEAKER NOTES:
Quality Management: Tools to Automate testing and boost the ROI expected for mobile apps
Continuous Delivery: The need to drive MORE mobile apps and to accelerate the delivery of these applications requires a “Continuous Delivery” approach.
Extend Enterprise Apps to Mobile: a large majority of developers are currently extending enterprise apps to mobile or plan to in the future.
MAIN POINT: Introduce these Solutions to Improve ROI.
SPEAKER NOTES: There are several “dimensions” to testing: User Interface functionality and usability, performance testing, Solutions to improve ROI:
Automate UI and Performance tests for mobile apps (new capability introduced at Innovate2013)
Virtualize back-end services to maintain agility
Improve manual test case management and optimize execution across multiple mobile devices
Extend Worklight with automated testing
MAIN POINT: Most mobile testing today appears to be laborious manual testing. Automated testing can provide significant productivity gains for agile, mobile projects.
SPEAKER NOTES: Clients can greatly reduce testing time for mobile apps through automation. With a typical “record and playback” type of approach, Rational Test Workbench is a NEW offering by IBM that not only aligns with the IBM MobileFirst initiative, but also extends Rational Test Workbench capabilities beyond the “Green Hat” capabilities of test virtualization and performance testing, described in the next section.
MAIN POINT: Most mobile apps are engaging “systems of record” or existing systems to provide enterprise knowledge, data and business processes and therefore, mobile testing should represent testing more than just the User Interface.
SPEAKER NOTES: Rational Test Workbench also includes capabilities to test the back-end enterprise systems. This provides two distinct benefits:
Reduces MIPS / processing usage on enterprise systems, which can often involve chargebacks to the client teams using those MIPS. This can be instant operational savings for many projects that need to test.
Keeps mobile appdev teams agile so that they can continue to develop and test iteratively in the aggressive backlog schedules.
MAIN POINT: Most mobile app testing today is manual, as it has been with other platforms in history. Manual testing is often filled with many time consuming tasks that themselves can be “automated” helping improve productivity of testers.
SPEAKER NOTES: Rational Quality Manager provides two key capabilities in this area:
A collaborative interface that replaces manual document and spreadsheet creation and emails with a single dashboard for all QA team members to work together.
Test Coverage Optimization helps prioritize and consolidate “similar tests” and greatly reduces the number of potential test cases that cover the platforms of interest.
MAIN POINT: Running tests on multiple mobile devices requires you to acquire each of these devices for testing – IBM has partnerships with companies that host “mobile device clouds” to extend the reach of testing multiple mobile platforms.
SPEAKER NOTES: Two Business Partner Device Cloud vendors provide integration to Rational Quality Manager to execute tests in their device clouds.