SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
INCREASE PRODUCTIVITY AND
  SOFTWARE QUALITY WITH AZURE AND
            VS2010 ALM
     F a s t e r , b e t t e r w i t h h i g h e r q u a l i t y d e s i g n , d e v e l o p , b u i l d , t e s t a n d d e p l o y Az u r e c l o u d
                                  applications with Application Lifecycle Management.




AZURE PROVIDES NEW OPPERTUNITIES FOR BUSINESSES. MANY ORGANISATIONS ARE STARTING TO
DEVELOP CLOUD APPLICATIONS. MICROSOFT VISUAL STUDIO 2010 AND TEAM FOUNDATION SERVER
2010 ARE THE APPLICATION LIFECYCLE MANAGEMENT TOOLS TO DEVELOP AZURE APPLICATION.

THIS PAPER DISCUSSES, HOW APPLICATION LIFECYCLE MANAGEMENT PROCESSES AND TOOLS CAN BE
USED IN AN OPTIMAL WAY, BY MAKING USE OF THEY KEY CHARACTERISTICS OF THE AZURE PLATFORM
TO RAISE THE PRODUCTIVITY AND QUALITY OF SYSTEMS DEVELOPED FOR THE CLOUD.




                                                  ALM 4 Azure
                                                                     ALM 4 Azure a presentation covering different levels of ALM automation for
                                                                     Azure cloud services development.


                                                                     An important notice: the topic covers modern software development tools
                                                                     and practices which you need to know while developing systems which run
                                                                     on the Azure cloud (4 Azure). This is something completely different, but
                                                                     related, than ALM on Azure, where we use the tools out of the cloud (SaaS)
                                                                     to execute a modern system development. You can use them together ‘on’
                                                                     and ‘for’ Azure, but this presentation only covers the ‘for’ azure. How do we
                                                                     need to execute our practices and use our on premise tools for cloud
                                                                     services?




                                                                     What is Application Lifecycle Management, why do we want it and what are
                                                                     the goals we pursue.

                                                                     What are the specific characteristics of Azure and Cloud Computing. Where
                                                                     can these characteristics help us to reach the goal and where do they give us
                                                                     some challenges.

                                                                     The main topic in the agenda are 5 different ALM 4 Azure scenario’s and
                                                                     supporting technologies explained.
Application Lifecycle Management
              All tool vendors and methodologies have their own definition of Application
              Lifecycle management.
              What can we learn from these definitions?
              A wide variety in scope. ITIL is focused on the operational side of ALM, the
              Wiki and Forrester descriptions are more focused on the Software
              Development Lifecycle [SDLC] and Microsoft takes a bigger scope with
              business, development and operations, although the tooling and the
              assessment are focused on SDLC. Borland is also talking about a wider scope,
              when you look at the RUP like model. But the main pro is their focus on
              "many processes and many tools" so it should fit more then one
              environment.
              Beside this difference in scope, everybody agrees on terms like: measurable,
              predictable, traceable, manageable, monitored etc etc... smells like "in
              control"

              We use this image when defining ALM and it is about "in control" but it is
              even more about communication. It is about how the different ALM roles
              who are all responsible and accountable for the success of a software
              development project communicate in a seamless manner.

              When talking about Application Lifecycle Management [ALM] terms like
              accountability, governance and compliance are used. All of them refer back
              to “working together”, how do we work together during the application
              lifecycle. ALM is not about tools, it’s about working together. Working
              together seamless and flexible while staying in control, being measurable
              and responsible. All the roles in the application lifecycle have a part in this
              collaboration effort. Tools can help but isn’t’ the core driver.
              There are lots of examples of wrong interpreted business requirements,
              miss communication between development and test, applications which
              won’t run in production, operations who don’t understand the applications.
              All of them resulting in more work, more faults, more costs or even only
              costs and no application because the project was unplugged. Most of these
              projects faults, these extra costs are a slip in communication.

              Having a strategy how people have to collaborate within the lifecycle is one
              important piece of Application Lifecycle Management. Most organizational
              parts have already some kind of process / methodology in place. Having an
              approach how to share information and share ideas from their own role
              point of view through the other roles is a key success factor for lowering the
              costs and raises the business value of IT investments.

              Tools can help with this goal. Having gear in place which supports and
              stimulates collaboration is a driver for a successful Application Lifecycle
              Management. But without a plan, how people should collaborate and
              communicate, tools are useless.

              Creating new modes of collaboration supported by technology can only be
              done by addressing the human aspect. More specifically, we need to address
              some of the worries and obstacles people encounter when collaborating
              using technology.

              The three most important concerns are:
                  Trust. Trust is a condition for social interaction. People will only work
                   with people, companies, tools and information they know they can
                   trust. Before we can expect collaboration to take off online, there must
                   be a way for people to get this “trust.” And a topic closely associated
                   with trust when it refers to people is Identity.
                  Collaborative culture. If one individual is the greatest collaborator in
                   the world, he or she is probably not getting anywhere. Only when all
                   people involved are part of the same collaborative culture will new
                   levels of creativity and productivity be reached. A collaborative culture
                   consists of many things, including:
                         o     Collaborative leadership;
                         o     Shared goals;
                         o     Shared model of the truth; and
                         o     Rules or norms.
                  Reward. Changing the way people work takes effort, so it must be
clear for the parties involved what they will gain, at a personal level,
             from collaborating in a new way. Surprisingly, a “reward” for successful
             collaboration is most often of a non-financial nature.
        When working together with work packages, seamless communication
        need to address these challenges.

        All the different roles in the Application Lifecycle create artifacts, product
        also these products need to work together, they need to fit, a single point of
        truth. Requirements, designs, the business case, the test cases, the source
        files and the operational information… all need to work together as one
        consistent product. When one gets out of sync then the involved roles
        should get a notification. Tools can help with this.

        The Visual Studio 2010 family is made up of a central team server, and a
        small selection of client-side tools. The team server—Team Foundation
        Server 2010—is the backbone of the application lifecycle management,
        providing capabilities for source control management, (SCM), build
        automation, work item tracking and reporting. In this release Microsoft
        expanded the capabilities of Team Foundation Server by adding a true test
        case management system and extended it with Lab Management 2010—a
        set of capabilities designed to better integrate both physical and virtual labs
        into the development process.

        On the client-side for developers, you can choose between Visual Studio
        2010 Professional, Premium or Ultimate. For testers and business analysts
        there is Test Professional—a new integrated test environment designed with
        manual testers in mind.
        For those people who participate in the development efforts, but for whom
        Visual Studio—the IDE—is not appropriate, including Java developers,
        project managers and stakeholders the Team Foundation Server
        extensibility model enables alternative interfaces. These include both Team
        Explorer—a standalone tool built with the Visual Studio shell—and Team
        Web Access. These tools enable anyone to work directly with Team
        Foundation Server. And there is cross-product integration capabilities with
        Microsoft Office® and Microsoft Expression and SharePoint Server with new
        SharePoint dashboard.



Azure
        Windows Azure™ is a cloud services operating system that serves as the
        development, service hosting and service management environment for the
        Windows Azure platform. Windows Azure provides developers with on-
        demand compute and storage to host, scale, and manage web applications
        on the internet through Microsoft® datacenters.

        Windows Azure has several unique characteristics as a platform.

        1. Hosted services allow deploying to two identical but independent
        environments. The stating environment and the so called production
        environment.

        When you deploy a service you can choose to deploy to either the staging
        environment or the production environment. A service deployed to the
        staging environment is assigned a URL with the following format:
        {deploymentid}.cloudapp.net. A service deployed to the production
        environment is assigned a URL with the following format:
        {hostedservicename}.cloudapp.net. The staging environment is useful as a
        test bed for your service prior to going live with it. In addition, when you are
        ready to go live, it is faster to swap VIPS to move your service to the
        production environment than to deploy it directly there.
        http://msdn.microsoft.com/en-us/library/gg433118.aspx

        2. Guest OS Versions are identical for every instance. In the configuration of
        the hosted service the OS version is set and every instance will be built of
        this same image. This results in the very hard to accomplish on premise
        situation where, test, acceptance and production environments are
        identical.

        The Windows Azure guest operating system is the operating system that
runs on the virtual machines (VMs) that host your service. The guest
operating system is updated monthly. You can choose to upgrade the guest
OS for your service automatically each time an update is released, or you can
perform upgrades manually at a time of your choosing. All role instances
defined by your service will run on the guest operating system version that
you specify.
http://msdn.microsoft.com/en-us/library/ff729422.aspx

3. Don’t assume your state is safe. Instances, VM’s are recycled on a ‘for us’
random base. Windows Azure manages that the application is always
accessible, but local stored information isn’t.

4. in place upgrades. Windows Azure role instances can be easily upgraded.

Windows Azure organizes instances of your roles into virtual groupings
called upgrade domains. When you upgrade one or more roles within your
service in-place, Windows Azure upgrades sets of role instances according to
the upgrade domain to which they belong. Windows Azure upgrades one
domain at a time, stopping the instances running within the upgrade
domain, upgrading them, bringing them back online, and moving on to the
next domain. By stopping only the instances running within the current
upgrade domain, Windows Azure ensures that an upgrade takes place with
the least possible impact to the running service.
http://msdn.microsoft.com/en-us/library/ee517255.aspx

5. clear environment costs.

Azure applications are developed local. It is also possible to run the Azure
application in this local environment by using emulators.

The Windows Azure compute emulator enables you to run, test, debug, and
fine-tune your application before you deploy it as a hosted service to
Windows Azure.
http://msdn.microsoft.com/en-us/library/gg432968.aspx

The Windows Azure storage emulator provides local instances of the Blob,
Queue, and Table services that are available in the Windows Azure. If you
are building an application that uses storage services, you can test locally by
using the storage emulator.
http://msdn.microsoft.com/en-us/library/gg432983.aspx

When deploying the Azure application to the Azure platform a package and
a configuration file needs to be created. The package contains all files and
the configuration information about the guest OS it needs and other
configuration information.

Environment configuration.

To start developing Azure Applications and to run the application local or
deploy and run it on the Azure platform there are some needs.

     1.    a version of Visual Studio 2010
     2.    the Azure SDK
           http://www.microsoft.com/windowsazure/getstarted
     3.     Set up a Windows Azure Subscription

For the demo’s… you need more (for a windows 7 environment)
      -   TFS Basic
      -   Microsoft Test and Lab Manager
      -   Build Service, controller and agent
      -   Test controller and test agent
      -   Visual Studio SP1
      -   Feature Pack 1 and 2
      -   Windows Virtual PC
      -   Image with test agent configured
      -   Powershell
      -   …
