How to run your Web Performance Tests from TFS’ Build Server

April 13, 2014 Leave a comment

You must make a couple of changes to the build configuration (Process tab, 2. Basic section, Automated Tests area):

1) Click the ellipses on the ‘1. Test Assembly’ line and change Test runner from Visual Studio Test Runner to MSTest.exe Runner

2) Change ‘Test Assembly Filespec’ to “**\*.webtest”

Thanks to Gian Maria Ricci for the tips here:

http://www.codewrecks.com/blog/index.php/2013/08/16/build-deploy-web-performance-test-with-tfs-build

Categories: Testing, TFS, Visual Studio

Training videos and articles on Microsoft web development

December 12, 2013 Leave a comment

Entity Framework with Stored Procedures?

November 18, 2013 Leave a comment

I found this study/quote interesting:

“We’ve carefully evaluated whether object-relational mapping (ORM) tools such as the Entity Framework could help us achieve simpler and more testable code without moving away from stored procedures. Our conclusion was that the Entity Framework is an extremely appealing solution, but it relies heavily on being able to compose and execute complex SQL statements at run time. It can map stored procedures, but when limited to mapping only stored procedures, it loses most of its benefits. For that reason, we decided to implement our own database-access framework as an adaptive database access layer.”

From the article:

Adaptive Access Layers + Dependency Injection = Productivity

Programmers: What’s on your bookshelf?

February 23, 2013 Leave a comment

Here are programming books I really recommend. Most of these are technology agnostic and have value regardless of what language and technology you use:

1. Practice

If I had to pick one book that defines the practice of programming it would be Code Complete. It’s approaching 18 years in publication now but still has timeless advice (A second edition was published on the 10 year anniversary). For example, there’s a great section on Formal Code Inspections, something I believe should be utilized for all critical sections of code at least.

Code Complete: A Practical Handbook of Software Construction, 2nd edition
by Steve McConnell

http://cc2e.com/

2. Standards

This book discusses how to build your own framework, but I would say the advice applies to any object-oriented (or object-based) system design. It’s really easy to read, and I highly recommend it for everyone, particularly .NET developers. For example, how do you handle errors? Do you return error codes or raise exceptions? It’s in here. You’ll also gain insight into why certain decisions were made when designing the .NET Framework itself. It too is in its second edition.

Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition)
by Krzysztof Cwalina and Brad Abrams

3. Architecture & Design

This is known as the book by the ‘gang of four’. It’s a big hit and everyone should read it and become familiar with these patterns. I bet you’re probably using the patterns even if you don’t know them by name – good to learn the lingo so you can communicate with team members. There’s also another book that covers the same patterns with a bit more color – I’ve used that one to drive study groups – I’ll list it below as an alternate.

Design Patterns: Elements of Reusable Object-Oriented Software
by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Head First Design Patterns
by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson

Domain-Driven Design: Tackling Complexity in the Heart of Software
by Eric Evans

And a few architecture books:

Patterns of Enterprise Application Architecture
by Martin Fowler

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
by Gregor Hohpe, Bobby Woolf

4. Algorithms

I got to tell you, I’m always on the lookout for good algorithm books, not the college level kind that someone new to programming finds daunting, but something that can explain in simple terms and illustrations, the problem space, solution, AND practical application. I can recommend the one I started with, many moons ago: Ready-to-Run Visual Basic Algorithms. Don’t let the VB name fool you. It covers all the basics from trees to hashing to Recursive Sierpinski Curves. I think the book’s now out of print. If you code gurus recommend something current, hit me up!

Ready-to-Run Visual Basic Algorithms, Second Edition

by Rod Stephens

5. TDD

If I remember correctly you won’t find this topic in Code Complete, so another resource is needed. I’ve led a study group, chapter by chapter through Roy’s The Art of Unit Testing. More and more resources are appearing as this topic gains momentum.

The Art of Unit Testing, with examples in .NET
by Roy Osherove

http://artofunittesting.com/

6. Agile

