advanced asp .net

26
Advanced ASP .NET Testing and Deployment David Grey, University of Hull

Upload: dee

Post on 23-Feb-2016

73 views

Category:

Documents


0 download

DESCRIPTION

Advanced ASP .NET. Testing and Deployment David Grey, University of Hull. Introduction. Visual Studio has great support for building ASP .NET web applications Real web application development involves more than just copying the files created in Visual Studio - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Advanced ASP .NET

Advanced ASP .NETTesting and DeploymentDavid Grey, University of Hull

Page 2: Advanced ASP .NET

Introduction Visual Studio has great support for

building ASP .NET web applications Real web application development

involves more than just copying the files created in Visual Studio

In this session we look at the issue of deploying and testing ASP .NET applications

Page 3: Advanced ASP .NET

Demo The sample application

› Self-contained slice of large web application

› Interacts with web services› Retrieves data from database› User authentication

Page 4: Advanced ASP .NET

Real-World Web Deployment

Production

DatabaseTest

Database

Web Application

Staging Web Server Developer’s

Workstation

Web Application

Production Web Server

Web Application

Web Application

Page 5: Advanced ASP .NET

Configuring Deployment Different configurations are required for

development, testing and production› Development

Local test web server, debugging, (local)test data, full source, editing support, local services

› Testing IIS, debugging?, source?, shared test data,

distributed services› Production

No debugging, fully optimised, production data stores, enhanced security

Page 6: Advanced ASP .NET

Web Deployment Projects Add-on for Visual Studio which offers

› Pre-compilation of ASP .NET sites› Flexible options for generating compiled assemblies

from a Web project› Control over assembly naming, versioning and signing› Ability to exclude, add, and transform files and

directories during builds› Modification of settings in the Web.config file› Generation of MSI installer setup

Tied to configuration settings of Web project Really useful in building real-world web

applications

Page 7: Advanced ASP .NET

Output Options Source files pre-compiled into assemblies

› One assembly per page› Single assembly for all pages

Compiled site can be› Updateable

Page markup shipped with site Useful for intra-organisation sites which may need

modification after deployment› Non-updateable

Page markup compiled into assembly(s) Useful for ‘boxed’ applications where end-user should

not be able to modify site

Page 8: Advanced ASP .NET

Creating Deployment Configurations

Arbitrary sections of Web.config file can be modified for each build configuration› External file contains specific replacement for

each build› WDP options specify which configuration

sections should be replaced Useful for

› Changing connections strings (e.g. database)› Disabling debugging for production release

Page 9: Advanced ASP .NET

Demo Creating a Web Deployment Project Setting build options

› Output format› Assembly naming, versioning and signing

Modifying configuration settings Creating an installer

Page 10: Advanced ASP .NET

Deployment Wrinkles Replacement config files show up in deployed

application› Combine WDP with custom MS-Build tasks