ALM 4 Azure
                 The main goal when configuring the technical tool support for your
                 processes is that it must support the same goals.
                 For example when you execute an agile process with your development
                 team. So your team is flexible, efficient and can deliver new functionality to
                 the business against a predefined quality, repeatable and fast. The tools you
                 are using must support and drive this goal. When your process of delivering
                 new functionality takes days to deploy and configure even when you are
                 capable of realizing this functionality, your team still can’t comply the goals.

                 Let’s assume we executing an agile like processes and we have a risk driven
                 mindset. We can write down several goals the tools must support… every
                 team has its own goals, but the ones written down in this list are very
                 common.
                 Every change every technical tool support must support and drive towards
                 these goals.



                 No team is the same. This list of scenarios isn’t a maturity level kind of list, it
                 are more advancement levels of tool support.
                 Not every team wants to go through the knowledge gathering, hardware
                 and software investment necessary to implement a specific scenario.

                 It is definitely a balance between effort, money and profit, benefit.




1: Engineering only
                 The developer only scenario is for really small teams, one developer which
                 also does the testing. Most exercises and hands-on labs make use of this
                 scenario.
The engineers create functionality in Visual Studio 2010. The
        source code is checked in Team Foundation Server. Engineers can
        make use of work items in TFS but isn’t necessary.
        Source code is compiled and unit test if any are executed. Other
        code quality checks can be performed. Implementation checks by
        the layer diagram are interesting but not necessary.

        No real quality gates.
        Engineers deploy the application from Visual Studio by; or
        creating a package and configuration file or by using the ‘single
        click’ deployments from within Visual Studio.




Soon on: http://www.youtube.com/user/clemensreijnen




A common deployment flow.
1. Local development in emulator environments.
2. Hybrid of local and Windows Azure, when storage is stable. Different
     engineers can work against the same data source. The compute
     emulator is almost similar as the hosted service environment on Azure,
     but the storage emulator has some big differences compared with the
     Azure storage.
3. Everything in Windows Azure in staging.
4. Swap from Staging to Production.


•    Debugging is not currently supported in Windows Azure, intelitrace is.
•    Set breakpoints & debug in Local Development Fabric.
•    Test initially with development storage, but test with Windows Azure
     storage to test with large volumes of data whilst still keeping your
     roles local for debugging
•    Once you are happy with the Worker/Web Roles running locally deploy
     everything to Staging and run tests in this environment
•    Once all tests in staging pass, promote everything to production
•    Worker roles in the “Staging” project are operational – and as such will
     process messages from queues etc. You should design for this.
•    Staging also cost money.
•    Storage costs are way less as compute costs. Test as much local as
     possible.
The developer only scenario has a lot of benefit and many organizations
                start with it because its painless. But it’s also faults can slip in easy and time
                consuming.

                Pro:
                Easy installation and configuration
                Single click deployment from VS2010

                Con:
                No collaboration
                Easy deployment errors (configuration)
                What about test and ops




2: Developer with manual tester
                A bit bigger team with a test specific role. Developers have their quality
                gates within the build. Testers analyses the quality of the system and help
                the team with risk classifications.
                It can gets a bit challenging when entering this scenario. Testers and
                engineers often have different approached, different methodologies and
                different goals. Now they have to start working together. Work with
                workitems and supported process templates will help the adoption,
                providing the team with the benefits the technical support can give them
                when working together will also help. But mainly it’s a cultural process (see
                first alm slides) people have to work together and take a shared
                responsibility for the success of the system.




                Engineers and testers work together with workitems

                In Visual Studio Team System 2010 all test roles are provided with clear and
                better support within the Application Lifecycle. Testers do not use their own
                separate technical tools anymore, but use integrated tools that are used by
                architects and developers. Effectively tearing down the wall between
                developers and testers.

                But good tools are not enough. Also, a clear separation of roles, tasks, and
                authorizations are necessary. Finally and most importantly, a structured
                approach determines how successful you are with your test strategy.

                For example the role of the tester and the usages of work items in
                collaboration with engineers.

                During the planning phase of the project, also called iteration 0 [first blue
                piece], user stories are collected / brainstormed / defined /… in VSTS this
                information is collected in the work item type ‘user story’

                During the planning of the iteration the team starts to breakdown the user
                stories [which are selected for that iteration] in implementation tasks.
                Within VSTS this is done in the implementation tab of the user story Work
                item. The new 2010 functionality of hierarchies between work items is used
                for this.

                More reading: http://www.clemensreijnen.nl/post/2009/09/03/Agile-
                Testing-with-VSTS-2010-and-TMap-Part-01-User-stories.aspx

                More reading: http://www.clemensreijnen.nl/post/2009/04/21/Testing-in-
                the-Application-Lifecycle-with-Visual-Studio-2010-Test-Edition.aspx
As in scenario 1, the engineers create functionality in Visual
        Studio 2010. The source code is checked in Team Foundation
        Server. The test role is added to the team. They specify and
        execute manual test cases in Microsoft Test Manager.
        Same as scenario 1


        Same as scenario 1


        Tests are executed against the Azure staging environment. Bugs
        are filled in TFS. Using work items together with engineers is a
        must, starting with bugs followed by user stories test cases and
        tasks.



Microsoft Test Manager 2010 is for testers what Visual Studio is for
developers. That is to say, where Visual Studio is an IDE – an integrated
development environment, Test Manager is an ITE – an integrated test
environment. This is the interface that a tester will use to create test cases,
organize test plans, track test results, and file bugs when defects are found.
Test Manager is integrated with Team Foundation Server, and is designed to
improve the productivity of testers. While I am not going to do a deep-dive
of all that Test Manager can do, it is important to understand how it
integrates with the Visual Studio Agents to make the most of test case
execution, and ensure that when a tester files a bug, it is actionable with
very little work on the tester’s part.

Test cases are work items with a specific tab where test steps can be
defined. These test steps can only be edited from within MTM.

You can create test cases for your manual tests with both action and
validation test steps by using Visual Studio 2010 Ultimate or Visual Studio
Test Professional. You can add test cases to your test plan using Microsoft
Test Manager.

More information:
http://msdn.microsoft.com/en-us/library/dd380712.aspx
http://msdn.microsoft.com/en-us/library/dd286729.aspx

Where to execute tests?

The challenge of this scenario is that the staging environment usages cost
money and with some serious testing this will grow every sprint. To balance
what is tested where these costs can be minimized and kept in a
comfortable range.
Executing all the tests in the staging environment isn’t an option, too
expensive. There are two other environments where to execute tests. One is
the environment the tester uses to specify the tests, the other one the build
environment. With Azure the challenge of running an Azure application
outside of azure is the availability of the compute emulator. While the build
environment is a server environment this isn’t the recommended place to
execute manual tests. Only automated, like unit tests, are interesting to
execute on the build.

Balancing the testing effort over the environments is challenging. What is
tested at developer level, with unit tests, isn’t useful to test during
functional testing. And what should be tested in the staging environment
while all functional and system tests are already executed in the testers
environment.
Execute tests in test environment by using the compute and CSRun.

To execute tests, on a tester’s environment without Visual Studio 2010
installed, you need to set and install several things. The easiest way is to let
the environments run their own compute emulator and version of the cloud
application under test and make use of the azure storage for data.

You need to install the Azure SDK and have IIS7.0 available on the test
machine. (2) With CSRun.exe testers can launch the cloud application within
their own compute storage with the CSX folder and the CSFG file (1).
The only challenge left is the port number (3) created by the CSRun.exe
command. Microsoft Test Manager record and playback capability will be
useless when this one changes over time, and it will change. Test case
should be rewritten and executed. This change of URL makes the use of
shared steps (4) in Microsoft test manger a must. You can re-record them
without breaking record and play back notion of the previous executed test
cases. Shared steps will aslo proof there use when you want to execute a
test case in staging and production after you have record it in the emulator.




Soon on: http://www.youtube.com/user/clemensreijnen




Collect data from the Azure instance while execution a test

A challenge with testing cloud systems is that instances recycle on a regular
basis, it’s not sure that the environment on where the tests were executed is
still the same as when the engineers the bug tries to reproduce and resolve.

So, when an engineer wants to find the bug in the system it is not sure he
got access to the log files of the system, for example IIS logs, trace logs etc.

When the cloud application has diagnostics enabled you can create a custom
diagnostic adapter which collects information and queries the logs for the
test execution time frame and add these logs to the test result for the
engineer.

See: http://www.clemensreijnen.nl/post/2011/01/05/MTM-Azure-Data-
Diagnostic-Adapter-a-nice-ALM-for-Cloud-scenario-e280a6.aspx
See demo WAD MTM Adapter:
                http://www.youtube.com/watch?v=xKxFtfKh6yo




                Microsoft Test Manger capabilities for cloud system testers.

                Microsoft Test Manager has some very useful features and capabilities for
                testers of cloud systems. Beside the usages of work items which help the
                testers to get the same heartbeat as engineers, these capabilities are
                helping managing the testing effort with, test plans, configurations, suits and
                the bug workflow.

                Two features are really useful while testing cloud systems, the shared steps
                and the diagnostic adapter extensibility. Shared steps make it easy to handle
                the different environments. First tests are executed on the compute
                emulator, second on staging and finally the production environment all with
                different URL’s. The diagnostic adapter extensibility makes is easy to collect
                environment information for bug solving.

                Two MTM features aren’t working for cloud systems in relation to MTM.
                Test Impact analysis and Intellitrace. Intellitrace does work from within
                Visual Studio as the deployment is configured to use it, but not from the
                MTM.
                The developer with manual tester scenario has a lot of benefit. The main
                benefit is that the system is going to be tested in a well thought manner.
                That engineers and testers are connected and have the same heartbeat will
                solve some big project management challenges and will save a lot of time.

                For test execution the biggest challenge is not to test everything on Azure,
                but balance it. Only platform verification tests on azure the other system
                and functional tests on the compute emulator. This needs some
                configuration on the test environments.

                Pro:
                Easy installation and configuration
                Single click deployment from VS2010
                Testers connected, same heartbeat as dev
                Proven quality

                Con:
                Easy deployment errors (configuration)
                Time consuming (deploy and test)
                Not repeatable (annoyed testers)
                Testers connected 



3: Developer with manual tester and
deployment build
To drive forward when the team grows or when we need to but some more
effort in the stability of the system development process, we have to look at
the build process on the build server and the deployment. Making the
deployment of cloud systems repeatable for different environments will
make the whole process more stable. We as a team can deliver functionality
in a faster proven way.

When we work agile we want to deliver functionality in a fast flexible way,
having an automated process in place which supports this will raise our
quality bar.




        Same as scenario 1 for engineers and testers, they specify test
        cases and write source code, test cases are executed on the
        compute emulator.
        In collaboration with operations build and deployment scripts are
        configured.
        During the build, unit test are run, deployment packages and
        configurations are made.

        As a final step of the build the cloud system is deployed to the
        Azure staging environment.

        Tests are executed against the Azure staging environment. Bugs
        are filled in TFS. Using work items together with engineers is a
        must, starting with bugs followed by user stories test cases and
        tasks.