Well I’ll list the one I’ve read which introduced me to a bunch of concepts and processes around agile software development. Of course there’s also a very popular book by Martin Fowler on refactoring. I must admit, I’ve never read it cover to cover, but I’ll include it based on its fame (watch for ‘bad smells’ in your code!).

Agile Software Development: The Cooperative Game (2nd Edition)
by Alistair Cockburn

Refactoring: Improving the Design of Existing Code
by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts

See also this list of the top Agile books.

7. Database

Microsoft SQL Server ?2008 Internals
by Kalen Delaney, Paul S. Randal, Kimberly L. Tripp, Conor Cunningham, Adam Machanic

How about you? What do you recommend?

-Krip

IoC / DI Resources

December 20, 2012 Leave a comment

Some resources if you’re after a refresher on Inversion of Control / Dependency Injection:

Categories: Programming

Firing up your code!

October 1, 2012 Leave a comment

Put some fire in your code. Just how do you go about lighting it up?

F = Fast Keep performance in mind. Don’t wait until the end of the project for full QA/performance test cycles for that aha moment. Think about performance from the get go. It will save work on rearchitecture later. Load up your system with data – factors more than you anticipate. Keep your code as lean as possible: less is more!

I = Intuitive From the structure of your code to the layout of your user interface, stick with the patterns that are tried, true and familiar. Someone should look at your code and just get it; same with the screens.

R = Remember basic principles In days gone by we’d call them Cohesion and Coupling. Those very basic principles still hold. Today we call cohesion ‘Single Responsibility’. Everything should do one thing only, from a method, to a class, to an assembly. Keep internal workings internal and expose what makes sense.

E = Extensible Build for today but plan for tomorrow. Plug in hooks to extend or even replace implementations as appropriate. Think about what’s likely to change given the history of the business / existing systems. As an example, to do proper unit testing, you’ll need to ‘swap out implementation’ and Interfaces is a great way to make this possible.

Categories: Programming

Know the cost of SQL Server 2012’s AlwaysOn Availability Groups

May 30, 2012 Leave a comment

SQL Server 2012 takes Database Mirroring to the next level. Many of us have used SQL Server 2008’s Database Mirroring as part of a disaster recovery (DR) solution. And it’s serves well in that capacity (unless you try and use synchronous mirroring on a high usage DB across to another data center – trust me, don’t do that!).

Some of the great improvements with the touted replacement to Database Mirroring:

  • Can have up to 4 replicas (not just one)
  • Can failover multiple databases as a unit (not just one)
  • Can read from the replicas

However, don’t just blindly go in for this model without counting the cost. There are some requirements for this new technology that impact your licensing cost, and possibly administration cost. Here they are:

1) The feature requires Windows failover clustering – this means you’ll need the Enterprise edition or higher of Windows Server. A Windows cluster requires a minimum of two servers, and since your replica must be on a separate cluster, you’re talking 4 servers, at least. NOTE that there is no requirement to install SQL Server as a clustered application.

2) The feature requires SQL Server Enterprise Edition. See this article for a comparison of the various editions: http://www.microsoft.com/sqlserver/en/us/future-editions/sql2012-editions.aspx

Now the question arises: Is Database Mirroring still available as an option in SQL Server 2012? The answer is yes. But beware that AlwaysOn is the replacement and Database Mirroring will likely disappear in the next release. This is explained in the AlwaysOn FAQ here: http://msdn.microsoft.com/en-us/sqlserver/gg508768#OtherEnhancements

My suggestion is to give careful thought to your DR design BEFORE you make firm decisions on your hardware and software editions. You don’t want to be painted into a corner with Standard edition if you could really benefit from features like this which requires Enterprise Edition, and of course on the flip side if Database Mirroring is sufficient for your needs, then you might be just fine with Standard Edition.

Reference for this post:

Introducing SQL Server 2012’s AlwaysOn Availability Groups SQL Server Magazine, January 2012

http://www.sqlmag.com/article/sqlserverdenali/sql-server-2012-configure-alwayson-141127

Follow

Get every new post delivered to your Inbox.