(http://waynebrantley.com/blogs/aspnetbytes/archive/2006/02/08/5.aspx#11) Compiling sites to a single assembly and making

them non-updateable can cause problems when› Minor (markup) layout errors need fixed

App must be recompiled and redeployed› Obfuscation used to protect IPR

Metadata removal/type renaming by obfuscator can cause problems in locating types when ASPX pages are removed

Using updateable pages requires code-behind types to maintain their names

Page 11: Advanced ASP .NET

Web Deployment Projects Pros

› No source or markup deployed to site allows for protection of intellectual property

› Secure – site can be made non-updateable› Performance – precompilation avoids compilation

overhead on initial page load Cons

› Must deploy all at once; can’t upgrade part of the application

› Can’t compile applications with sub-virtual directories› Can interfere with continuous service as large sites

are deployed (due to assembly swapping)

Page 12: Advanced ASP .NET

Testing Testing is key to

› Verifying web application functionality Web unit tests

› Verifying that non-functional requirements (e.g. performance, scalability) have been met Load tests (makes use of web unit tests)

Automated testing is required Visual Studio supports both kinds of testing

against arbitrary web sites› Can be performed automatically as part of daily

build cycle

Page 13: Advanced ASP .NET

Web Unit Testing Black-box approach

› Verifies expected page behaviour (i.e. output) when supplied with known input

Web Test Recorder› Create web test by interacting with web site in

Internet Explorer› Recorder captures interactions to create test› Can capture timing information (think times)

Gives more accurate simulation of user behaviour› Can configure test parameters to be retrieved

from a database

Page 14: Advanced ASP .NET

Demo Recording Web tests Executing Web tests Using parameterised tests

Page 15: Advanced ASP .NET

Load Testing Stress-testing of application by

simulating multiple users accessing site› Thousands of simultaneous users› Users performing different actions

Load testing enables › worst case performance evaluations› investigation of application performance

under different conditions› comparative evaluation of design

alternatives to allow optimisation

Goal of load testing is to exercise application under conditions that are as close as possible to those the application will experience in real use before it goes live Volume of users, traffic patterns and

user behaviour, mix of browsers, network characteristics

Page 16: Advanced ASP .NET

How Load Testing Works

Application under test

Test Scripts

Test Controller

TestAgent

TestAgent

TestAgent

Page 17: Advanced ASP .NET

Defining the test mix Users do a variety of things with a web

application at the same time Load testing can simulate this by using

multiple web tests› Create web tests for each of the user

activities› Select web tests to include in the load test

scenario› Alter the mix (ratio) of tests to produce an

activity mix similar to the real usage scenario

Page 18: Advanced ASP .NET

Simulating browser types Users access your site from a range of

browsers; load tests can simulate this Out-of-box emulation support

› IE 5.5, IE 6, Netscape, Pocket IE Custom browser types can be added

› Create additional browser config file in C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\Templates\LoadTest\Browsers

› Obtain browser settings by opening http://www.ranks.nl/tools/envtest.html in browser you wish to emulate. Copy settings to config file

Page 19: Advanced ASP .NET

Simulating connection characteristics

Users access application from a variety of different networks› LAN, Broadband, Dial-up, etc

Load testing can simulate the effect of the different network bandwidths › Allows evaluation of performance

experienced by client on particular types of network

Page 20: Advanced ASP .NET

Simulating traffic patterns VS can simulate

› Fixed user load accessing the site Not representative of real traffic but useful

for worst case analysis› Load varying over time

Ramp up from initial load to a maximum load Think times recorded in web tests can

be used to make timing of simulated web requests as close as possible to real traffic

Page 21: Advanced ASP .NET

Performance Counters Monitoring of Windows performance

counters is key to understanding the performance of your application

Performance counters exist for› OS (CPU/memory/IO,etc),.NET CLR, ASP .NET,

IIS, SQL Server, VS testing framework› Test framework counters are monitored by

default Counters can be monitored across local

and remote machines

Page 22: Advanced ASP .NET

Test Results Show performance counters over time

in graphical or tabular form

Page 23: Advanced ASP .NET

Demo Creating a test results repository Creating a load test Executing the tests Viewing live performance data Post-test analysis

Page 24: Advanced ASP .NET

Web Testing with AJAX Web Test Recorder works well with

standard ASP .NET applications› Cannot properly record interactions with

applications that use AJAX => test failures Download and use Fiddler2 to record

tests for AJAX applications› Add the tests created by Fiddler to the test

project› Run web/load tests as normal

Page 25: Advanced ASP .NET

Summary In this session we have seen how

features of Visual Studio can be used to build real world web applications› Web Deployment Projects

used to control the building of web applications for testing and production

› Web and load testing used to verify the functionality and

performance of Web applications

Page 26: Advanced ASP .NET

Links and References Web Deployment Projects add-in http://msdn2.microsoft.com/en-us/

asp.net/aa336619.aspx Using Web Deployment Projects with Visual Studio 2005

http://msdn2.microsoft.com/en-us/library/aa479568.aspx Web Deployment Project Enhancement http://

waynebrantley.com/blogs/aspnetbytes/archive/2006/02/08/5.aspx#11 Fiddler, http://www.fiddler2.com/fiddler2/ The Science of Web Site Load Testing http://www.cmgitalia.it/

download/seminario_marzo_2004/scienze_web_site_load_testing_savoia.pdf Web Test Authoring and Debugging Techniques http://

msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/WTAuthDebug.asp

Extending Load Testing Browser Support http://blog.accentient.com/PermaLink,guid,af0c2904-bc81-49f0-8156-832c09e99527.aspx