Automating deployment
Manual deploying Azure systems is error-prone, changing configuration files
and connection strings can go wrong, resulting in an instable deployment
with annoyed testers (system isn’t ready for testing) and users (we can’t
show them anything).

There are several different ways to deploy a system to azure, the powershell
CmdLets are the easiest to use. The Cmdlets can be downloaded from this
location http://archive.msdn.microsoft.com/azurecmdlets

More reading:
http://msdn.microsoft.com/en-us/library/ff803365.aspx
http://scottdensmore.typepad.com/blog/2010/03/azure-deployment-for-
your-build-server.html
http://blogs.msdn.com/b/tomholl/archive/2011/02/23/using-msbuild-to-
deploy-to-multiple-windows-azure-environments.aspx

For the next demo we are using cmdlets the build target and msbuild to
create packages and deployment as described in
http://blogs.msdn.com/b/tomholl/archive/2011/02/23/using-msbuild-to-
deploy-to-multiple-windows-azure-environments.aspx.

Note: You don’t want to configure the automatic deployment on a
continuous integration build. This definitely won’t work, release builds or
sprint review builds aren’t run that often can do the deployment.
Soon on: http://www.youtube.com/user/clemensreijnen




                 Having automated deployment in place is a boost for the quality of the
                 system delivery process. Although it can be challenging to get the initial
                 configuration right, allot of different technologies must be used, the benefit
                 the team gets from it us high.

                 Pro:
                 Easy installation and configuration
                 No click deployment from build
                 Repeatable ‘proven’ deployments*
                 Testers connected, same heartbeat as dev
                 Proven quality

                 Con:
                 Time consuming testing
                 Application can contain ‘annoying’ bugs
                 Build workflow knowledge necessary
                 Powershell, ccproj tweaks, target files,
                 certificates



4: Developer with automated
regression tests, manual tests and
deployment build
                 With automatic deployment in place we can start to configure automatic
                 testing.

                 Although you can run automatic UI test cases from within Visual Studio with
                 the compute emulator on the developer environment, so automatic testing
                 could be in place earlier. But running automatic UI tests on a developer’s
                 environment executed by the developer and with the result collected in
                 Visual Studio is more for bug reproducing and solving than testing, where
                 you say something about the quality of the system. You want the tester to
                 execute them on a test environment and with result in the test plans.

                 Automatic testing will speed up system development, testers and
                 developers have the same hard beat, but the further in a project you get the
                 more regression test cases will need to be executed. This execution of
                 regression tests will take more and more time bringing friction to the same
                 heartbeat mindset.
Engineers write source code and testers specify and execute test
        cases on the compute emulator.
        In collaboration with engineers manual test cases are automated
        with CodedUI and associated with Test Cases. Test case
        automations are ‘tested’ (dry run) on the developer’s
        environment.
        During the build, unit test are run, deployment packages and
        configurations are made.

        As a final step of the build the cloud system is deployed to the
        Azure staging environment.

        Tests are executed against the Azure staging environment. Bugs
        are filled in TFS. Using work items together with engineers is a
        must, starting with bugs followed by user stories test cases and
        tasks.


        Associated test case automations are executed from MTM on the
        compute storage.


There are different technologies available to create tests within Visual
Studio. Two of them are suitable for the automation of manual tests. Web
tests and CodedUI tests. The main difference between them is that CodedUI
really interacts with the UI, it uses IEDOM for automation. Web tests uses
HTTP get and post to automate the tests.

The CodedUI functionality is strongly connected with Microsoft Test
Managers action recordings (created while executing a test case in MTM).




CodedUI tests can better be used for functional tests and web test can
better be used for performance tests and load tests.
Execute tests as soon as possible in the lifecycle.

We can divide the different tests technologies in development tests, load
performance tests, automated UI tests and manual tests, and create a test
specific sub category for the automated and manual tests with the
categories: Functional Testing, Integration Testing, Acceptance Testing and
Platform Testing (Azure specific, answers the question: will it run in the
cloud and is the deployment and configuration correct test).

Development tests are executed during development and in the CI build.
For load and performance we need a full blown environment, this is easy
with Azure but we do need a complete feature we need to test available in
the cloud. So, these kinds of tests when part of the Definition of Done
probably will be executed at the end of a sprint.
Automated UI tests are really valuable, automated as soon as possible.
These tests can cover just one feature (Functional Testing) and can be
created and executed in the compute emulator as soon as the feature is
implemented. Automated Integration tests are harder to execute within a
sprint, because they often cover more scenario’s, when integration testing is
part of the Definition of Done, these should be moved to the undone list
(see: Agile Test practices with Microsoft Visual Studio 2010 [TMap and
Scrum] ). Platform testing focus on specific things like if the deployment and
configuration is correct and does it run correct in the cloud, often these are
very common tests and can be executed within a sprint after the build,
automated as soon as possible.
 Acceptance testing is often done outside the team by the business users,
keeping those tests connected with the team is very useful for bug solving,
test coverage and automation.

Generated CodedUI tests from Microsoft Test Managers action recordings
have all the steps as methods in the CodedUI test.

To make the test suitable to be executed in different environments
(emulator, staging, production) without having to change the code
constantly or change the test data parameters settings.




Another way to make customizations to the behavior of the codeUI is by
using the UImap editor, which can be found in Feature Pack 2. It helps you
tune the search conditions for controls but more important for Azure
Applications it helps you extract methods like ‘open application’ out of the
xml and code generation to a partial class where you can edit the behavior
for all test methods who use this method.
Soon on: http://www.youtube.com/user/clemensreijnen




There are multiple ways to execute your test automation effort, you can run
them from and on Microsoft Test Manager, from and on Visual Studio,
during the build and on the Build Server or during the build on Test Agents
configured with Test Controllers or … many flavors. So, where should you
execute your automated tests to test an azure application, and how should
you configure your test infrastructure.

One thing to keep in mind when making a decision, testing on Azure costs
money. You can configure VS2010, MTM or the Build server to execute the
automated tests against an azure deployment. But it’s cheaper to run most
of them against an emulator deployment. For sure you need to balance this
decision; there are tests which have to run against the Azure deployment, so
called Platform Verification Tests. They verify is the app is running correct in
the cloud, also if the app is configured correct in the cloud. All the other test,
functional system etc, can be executed on an emulator deployment.


Both test executions (emulator deployment and azure staging / production
deployment) can be configured to run from VS2010, MTM or the Build
server, with or without the use of test agents.

Each execution platform has it’s pros and cons. For example from VS2010 is
more a developer test, which verifies a bug fix or repro. Test results aren’t
collected in TFS or Test Manager and no connection with linked user stories.
It’s an easy way to dry run your tests, specially because the emulators are
already in place an loaded by VS2010. No additional actions need to be
made.

Execution on the build server is a kind of strange; execute manual tests on a
server. It also will get challenging when you want to load the emulator
during the build to run tests against. Also there will be no collection of test
results in Test Manager (no reporting on test points)


http://www.clemensreijnen.nl/post/2011/02/21/Running-Automated-Tests-
on-Physical-Environments-the-different-flavorse280a6.aspx
The preferred way of execution automated tests is from within Microsoft
Test Manager with associated automation in manual test cases. Another
benefit is that you can add scripts and deployment actions which run before
and after an automatic test.




Flavor E: Execution from MTM during Build…

Purpose: Part of BVT. Preferred configuration above flavor C. Flavor D and E
can be configured together.
Triggered by: Build
Information:
Configure Test Controller (register it with a project collection )
Configure Test Agents on clients (interactive mode, can be the same as
MTM)
Configure Lab Center in MTM to use test controller and create test ‘agent’
environment.
Associate CodedUI test with WI Test Case from VS.
Create Build task to run TCM or MSTEST task for Test Plan
http://blogs.microsoft.co.il/blogs/shair/archive/2010/10/30/how-to-run-
coded-ui-tests-from-command-line.aspx
How to: Run Test Cases with Automation from the Command Line Using Tcm
http://msdn.microsoft.com/en-us/library/dd465192.aspx
Pro
Test run distributed over test environments.
Tests can be configured to run on different configured environments
Test Result in MTM and TFS
Triggered by build
Test Settings from MTM
Con
Hard to configure
maintenance of TCM commands in build

Flavor D: Execution from Microsoft Test Manager

Purpose: Part of Regression Tests (other type of test than BVT).
Triggered by: MTM user, right mouse click on test case, run
Information:
Configure Test Controller (register it with a project collection )
Configure Test Agents on clients (interactive mode)
Configure Lab Center in MTM to use test controller and create test ‘agent’
physical environment.
http://msdn.microsoft.com/en-us/library/ee390842.aspx
http://msdn.microsoft.com/en-us/library/dd293551.aspx
Associate CodedUI test with WI Test Case from VS.
http://www.richard-banks.org/2010/11/how-to-use-codedui-tests-watin-
and-mtm.html
Pro
Test run distributed over test environments
Test Result in MTM
Test Settings from MTM
Full control by the tester
Con
Test Controller needs to be configured with a Project Collection (one
controller per collection)
Manually triggered by Tester (or pro)
Hard to configure
Hard to see which test case is automated
Soon on: http://www.youtube.com/user/clemensreijnen




                 Pro:
                 No click deployment from build
                 Repeatable ‘proven’ deployments*
                 Testers connected, same heartbeat as dev
                 Proven quality
                 Automated BVT on different Environments
                 Comfortable Acc Testing
                 Done Done

                 Con:
                 Build workflow knowledge necessary
                 Powershell, ccproj tweaks, target files,
                 Certificates
                 Test Infrastructure knowledge necessary
                 A balanced thinking of test automation




5: Developer, Automated Tests, Build,
Deploy, Acceptance test and
Operations
                 The final scenario also added acceptance testing and operations to the
                 process.
                 Acceptance testing often done by the business users and often very
                 disconnected with the team. In the previous scenarios there was a lot of
                 focus on setting up environments so testers won’t get annoyed that the test
                 environment isn’t ready. This is even more important having annoyed
                 business users who can’t test the system isn’t very well for adoption. One
                 big benefit of Azure is that all environments are the same, the same guest
                 OS. So, deployment packages and configuration files in one environment will
                 also work on other environments.
                 Operations needs to provide the business with valuable information how the
                 system is used, so the business can make decisions about the project
                 portfolio. For cloud applications also the monetization of the usages is
                 interesting.
Team development.
The Team implements the requested features, specifies test cases
and determines operational SLA and usages parameters.

On local environments ‘compute and storage emulators’
execution of unit tests, dry run CodedUI tests (customize code to
handle different environments) and associate CodedUI tests with
a MTLM test case, execute the automated test cases from MTLM
(make use of CSRun).

As soon as possible emulator storage to the Azure storage, due to
environment differences and same test- development data
storage for the team. (green line)

Engineering and design should also focus on tracing and
diagnostics, this is important during testing and operation of the
cloud application.

Build, Unit test, Deploy, UItest flow, manual test
During build, not the CI build but for example a Sprint Review
Build deploy the application automatic to the staging
environment. First compile, unit test and the creation of the
deployment package and configuration files for different
environments.
After deployment, automated platform/ staging tests are run.
These are CodedUI tests which verify the installation and stability
on the Azure environment. Test infrastructure can be configured
to run the test from different environments to distribute the tests
for time saving or to tests the azure application with different
client configurations. The test are executed during the build with
collection of the result in MTLM by using TCM.exe
http://msdn.microsoft.com/en-us/library/dd465192.aspx

So, during the build ‘Build Verification Tests’ and after
deployment ‘Environment Verification Tests’ are executed, when
these are successful you could VISPSwap the Cloud application
from staging to production for additional manual testing or for
the sprint review (you can use the Management API for the
VISPSwap or CSManage.exe).

Release Drop.
The package created during the build is reused in another Azure
subscription for security the keys in this environment aren’t used
by testers or developers.

“Adatum uses the same package file to deploy to the test and
production environments, but they do modify the configuration
file. For the aExpense application, the key difference between the
contents of the test and production configuration files is the
storage connection strings. This information is unique to each
Windows Azure subscription and uses randomly generated access
keys. Only the two key people in the operations department have
access to the storage access keys for the production environment,
which makes it impossible for anyone else to use production
storage during testing accidentally.”
(from: Moving Applications to the Cloud on the Microsoft Azure™
Platform http://oreilly.com/catalog/0790145308795/ )

The business users execute there acceptance tests against the
staging environment of the production subscription. By using
MTLM they can execute manual tests, automated tests, and
exploratory tests while still being connected with the TFS
repository. This still gives the capabilities to provide very rich bug
reports to the team. When acceptance testing is done, the azure
application is manually swapped to production.

Operations
(see this PDF Monitoring and Diagnostic Guidance for Windows®
Azure™–hosted Applications )

The goal of application monitoring is to operationally answer a
simple question: Is the application running efficiently within its
        defined SLA parameters and without errors? If the answer to this
        question is no, then the Operations team needs to be made
        aware of this condition as soon as possible. Effective placement of
        monitoring on critical application and system breakpoints will
        help manage the hosted solutions. This document is intended for
        development and operations teams that need to monitor
        applications hosted on the Windows® Azure™ Services Platform,
        enabling incident, problem, and knowledge management.




        Same sources are used for the MTLM Azure Diagnostic Data
        Collectors.


Two more interesting scenario’s.

Not specific belonging to the ALM 4 Azure story, but it give some thoughts.

TFS on Azure announced PDC2010 …
http://blogs.msdn.com/b/bharry/archive/2010/10/28/tfs-on-windows-
azure-at-the-pdc.aspx

Other ALM Infrastructure on Azure … the opportunities are endless..




Thanks for reading all comments are welcome. This is work in progress….
Talk Through Sogeti ALM 4 Azure

Más contenido relacionado

La actualidad más candente

Microsoft SharePoint 2013 Preview
Microsoft SharePoint 2013 PreviewMicrosoft SharePoint 2013 Preview
Microsoft SharePoint 2013 PreviewIntergen
 
Scr Position Paper For Chi 04 Workshop
Scr Position Paper For Chi 04 WorkshopScr Position Paper For Chi 04 Workshop
Scr Position Paper For Chi 04 WorkshopArnold Rudorfer
 
Red Hat SOA: The Complete Guide
Red Hat SOA: The Complete GuideRed Hat SOA: The Complete Guide
Red Hat SOA: The Complete GuideRicardo Payan
 
DESIGN OF A MULTI-AGENT SYSTEM ARCHITECTURE FOR THE SCRUM METHODOLOGY
DESIGN OF A MULTI-AGENT SYSTEM ARCHITECTURE FOR THE SCRUM METHODOLOGYDESIGN OF A MULTI-AGENT SYSTEM ARCHITECTURE FOR THE SCRUM METHODOLOGY
DESIGN OF A MULTI-AGENT SYSTEM ARCHITECTURE FOR THE SCRUM METHODOLOGYijseajournal
 
Cloud and SaaS Force a Rethinking of Integration and Middleware as Services -...
Cloud and SaaS Force a Rethinking of Integration and Middleware as Services -...Cloud and SaaS Force a Rethinking of Integration and Middleware as Services -...
Cloud and SaaS Force a Rethinking of Integration and Middleware as Services -...Dana Gardner
 
IVCi Corporate Overview
IVCi Corporate OverviewIVCi Corporate Overview
IVCi Corporate OverviewIVCi, LLC
 
Teampark and SharePoint 2010 social collaboration
Teampark and SharePoint 2010 social collaborationTeampark and SharePoint 2010 social collaboration
Teampark and SharePoint 2010 social collaborationAlbert Hoitingh
 
Microsoft Windows Azure - SharpCloud Manufacturing Triples Productivity Case ...
Microsoft Windows Azure - SharpCloud Manufacturing Triples Productivity Case ...Microsoft Windows Azure - SharpCloud Manufacturing Triples Productivity Case ...
Microsoft Windows Azure - SharpCloud Manufacturing Triples Productivity Case ...Microsoft Private Cloud
 

La actualidad más candente (9)

Microsoft SharePoint 2013 Preview
Microsoft SharePoint 2013 PreviewMicrosoft SharePoint 2013 Preview
Microsoft SharePoint 2013 Preview
 
Scr Position Paper For Chi 04 Workshop
Scr Position Paper For Chi 04 WorkshopScr Position Paper For Chi 04 Workshop
Scr Position Paper For Chi 04 Workshop
 
Red Hat SOA: The Complete Guide
Red Hat SOA: The Complete GuideRed Hat SOA: The Complete Guide
Red Hat SOA: The Complete Guide
 
DESIGN OF A MULTI-AGENT SYSTEM ARCHITECTURE FOR THE SCRUM METHODOLOGY
DESIGN OF A MULTI-AGENT SYSTEM ARCHITECTURE FOR THE SCRUM METHODOLOGYDESIGN OF A MULTI-AGENT SYSTEM ARCHITECTURE FOR THE SCRUM METHODOLOGY
DESIGN OF A MULTI-AGENT SYSTEM ARCHITECTURE FOR THE SCRUM METHODOLOGY
 
Cloud and SaaS Force a Rethinking of Integration and Middleware as Services -...
Cloud and SaaS Force a Rethinking of Integration and Middleware as Services -...Cloud and SaaS Force a Rethinking of Integration and Middleware as Services -...
Cloud and SaaS Force a Rethinking of Integration and Middleware as Services -...
 
IVCi Corporate Overview
IVCi Corporate OverviewIVCi Corporate Overview
IVCi Corporate Overview
 
Teampark and SharePoint 2010 social collaboration
Teampark and SharePoint 2010 social collaborationTeampark and SharePoint 2010 social collaboration
Teampark and SharePoint 2010 social collaboration
 
Microsoft Windows Azure - SharpCloud Manufacturing Triples Productivity Case ...
Microsoft Windows Azure - SharpCloud Manufacturing Triples Productivity Case ...Microsoft Windows Azure - SharpCloud Manufacturing Triples Productivity Case ...
Microsoft Windows Azure - SharpCloud Manufacturing Triples Productivity Case ...
 
10 Teps to SOA
10 Teps to SOA10 Teps to SOA
10 Teps to SOA
 

Destacado

Какво прави един интериор уникален
Какво прави един интериор уникаленКакво прави един интериор уникален
Какво прави един интериор уникаленTemenouzhka Zaharieva
 
Какво прави един интериор уникален?
Какво прави един интериор уникален?Какво прави един интериор уникален?
Какво прави един интериор уникален?Temenouzhka Zaharieva
 
Във времето на многото Rе-та
Във времето на многото Rе-таВъв времето на многото Rе-та
Във времето на многото Rе-таTemenouzhka Zaharieva
 
TMap for VS2010 - SlideShare.
TMap for VS2010 - SlideShare.TMap for VS2010 - SlideShare.
TMap for VS2010 - SlideShare.Clemens Reijnen
 
Centre4Cloud Tranforming to Saas Benefits, Risks and Business models for ISVs
Centre4Cloud Tranforming to Saas Benefits, Risks and Business models for ISVsCentre4Cloud Tranforming to Saas Benefits, Risks and Business models for ISVs
Centre4Cloud Tranforming to Saas Benefits, Risks and Business models for ISVsJos van Hillegersberg
 

Destacado (8)

Портфолио
ПортфолиоПортфолио
Портфолио
 
Какво прави един интериор уникален
Какво прави един интериор уникаленКакво прави един интериор уникален
Какво прави един интериор уникален
 
Work agile with VS2010
Work agile with VS2010Work agile with VS2010
Work agile with VS2010
 
Какво прави един интериор уникален?
Какво прави един интериор уникален?Какво прави един интериор уникален?
Какво прави един интериор уникален?
 
Във времето на многото Rе-та
Във времето на многото Rе-таВъв времето на многото Rе-та
Във времето на многото Rе-та
 
TMap for VS2010 - SlideShare.
TMap for VS2010 - SlideShare.TMap for VS2010 - SlideShare.
TMap for VS2010 - SlideShare.
 
Alm 4 Azure
Alm 4 AzureAlm 4 Azure
Alm 4 Azure
 
Centre4Cloud Tranforming to Saas Benefits, Risks and Business models for ISVs
Centre4Cloud Tranforming to Saas Benefits, Risks and Business models for ISVsCentre4Cloud Tranforming to Saas Benefits, Risks and Business models for ISVs
Centre4Cloud Tranforming to Saas Benefits, Risks and Business models for ISVs
 

Similar a Talk Through Sogeti ALM 4 Azure

Le cloudvupardesexperts 9pov-curationparloicsimon-clubclouddespartenaires
Le cloudvupardesexperts 9pov-curationparloicsimon-clubclouddespartenairesLe cloudvupardesexperts 9pov-curationparloicsimon-clubclouddespartenaires
Le cloudvupardesexperts 9pov-curationparloicsimon-clubclouddespartenairesClub Alliances
 
Difference Between Agile And Scrum
Difference Between Agile And ScrumDifference Between Agile And Scrum
Difference Between Agile And ScrumMichelle Madero
 
Different Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsDifferent Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsNicole Gomez
 
Glossary of Agile Terms
Glossary of Agile TermsGlossary of Agile Terms
Glossary of Agile TermsValtech UK
 
Taloring A Clouded Data Security Life Cycle Essay
Taloring A Clouded Data Security Life Cycle EssayTaloring A Clouded Data Security Life Cycle Essay
Taloring A Clouded Data Security Life Cycle EssayMarisela Stone
 
MLOps_Buyers_Guide_By_Seldon.pdf
MLOps_Buyers_Guide_By_Seldon.pdfMLOps_Buyers_Guide_By_Seldon.pdf
MLOps_Buyers_Guide_By_Seldon.pdfsudhakarkatiyar1
 
What Are The Top 5 Trending Technologies In DevOps?.pdf
What Are The Top 5 Trending Technologies In DevOps?.pdfWhat Are The Top 5 Trending Technologies In DevOps?.pdf
What Are The Top 5 Trending Technologies In DevOps?.pdfSmith Daniel
 
Business Need And Current Situation Essay
Business Need And Current Situation EssayBusiness Need And Current Situation Essay
Business Need And Current Situation EssayJill Lyons
 
Agile Corporation for MIT
Agile Corporation for MITAgile Corporation for MIT
Agile Corporation for MITCaio Candido
 
Selection And Implementation Of An Enterprise Maturity...
Selection And Implementation Of An Enterprise Maturity...Selection And Implementation Of An Enterprise Maturity...
Selection And Implementation Of An Enterprise Maturity...Jenny Calhoon
 
Dsg best practice guide for net suite implementation success
Dsg best practice guide for net suite implementation successDsg best practice guide for net suite implementation success
Dsg best practice guide for net suite implementation successBootstrap Marketing
 
Integration Of UX Practices And Agile Methodology
Integration Of UX Practices And Agile MethodologyIntegration Of UX Practices And Agile Methodology
Integration Of UX Practices And Agile MethodologyAdvance Agility
 
DevOps: What does this term mean and why should we care?
DevOps: What does this term mean and why should we care?DevOps: What does this term mean and why should we care?
DevOps: What does this term mean and why should we care?Jean-Christophe HUC (Jay C)
 
International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)IJERD Editor
 
Whitepaper: Ten Benefits of Integrated ALM
Whitepaper: Ten Benefits of Integrated ALMWhitepaper: Ten Benefits of Integrated ALM
Whitepaper: Ten Benefits of Integrated ALMKovair
 
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...Dialexa
 

Similar a Talk Through Sogeti ALM 4 Azure (20)

Le cloudvupardesexperts 9pov-curationparloicsimon-clubclouddespartenaires
Le cloudvupardesexperts 9pov-curationparloicsimon-clubclouddespartenairesLe cloudvupardesexperts 9pov-curationparloicsimon-clubclouddespartenaires
Le cloudvupardesexperts 9pov-curationparloicsimon-clubclouddespartenaires
 
Difference Between Agile And Scrum
Difference Between Agile And ScrumDifference Between Agile And Scrum
Difference Between Agile And Scrum
 
Different Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsDifferent Methodologies Used By Programming Teams
Different Methodologies Used By Programming Teams
 
Glossary of Agile Terms
Glossary of Agile TermsGlossary of Agile Terms
Glossary of Agile Terms
 
Taloring A Clouded Data Security Life Cycle Essay
Taloring A Clouded Data Security Life Cycle EssayTaloring A Clouded Data Security Life Cycle Essay
Taloring A Clouded Data Security Life Cycle Essay
 
MLOps_Buyers_Guide_By_Seldon.pdf
MLOps_Buyers_Guide_By_Seldon.pdfMLOps_Buyers_Guide_By_Seldon.pdf
MLOps_Buyers_Guide_By_Seldon.pdf
 
What Are The Top 5 Trending Technologies In DevOps?.pdf
What Are The Top 5 Trending Technologies In DevOps?.pdfWhat Are The Top 5 Trending Technologies In DevOps?.pdf
What Are The Top 5 Trending Technologies In DevOps?.pdf
 
Business Need And Current Situation Essay
Business Need And Current Situation EssayBusiness Need And Current Situation Essay
Business Need And Current Situation Essay
 
Agile Corporation for MIT
Agile Corporation for MITAgile Corporation for MIT
Agile Corporation for MIT
 
Selection And Implementation Of An Enterprise Maturity...
Selection And Implementation Of An Enterprise Maturity...Selection And Implementation Of An Enterprise Maturity...
Selection And Implementation Of An Enterprise Maturity...
 
Agile.usability
Agile.usabilityAgile.usability
Agile.usability
 
Dsg best practice guide for net suite implementation success
Dsg best practice guide for net suite implementation successDsg best practice guide for net suite implementation success
Dsg best practice guide for net suite implementation success
 
Agile~overview
Agile~overviewAgile~overview
Agile~overview
 
Integration Of UX Practices And Agile Methodology
Integration Of UX Practices And Agile MethodologyIntegration Of UX Practices And Agile Methodology
Integration Of UX Practices And Agile Methodology
 
DevOps: What does this term mean and why should we care?
DevOps: What does this term mean and why should we care?DevOps: What does this term mean and why should we care?
DevOps: What does this term mean and why should we care?
 
International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)
 
Dev opsnirvana
Dev opsnirvanaDev opsnirvana
Dev opsnirvana
 
Whitepaper: Ten Benefits of Integrated ALM
Whitepaper: Ten Benefits of Integrated ALMWhitepaper: Ten Benefits of Integrated ALM
Whitepaper: Ten Benefits of Integrated ALM
 
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
Platforms and Microservices - Is There a Middle Ground for Engineers and Tech...
 
7.agila model
7.agila model7.agila model
7.agila model
 

Más de Clemens Reijnen

Azure for software development teams
Azure for software development teamsAzure for software development teams
Azure for software development teamsClemens Reijnen
 
06 operations and feedback
06   operations and feedback06   operations and feedback
06 operations and feedbackClemens Reijnen
 
04 test controlling and tracking
04   test controlling and tracking04   test controlling and tracking
04 test controlling and trackingClemens Reijnen
 
03 test specification and execution
03   test specification and execution03   test specification and execution
03 test specification and executionClemens Reijnen
 
Test Tooling in Visual Studio 2012 an overview
Test Tooling in Visual Studio 2012 an overviewTest Tooling in Visual Studio 2012 an overview
Test Tooling in Visual Studio 2012 an overviewClemens Reijnen
 
ALM - Getting Testing done in a Sprint
ALM - Getting Testing done in a SprintALM - Getting Testing done in a Sprint
ALM - Getting Testing done in a SprintClemens Reijnen
 
TFS11 on Azure the basics
TFS11 on Azure the basicsTFS11 on Azure the basics
TFS11 on Azure the basicsClemens Reijnen
 
Coded UI - Test automation Practices from the Field
Coded UI - Test automation Practices from the FieldCoded UI - Test automation Practices from the Field
Coded UI - Test automation Practices from the FieldClemens Reijnen
 
MTLM Visual Studio 2010 ALM workshop - day1
MTLM Visual Studio 2010 ALM workshop  - day1MTLM Visual Studio 2010 ALM workshop  - day1
MTLM Visual Studio 2010 ALM workshop - day1Clemens Reijnen
 
MTLM Visual Studio 2010 ALM - day2
MTLM Visual Studio 2010 ALM - day2MTLM Visual Studio 2010 ALM - day2
MTLM Visual Studio 2010 ALM - day2Clemens Reijnen
 
MTLM Visual Studio 2010 ALM workshop
MTLM Visual Studio 2010 ALM workshopMTLM Visual Studio 2010 ALM workshop
MTLM Visual Studio 2010 ALM workshopClemens Reijnen
 
Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Clemens Reijnen
 
Alm 4 Azure with screenshots
Alm 4 Azure with screenshotsAlm 4 Azure with screenshots
Alm 4 Azure with screenshotsClemens Reijnen
 

Más de Clemens Reijnen (19)

Azure for software development teams
Azure for software development teamsAzure for software development teams
Azure for software development teams
 
06 operations and feedback
06   operations and feedback06   operations and feedback
06 operations and feedback
 
05 test infrastructure
05   test infrastructure05   test infrastructure
05 test infrastructure
 
04 test controlling and tracking
04   test controlling and tracking04   test controlling and tracking
04 test controlling and tracking
 
03 test specification and execution
03   test specification and execution03   test specification and execution
03 test specification and execution
 
02 test planning
02   test planning02   test planning
02 test planning
 
01 the value of quality
01   the value of quality01   the value of quality
01 the value of quality
 
A Collaborative culture
A Collaborative cultureA Collaborative culture
A Collaborative culture
 
Test Tooling in Visual Studio 2012 an overview
Test Tooling in Visual Studio 2012 an overviewTest Tooling in Visual Studio 2012 an overview
Test Tooling in Visual Studio 2012 an overview
 
ALM - Getting Testing done in a Sprint
ALM - Getting Testing done in a SprintALM - Getting Testing done in a Sprint
ALM - Getting Testing done in a Sprint
 
TFS11 on Azure advanced
TFS11 on Azure advancedTFS11 on Azure advanced
TFS11 on Azure advanced
 
TFS11 on Azure the basics
TFS11 on Azure the basicsTFS11 on Azure the basics
TFS11 on Azure the basics
 
Coded UI - Test automation Practices from the Field
Coded UI - Test automation Practices from the FieldCoded UI - Test automation Practices from the Field
Coded UI - Test automation Practices from the Field
 
MTLM Visual Studio 2010 ALM workshop - day1
MTLM Visual Studio 2010 ALM workshop  - day1MTLM Visual Studio 2010 ALM workshop  - day1
MTLM Visual Studio 2010 ALM workshop - day1
 
MTLM Visual Studio 2010 ALM - day2
MTLM Visual Studio 2010 ALM - day2MTLM Visual Studio 2010 ALM - day2
MTLM Visual Studio 2010 ALM - day2
 
MTLM Visual Studio 2010 ALM workshop
MTLM Visual Studio 2010 ALM workshopMTLM Visual Studio 2010 ALM workshop
MTLM Visual Studio 2010 ALM workshop
 
Scrum with VS2010
Scrum with VS2010  Scrum with VS2010
Scrum with VS2010
 
Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010Technical meeting automated testing with vs2010
Technical meeting automated testing with vs2010
 
Alm 4 Azure with screenshots
Alm 4 Azure with screenshotsAlm 4 Azure with screenshots
Alm 4 Azure with screenshots
 

Último

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Último (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Talk Through Sogeti ALM 4 Azure

  • 1. INCREASE PRODUCTIVITY AND SOFTWARE QUALITY WITH AZURE AND VS2010 ALM F a s t e r , b e t t e r w i t h h i g h e r q u a l i t y d e s i g n , d e v e l o p , b u i l d , t e s t a n d d e p l o y Az u r e c l o u d applications with Application Lifecycle Management. AZURE PROVIDES NEW OPPERTUNITIES FOR BUSINESSES. MANY ORGANISATIONS ARE STARTING TO DEVELOP CLOUD APPLICATIONS. MICROSOFT VISUAL STUDIO 2010 AND TEAM FOUNDATION SERVER 2010 ARE THE APPLICATION LIFECYCLE MANAGEMENT TOOLS TO DEVELOP AZURE APPLICATION. THIS PAPER DISCUSSES, HOW APPLICATION LIFECYCLE MANAGEMENT PROCESSES AND TOOLS CAN BE USED IN AN OPTIMAL WAY, BY MAKING USE OF THEY KEY CHARACTERISTICS OF THE AZURE PLATFORM TO RAISE THE PRODUCTIVITY AND QUALITY OF SYSTEMS DEVELOPED FOR THE CLOUD. ALM 4 Azure ALM 4 Azure a presentation covering different levels of ALM automation for Azure cloud services development. An important notice: the topic covers modern software development tools and practices which you need to know while developing systems which run on the Azure cloud (4 Azure). This is something completely different, but related, than ALM on Azure, where we use the tools out of the cloud (SaaS) to execute a modern system development. You can use them together ‘on’ and ‘for’ Azure, but this presentation only covers the ‘for’ azure. How do we need to execute our practices and use our on premise tools for cloud services? What is Application Lifecycle Management, why do we want it and what are the goals we pursue. What are the specific characteristics of Azure and Cloud Computing. Where can these characteristics help us to reach the goal and where do they give us some challenges. The main topic in the agenda are 5 different ALM 4 Azure scenario’s and supporting technologies explained.
  • 2. Application Lifecycle Management All tool vendors and methodologies have their own definition of Application Lifecycle management. What can we learn from these definitions? A wide variety in scope. ITIL is focused on the operational side of ALM, the Wiki and Forrester descriptions are more focused on the Software Development Lifecycle [SDLC] and Microsoft takes a bigger scope with business, development and operations, although the tooling and the assessment are focused on SDLC. Borland is also talking about a wider scope, when you look at the RUP like model. But the main pro is their focus on "many processes and many tools" so it should fit more then one environment. Beside this difference in scope, everybody agrees on terms like: measurable, predictable, traceable, manageable, monitored etc etc... smells like "in control" We use this image when defining ALM and it is about "in control" but it is even more about communication. It is about how the different ALM roles who are all responsible and accountable for the success of a software development project communicate in a seamless manner. When talking about Application Lifecycle Management [ALM] terms like accountability, governance and compliance are used. All of them refer back to “working together”, how do we work together during the application lifecycle. ALM is not about tools, it’s about working together. Working together seamless and flexible while staying in control, being measurable and responsible. All the roles in the application lifecycle have a part in this collaboration effort. Tools can help but isn’t’ the core driver. There are lots of examples of wrong interpreted business requirements, miss communication between development and test, applications which won’t run in production, operations who don’t understand the applications. All of them resulting in more work, more faults, more costs or even only costs and no application because the project was unplugged. Most of these projects faults, these extra costs are a slip in communication. Having a strategy how people have to collaborate within the lifecycle is one important piece of Application Lifecycle Management. Most organizational parts have already some kind of process / methodology in place. Having an approach how to share information and share ideas from their own role point of view through the other roles is a key success factor for lowering the costs and raises the business value of IT investments. Tools can help with this goal. Having gear in place which supports and stimulates collaboration is a driver for a successful Application Lifecycle Management. But without a plan, how people should collaborate and communicate, tools are useless. Creating new modes of collaboration supported by technology can only be done by addressing the human aspect. More specifically, we need to address some of the worries and obstacles people encounter when collaborating using technology. The three most important concerns are:  Trust. Trust is a condition for social interaction. People will only work with people, companies, tools and information they know they can trust. Before we can expect collaboration to take off online, there must be a way for people to get this “trust.” And a topic closely associated with trust when it refers to people is Identity.  Collaborative culture. If one individual is the greatest collaborator in the world, he or she is probably not getting anywhere. Only when all people involved are part of the same collaborative culture will new levels of creativity and productivity be reached. A collaborative culture consists of many things, including: o Collaborative leadership; o Shared goals; o Shared model of the truth; and o Rules or norms.  Reward. Changing the way people work takes effort, so it must be
  • 3. clear for the parties involved what they will gain, at a personal level, from collaborating in a new way. Surprisingly, a “reward” for successful collaboration is most often of a non-financial nature. When working together with work packages, seamless communication need to address these challenges. All the different roles in the Application Lifecycle create artifacts, product also these products need to work together, they need to fit, a single point of truth. Requirements, designs, the business case, the test cases, the source files and the operational information… all need to work together as one consistent product. When one gets out of sync then the involved roles should get a notification. Tools can help with this. The Visual Studio 2010 family is made up of a central team server, and a small selection of client-side tools. The team server—Team Foundation Server 2010—is the backbone of the application lifecycle management, providing capabilities for source control management, (SCM), build automation, work item tracking and reporting. In this release Microsoft expanded the capabilities of Team Foundation Server by adding a true test case management system and extended it with Lab Management 2010—a set of capabilities designed to better integrate both physical and virtual labs into the development process. On the client-side for developers, you can choose between Visual Studio 2010 Professional, Premium or Ultimate. For testers and business analysts there is Test Professional—a new integrated test environment designed with manual testers in mind. For those people who participate in the development efforts, but for whom Visual Studio—the IDE—is not appropriate, including Java developers, project managers and stakeholders the Team Foundation Server extensibility model enables alternative interfaces. These include both Team Explorer—a standalone tool built with the Visual Studio shell—and Team Web Access. These tools enable anyone to work directly with Team Foundation Server. And there is cross-product integration capabilities with Microsoft Office® and Microsoft Expression and SharePoint Server with new SharePoint dashboard. Azure Windows Azure™ is a cloud services operating system that serves as the development, service hosting and service management environment for the Windows Azure platform. Windows Azure provides developers with on- demand compute and storage to host, scale, and manage web applications on the internet through Microsoft® datacenters. Windows Azure has several unique characteristics as a platform. 1. Hosted services allow deploying to two identical but independent environments. The stating environment and the so called production environment. When you deploy a service you can choose to deploy to either the staging environment or the production environment. A service deployed to the staging environment is assigned a URL with the following format: {deploymentid}.cloudapp.net. A service deployed to the production environment is assigned a URL with the following format: {hostedservicename}.cloudapp.net. The staging environment is useful as a test bed for your service prior to going live with it. In addition, when you are ready to go live, it is faster to swap VIPS to move your service to the production environment than to deploy it directly there. http://msdn.microsoft.com/en-us/library/gg433118.aspx 2. Guest OS Versions are identical for every instance. In the configuration of the hosted service the OS version is set and every instance will be built of this same image. This results in the very hard to accomplish on premise situation where, test, acceptance and production environments are identical. The Windows Azure guest operating system is the operating system that
  • 4. runs on the virtual machines (VMs) that host your service. The guest operating system is updated monthly. You can choose to upgrade the guest OS for your service automatically each time an update is released, or you can perform upgrades manually at a time of your choosing. All role instances defined by your service will run on the guest operating system version that you specify. http://msdn.microsoft.com/en-us/library/ff729422.aspx 3. Don’t assume your state is safe. Instances, VM’s are recycled on a ‘for us’ random base. Windows Azure manages that the application is always accessible, but local stored information isn’t. 4. in place upgrades. Windows Azure role instances can be easily upgraded. Windows Azure organizes instances of your roles into virtual groupings called upgrade domains. When you upgrade one or more roles within your service in-place, Windows Azure upgrades sets of role instances according to the upgrade domain to which they belong. Windows Azure upgrades one domain at a time, stopping the instances running within the upgrade domain, upgrading them, bringing them back online, and moving on to the next domain. By stopping only the instances running within the current upgrade domain, Windows Azure ensures that an upgrade takes place with the least possible impact to the running service. http://msdn.microsoft.com/en-us/library/ee517255.aspx 5. clear environment costs. Azure applications are developed local. It is also possible to run the Azure application in this local environment by using emulators. The Windows Azure compute emulator enables you to run, test, debug, and fine-tune your application before you deploy it as a hosted service to Windows Azure. http://msdn.microsoft.com/en-us/library/gg432968.aspx The Windows Azure storage emulator provides local instances of the Blob, Queue, and Table services that are available in the Windows Azure. If you are building an application that uses storage services, you can test locally by using the storage emulator. http://msdn.microsoft.com/en-us/library/gg432983.aspx When deploying the Azure application to the Azure platform a package and a configuration file needs to be created. The package contains all files and the configuration information about the guest OS it needs and other configuration information. Environment configuration. To start developing Azure Applications and to run the application local or deploy and run it on the Azure platform there are some needs. 1. a version of Visual Studio 2010 2. the Azure SDK http://www.microsoft.com/windowsazure/getstarted 3. Set up a Windows Azure Subscription For the demo’s… you need more (for a windows 7 environment) - TFS Basic - Microsoft Test and Lab Manager - Build Service, controller and agent - Test controller and test agent - Visual Studio SP1 - Feature Pack 1 and 2 - Windows Virtual PC - Image with test agent configured - Powershell - …
  • 5. ALM 4 Azure The main goal when configuring the technical tool support for your processes is that it must support the same goals. For example when you execute an agile process with your development team. So your team is flexible, efficient and can deliver new functionality to the business against a predefined quality, repeatable and fast. The tools you are using must support and drive this goal. When your process of delivering new functionality takes days to deploy and configure even when you are capable of realizing this functionality, your team still can’t comply the goals. Let’s assume we executing an agile like processes and we have a risk driven mindset. We can write down several goals the tools must support… every team has its own goals, but the ones written down in this list are very common. Every change every technical tool support must support and drive towards these goals. No team is the same. This list of scenarios isn’t a maturity level kind of list, it are more advancement levels of tool support. Not every team wants to go through the knowledge gathering, hardware and software investment necessary to implement a specific scenario. It is definitely a balance between effort, money and profit, benefit. 1: Engineering only The developer only scenario is for really small teams, one developer which also does the testing. Most exercises and hands-on labs make use of this scenario.
  • 6. The engineers create functionality in Visual Studio 2010. The source code is checked in Team Foundation Server. Engineers can make use of work items in TFS but isn’t necessary. Source code is compiled and unit test if any are executed. Other code quality checks can be performed. Implementation checks by the layer diagram are interesting but not necessary. No real quality gates. Engineers deploy the application from Visual Studio by; or creating a package and configuration file or by using the ‘single click’ deployments from within Visual Studio. Soon on: http://www.youtube.com/user/clemensreijnen A common deployment flow. 1. Local development in emulator environments. 2. Hybrid of local and Windows Azure, when storage is stable. Different engineers can work against the same data source. The compute emulator is almost similar as the hosted service environment on Azure, but the storage emulator has some big differences compared with the Azure storage. 3. Everything in Windows Azure in staging. 4. Swap from Staging to Production. • Debugging is not currently supported in Windows Azure, intelitrace is. • Set breakpoints & debug in Local Development Fabric. • Test initially with development storage, but test with Windows Azure storage to test with large volumes of data whilst still keeping your roles local for debugging • Once you are happy with the Worker/Web Roles running locally deploy everything to Staging and run tests in this environment • Once all tests in staging pass, promote everything to production • Worker roles in the “Staging” project are operational – and as such will process messages from queues etc. You should design for this. • Staging also cost money. • Storage costs are way less as compute costs. Test as much local as possible.
  • 7. The developer only scenario has a lot of benefit and many organizations start with it because its painless. But it’s also faults can slip in easy and time consuming. Pro: Easy installation and configuration Single click deployment from VS2010 Con: No collaboration Easy deployment errors (configuration) What about test and ops 2: Developer with manual tester A bit bigger team with a test specific role. Developers have their quality gates within the build. Testers analyses the quality of the system and help the team with risk classifications. It can gets a bit challenging when entering this scenario. Testers and engineers often have different approached, different methodologies and different goals. Now they have to start working together. Work with workitems and supported process templates will help the adoption, providing the team with the benefits the technical support can give them when working together will also help. But mainly it’s a cultural process (see first alm slides) people have to work together and take a shared responsibility for the success of the system. Engineers and testers work together with workitems In Visual Studio Team System 2010 all test roles are provided with clear and better support within the Application Lifecycle. Testers do not use their own separate technical tools anymore, but use integrated tools that are used by architects and developers. Effectively tearing down the wall between developers and testers. But good tools are not enough. Also, a clear separation of roles, tasks, and authorizations are necessary. Finally and most importantly, a structured approach determines how successful you are with your test strategy. For example the role of the tester and the usages of work items in collaboration with engineers. During the planning phase of the project, also called iteration 0 [first blue piece], user stories are collected / brainstormed / defined /… in VSTS this information is collected in the work item type ‘user story’ During the planning of the iteration the team starts to breakdown the user stories [which are selected for that iteration] in implementation tasks. Within VSTS this is done in the implementation tab of the user story Work item. The new 2010 functionality of hierarchies between work items is used for this. More reading: http://www.clemensreijnen.nl/post/2009/09/03/Agile- Testing-with-VSTS-2010-and-TMap-Part-01-User-stories.aspx More reading: http://www.clemensreijnen.nl/post/2009/04/21/Testing-in- the-Application-Lifecycle-with-Visual-Studio-2010-Test-Edition.aspx
  • 8. As in scenario 1, the engineers create functionality in Visual Studio 2010. The source code is checked in Team Foundation Server. The test role is added to the team. They specify and execute manual test cases in Microsoft Test Manager. Same as scenario 1 Same as scenario 1 Tests are executed against the Azure staging environment. Bugs are filled in TFS. Using work items together with engineers is a must, starting with bugs followed by user stories test cases and tasks. Microsoft Test Manager 2010 is for testers what Visual Studio is for developers. That is to say, where Visual Studio is an IDE – an integrated development environment, Test Manager is an ITE – an integrated test environment. This is the interface that a tester will use to create test cases, organize test plans, track test results, and file bugs when defects are found. Test Manager is integrated with Team Foundation Server, and is designed to improve the productivity of testers. While I am not going to do a deep-dive of all that Test Manager can do, it is important to understand how it integrates with the Visual Studio Agents to make the most of test case execution, and ensure that when a tester files a bug, it is actionable with very little work on the tester’s part. Test cases are work items with a specific tab where test steps can be defined. These test steps can only be edited from within MTM. You can create test cases for your manual tests with both action and validation test steps by using Visual Studio 2010 Ultimate or Visual Studio Test Professional. You can add test cases to your test plan using Microsoft Test Manager. More information: http://msdn.microsoft.com/en-us/library/dd380712.aspx http://msdn.microsoft.com/en-us/library/dd286729.aspx Where to execute tests? The challenge of this scenario is that the staging environment usages cost money and with some serious testing this will grow every sprint. To balance what is tested where these costs can be minimized and kept in a comfortable range. Executing all the tests in the staging environment isn’t an option, too expensive. There are two other environments where to execute tests. One is the environment the tester uses to specify the tests, the other one the build environment. With Azure the challenge of running an Azure application outside of azure is the availability of the compute emulator. While the build environment is a server environment this isn’t the recommended place to execute manual tests. Only automated, like unit tests, are interesting to execute on the build. Balancing the testing effort over the environments is challenging. What is tested at developer level, with unit tests, isn’t useful to test during functional testing. And what should be tested in the staging environment while all functional and system tests are already executed in the testers environment.
  • 9. Execute tests in test environment by using the compute and CSRun. To execute tests, on a tester’s environment without Visual Studio 2010 installed, you need to set and install several things. The easiest way is to let the environments run their own compute emulator and version of the cloud application under test and make use of the azure storage for data. You need to install the Azure SDK and have IIS7.0 available on the test machine. (2) With CSRun.exe testers can launch the cloud application within their own compute storage with the CSX folder and the CSFG file (1). The only challenge left is the port number (3) created by the CSRun.exe command. Microsoft Test Manager record and playback capability will be useless when this one changes over time, and it will change. Test case should be rewritten and executed. This change of URL makes the use of shared steps (4) in Microsoft test manger a must. You can re-record them without breaking record and play back notion of the previous executed test cases. Shared steps will aslo proof there use when you want to execute a test case in staging and production after you have record it in the emulator. Soon on: http://www.youtube.com/user/clemensreijnen Collect data from the Azure instance while execution a test A challenge with testing cloud systems is that instances recycle on a regular basis, it’s not sure that the environment on where the tests were executed is still the same as when the engineers the bug tries to reproduce and resolve. So, when an engineer wants to find the bug in the system it is not sure he got access to the log files of the system, for example IIS logs, trace logs etc. When the cloud application has diagnostics enabled you can create a custom diagnostic adapter which collects information and queries the logs for the test execution time frame and add these logs to the test result for the engineer. See: http://www.clemensreijnen.nl/post/2011/01/05/MTM-Azure-Data- Diagnostic-Adapter-a-nice-ALM-for-Cloud-scenario-e280a6.aspx
  • 10. See demo WAD MTM Adapter: http://www.youtube.com/watch?v=xKxFtfKh6yo Microsoft Test Manger capabilities for cloud system testers. Microsoft Test Manager has some very useful features and capabilities for testers of cloud systems. Beside the usages of work items which help the testers to get the same heartbeat as engineers, these capabilities are helping managing the testing effort with, test plans, configurations, suits and the bug workflow. Two features are really useful while testing cloud systems, the shared steps and the diagnostic adapter extensibility. Shared steps make it easy to handle the different environments. First tests are executed on the compute emulator, second on staging and finally the production environment all with different URL’s. The diagnostic adapter extensibility makes is easy to collect environment information for bug solving. Two MTM features aren’t working for cloud systems in relation to MTM. Test Impact analysis and Intellitrace. Intellitrace does work from within Visual Studio as the deployment is configured to use it, but not from the MTM. The developer with manual tester scenario has a lot of benefit. The main benefit is that the system is going to be tested in a well thought manner. That engineers and testers are connected and have the same heartbeat will solve some big project management challenges and will save a lot of time. For test execution the biggest challenge is not to test everything on Azure, but balance it. Only platform verification tests on azure the other system and functional tests on the compute emulator. This needs some configuration on the test environments. Pro: Easy installation and configuration Single click deployment from VS2010 Testers connected, same heartbeat as dev Proven quality Con: Easy deployment errors (configuration) Time consuming (deploy and test) Not repeatable (annoyed testers) Testers connected  3: Developer with manual tester and deployment build
  • 11. To drive forward when the team grows or when we need to but some more effort in the stability of the system development process, we have to look at the build process on the build server and the deployment. Making the deployment of cloud systems repeatable for different environments will make the whole process more stable. We as a team can deliver functionality in a faster proven way. When we work agile we want to deliver functionality in a fast flexible way, having an automated process in place which supports this will raise our quality bar. Same as scenario 1 for engineers and testers, they specify test cases and write source code, test cases are executed on the compute emulator. In collaboration with operations build and deployment scripts are configured. During the build, unit test are run, deployment packages and configurations are made. As a final step of the build the cloud system is deployed to the Azure staging environment. Tests are executed against the Azure staging environment. Bugs are filled in TFS. Using work items together with engineers is a must, starting with bugs followed by user stories test cases and tasks. Automating deployment Manual deploying Azure systems is error-prone, changing configuration files and connection strings can go wrong, resulting in an instable deployment with annoyed testers (system isn’t ready for testing) and users (we can’t show them anything). There are several different ways to deploy a system to azure, the powershell CmdLets are the easiest to use. The Cmdlets can be downloaded from this location http://archive.msdn.microsoft.com/azurecmdlets More reading: http://msdn.microsoft.com/en-us/library/ff803365.aspx http://scottdensmore.typepad.com/blog/2010/03/azure-deployment-for- your-build-server.html http://blogs.msdn.com/b/tomholl/archive/2011/02/23/using-msbuild-to- deploy-to-multiple-windows-azure-environments.aspx For the next demo we are using cmdlets the build target and msbuild to create packages and deployment as described in http://blogs.msdn.com/b/tomholl/archive/2011/02/23/using-msbuild-to- deploy-to-multiple-windows-azure-environments.aspx. Note: You don’t want to configure the automatic deployment on a continuous integration build. This definitely won’t work, release builds or sprint review builds aren’t run that often can do the deployment.
  • 12. Soon on: http://www.youtube.com/user/clemensreijnen Having automated deployment in place is a boost for the quality of the system delivery process. Although it can be challenging to get the initial configuration right, allot of different technologies must be used, the benefit the team gets from it us high. Pro: Easy installation and configuration No click deployment from build Repeatable ‘proven’ deployments* Testers connected, same heartbeat as dev Proven quality Con: Time consuming testing Application can contain ‘annoying’ bugs Build workflow knowledge necessary Powershell, ccproj tweaks, target files, certificates 4: Developer with automated regression tests, manual tests and deployment build With automatic deployment in place we can start to configure automatic testing. Although you can run automatic UI test cases from within Visual Studio with the compute emulator on the developer environment, so automatic testing could be in place earlier. But running automatic UI tests on a developer’s environment executed by the developer and with the result collected in Visual Studio is more for bug reproducing and solving than testing, where you say something about the quality of the system. You want the tester to execute them on a test environment and with result in the test plans. Automatic testing will speed up system development, testers and developers have the same hard beat, but the further in a project you get the more regression test cases will need to be executed. This execution of regression tests will take more and more time bringing friction to the same heartbeat mindset.
  • 13. Engineers write source code and testers specify and execute test cases on the compute emulator. In collaboration with engineers manual test cases are automated with CodedUI and associated with Test Cases. Test case automations are ‘tested’ (dry run) on the developer’s environment. During the build, unit test are run, deployment packages and configurations are made. As a final step of the build the cloud system is deployed to the Azure staging environment. Tests are executed against the Azure staging environment. Bugs are filled in TFS. Using work items together with engineers is a must, starting with bugs followed by user stories test cases and tasks. Associated test case automations are executed from MTM on the compute storage. There are different technologies available to create tests within Visual Studio. Two of them are suitable for the automation of manual tests. Web tests and CodedUI tests. The main difference between them is that CodedUI really interacts with the UI, it uses IEDOM for automation. Web tests uses HTTP get and post to automate the tests. The CodedUI functionality is strongly connected with Microsoft Test Managers action recordings (created while executing a test case in MTM). CodedUI tests can better be used for functional tests and web test can better be used for performance tests and load tests.
  • 14. Execute tests as soon as possible in the lifecycle. We can divide the different tests technologies in development tests, load performance tests, automated UI tests and manual tests, and create a test specific sub category for the automated and manual tests with the categories: Functional Testing, Integration Testing, Acceptance Testing and Platform Testing (Azure specific, answers the question: will it run in the cloud and is the deployment and configuration correct test). Development tests are executed during development and in the CI build. For load and performance we need a full blown environment, this is easy with Azure but we do need a complete feature we need to test available in the cloud. So, these kinds of tests when part of the Definition of Done probably will be executed at the end of a sprint. Automated UI tests are really valuable, automated as soon as possible. These tests can cover just one feature (Functional Testing) and can be created and executed in the compute emulator as soon as the feature is implemented. Automated Integration tests are harder to execute within a sprint, because they often cover more scenario’s, when integration testing is part of the Definition of Done, these should be moved to the undone list (see: Agile Test practices with Microsoft Visual Studio 2010 [TMap and Scrum] ). Platform testing focus on specific things like if the deployment and configuration is correct and does it run correct in the cloud, often these are very common tests and can be executed within a sprint after the build, automated as soon as possible. Acceptance testing is often done outside the team by the business users, keeping those tests connected with the team is very useful for bug solving, test coverage and automation. Generated CodedUI tests from Microsoft Test Managers action recordings have all the steps as methods in the CodedUI test. To make the test suitable to be executed in different environments (emulator, staging, production) without having to change the code constantly or change the test data parameters settings. Another way to make customizations to the behavior of the codeUI is by using the UImap editor, which can be found in Feature Pack 2. It helps you tune the search conditions for controls but more important for Azure Applications it helps you extract methods like ‘open application’ out of the xml and code generation to a partial class where you can edit the behavior for all test methods who use this method.
  • 15. Soon on: http://www.youtube.com/user/clemensreijnen There are multiple ways to execute your test automation effort, you can run them from and on Microsoft Test Manager, from and on Visual Studio, during the build and on the Build Server or during the build on Test Agents configured with Test Controllers or … many flavors. So, where should you execute your automated tests to test an azure application, and how should you configure your test infrastructure. One thing to keep in mind when making a decision, testing on Azure costs money. You can configure VS2010, MTM or the Build server to execute the automated tests against an azure deployment. But it’s cheaper to run most of them against an emulator deployment. For sure you need to balance this decision; there are tests which have to run against the Azure deployment, so called Platform Verification Tests. They verify is the app is running correct in the cloud, also if the app is configured correct in the cloud. All the other test, functional system etc, can be executed on an emulator deployment. Both test executions (emulator deployment and azure staging / production deployment) can be configured to run from VS2010, MTM or the Build server, with or without the use of test agents. Each execution platform has it’s pros and cons. For example from VS2010 is more a developer test, which verifies a bug fix or repro. Test results aren’t collected in TFS or Test Manager and no connection with linked user stories. It’s an easy way to dry run your tests, specially because the emulators are already in place an loaded by VS2010. No additional actions need to be made. Execution on the build server is a kind of strange; execute manual tests on a server. It also will get challenging when you want to load the emulator during the build to run tests against. Also there will be no collection of test results in Test Manager (no reporting on test points) http://www.clemensreijnen.nl/post/2011/02/21/Running-Automated-Tests- on-Physical-Environments-the-different-flavorse280a6.aspx
  • 16. The preferred way of execution automated tests is from within Microsoft Test Manager with associated automation in manual test cases. Another benefit is that you can add scripts and deployment actions which run before and after an automatic test. Flavor E: Execution from MTM during Build… Purpose: Part of BVT. Preferred configuration above flavor C. Flavor D and E can be configured together. Triggered by: Build Information: Configure Test Controller (register it with a project collection ) Configure Test Agents on clients (interactive mode, can be the same as MTM) Configure Lab Center in MTM to use test controller and create test ‘agent’ environment. Associate CodedUI test with WI Test Case from VS. Create Build task to run TCM or MSTEST task for Test Plan http://blogs.microsoft.co.il/blogs/shair/archive/2010/10/30/how-to-run- coded-ui-tests-from-command-line.aspx How to: Run Test Cases with Automation from the Command Line Using Tcm http://msdn.microsoft.com/en-us/library/dd465192.aspx Pro Test run distributed over test environments. Tests can be configured to run on different configured environments Test Result in MTM and TFS Triggered by build Test Settings from MTM Con Hard to configure maintenance of TCM commands in build Flavor D: Execution from Microsoft Test Manager Purpose: Part of Regression Tests (other type of test than BVT). Triggered by: MTM user, right mouse click on test case, run Information: Configure Test Controller (register it with a project collection ) Configure Test Agents on clients (interactive mode) Configure Lab Center in MTM to use test controller and create test ‘agent’ physical environment. http://msdn.microsoft.com/en-us/library/ee390842.aspx http://msdn.microsoft.com/en-us/library/dd293551.aspx Associate CodedUI test with WI Test Case from VS. http://www.richard-banks.org/2010/11/how-to-use-codedui-tests-watin- and-mtm.html Pro Test run distributed over test environments Test Result in MTM Test Settings from MTM Full control by the tester Con Test Controller needs to be configured with a Project Collection (one controller per collection) Manually triggered by Tester (or pro) Hard to configure Hard to see which test case is automated
  • 17. Soon on: http://www.youtube.com/user/clemensreijnen Pro: No click deployment from build Repeatable ‘proven’ deployments* Testers connected, same heartbeat as dev Proven quality Automated BVT on different Environments Comfortable Acc Testing Done Done Con: Build workflow knowledge necessary Powershell, ccproj tweaks, target files, Certificates Test Infrastructure knowledge necessary A balanced thinking of test automation 5: Developer, Automated Tests, Build, Deploy, Acceptance test and Operations The final scenario also added acceptance testing and operations to the process. Acceptance testing often done by the business users and often very disconnected with the team. In the previous scenarios there was a lot of focus on setting up environments so testers won’t get annoyed that the test environment isn’t ready. This is even more important having annoyed business users who can’t test the system isn’t very well for adoption. One big benefit of Azure is that all environments are the same, the same guest OS. So, deployment packages and configuration files in one environment will also work on other environments. Operations needs to provide the business with valuable information how the system is used, so the business can make decisions about the project portfolio. For cloud applications also the monetization of the usages is interesting.
  • 18. Team development. The Team implements the requested features, specifies test cases and determines operational SLA and usages parameters. On local environments ‘compute and storage emulators’ execution of unit tests, dry run CodedUI tests (customize code to handle different environments) and associate CodedUI tests with a MTLM test case, execute the automated test cases from MTLM (make use of CSRun). As soon as possible emulator storage to the Azure storage, due to environment differences and same test- development data storage for the team. (green line) Engineering and design should also focus on tracing and diagnostics, this is important during testing and operation of the cloud application. Build, Unit test, Deploy, UItest flow, manual test During build, not the CI build but for example a Sprint Review Build deploy the application automatic to the staging environment. First compile, unit test and the creation of the deployment package and configuration files for different environments. After deployment, automated platform/ staging tests are run. These are CodedUI tests which verify the installation and stability on the Azure environment. Test infrastructure can be configured to run the test from different environments to distribute the tests for time saving or to tests the azure application with different client configurations. The test are executed during the build with collection of the result in MTLM by using TCM.exe http://msdn.microsoft.com/en-us/library/dd465192.aspx So, during the build ‘Build Verification Tests’ and after deployment ‘Environment Verification Tests’ are executed, when these are successful you could VISPSwap the Cloud application from staging to production for additional manual testing or for the sprint review (you can use the Management API for the VISPSwap or CSManage.exe). Release Drop. The package created during the build is reused in another Azure subscription for security the keys in this environment aren’t used by testers or developers. “Adatum uses the same package file to deploy to the test and production environments, but they do modify the configuration file. For the aExpense application, the key difference between the contents of the test and production configuration files is the storage connection strings. This information is unique to each Windows Azure subscription and uses randomly generated access keys. Only the two key people in the operations department have access to the storage access keys for the production environment, which makes it impossible for anyone else to use production storage during testing accidentally.” (from: Moving Applications to the Cloud on the Microsoft Azure™ Platform http://oreilly.com/catalog/0790145308795/ ) The business users execute there acceptance tests against the staging environment of the production subscription. By using MTLM they can execute manual tests, automated tests, and exploratory tests while still being connected with the TFS repository. This still gives the capabilities to provide very rich bug reports to the team. When acceptance testing is done, the azure application is manually swapped to production. Operations (see this PDF Monitoring and Diagnostic Guidance for Windows® Azure™–hosted Applications ) The goal of application monitoring is to operationally answer a
  • 19. simple question: Is the application running efficiently within its defined SLA parameters and without errors? If the answer to this question is no, then the Operations team needs to be made aware of this condition as soon as possible. Effective placement of monitoring on critical application and system breakpoints will help manage the hosted solutions. This document is intended for development and operations teams that need to monitor applications hosted on the Windows® Azure™ Services Platform, enabling incident, problem, and knowledge management. Same sources are used for the MTLM Azure Diagnostic Data Collectors. Two more interesting scenario’s. Not specific belonging to the ALM 4 Azure story, but it give some thoughts. TFS on Azure announced PDC2010 … http://blogs.msdn.com/b/bharry/archive/2010/10/28/tfs-on-windows- azure-at-the-pdc.aspx Other ALM Infrastructure on Azure … the opportunities are endless.. Thanks for reading all comments are welcome. This is work in progress….