Overview of Ivonna  

Thursday, February 28, 2008 10:31:04 AM

Many developers recently discovered that the Test Driven Development (TDD) process improves the development process significantly. While testability is relatively easy in the desktop world, Web applications are not so easily tested. One of the problems is that a Web application runs in a different process, making it impossible to communicate with the test code. As a result, what we are testing is a raw Html output, rather than the application's internals. Another problem is that it is very difficult to put a Web application into a special environment that is more suitable for testing. For example, we cannot check the behaviour of the system when a database is unavailable, unless we manually stop the server.

Several Asp.Net frameworks exist, but they are either parsing the Html output and recreating the structure of the page (NUnitAsp), or test the client-side functionality (Selenium and WatiN). Another framework, Plazma, hosts the Asp.Net engine so that it is executed in the test runner process; however, due to the engine's inherent untestability we are still unable to test, let alone mock, the page's intrinsics. As a result, we can write integration, but not unit, tests. For example, to verify that a certain label displays the user's name, we have to add a user to our database, navigate to the login page, enter the user's credentials, navigate to the page being tested, parse the output in order to find a span with a certain ID, and check the span's inner text. Oh, and don't forget to delete the user at the end of the test.

With Ivonna, it is different. You are programming in a way similar to desktop testing. You setup your mocks, in this case, mock the Membership service, then you request a page (you have a "real" instance of the Page class, not the raw Html), find the label you need and check its Text property. But there's more: you can run asserts not only against the response, but also during the page's lifecycle. For example, you can add a Page_Init handler and verify the label's initial value or visibility. You can also run tests against concrete page classes (for example, if you want to test a page-specific method) or App_Code classes. Just step into the request like described above, and run your test.

Note that Ivonna doesn't require a Web server.

Copyright 2008 by me

re: Overview of Ivonna

Friday, May 23, 2008 6:32:08 AM Artem

There's no time frame, not even a complete feature list.

Regarding the AJAX stuff, I'm not doing it much, except for the basic UpdatePanel controls and maybe some other controls. So, I've got no idea what do you need to test. So, as I'm starting to collect requests for the next version, I wonder if you could post a message to the Feature Requests forum? Preferably a sample test code as you like it to be, or just some setup/assert ideas: givent the (context) if I (do this and that) (something) should be equal/not equal to (what).

Remember that Ivonna is a server-side testing tool, so it can't test your JS scripts.

re: Overview of Ivonna

Thursday, May 22, 2008 10:34:34 PM Bruce

Hi,

If you can get support for AJAX, I'm sure there's a lot of us who will buy the Pro Edition! :)

Is there a timeframe for this?

re: Overview of Ivonna

Wednesday, April 30, 2008 2:04:33 AM unknown

Hi,

Thanks for your comment. AJAX is not implemented yet. This is the first release, and I wanted to implement the most basic features and see how it goes. So, pretty much is left for the future. I guess there will be a Pro edition that would contain more advanced features, such as AJAX, ability to unit test HttpModules and web controls, etc.

re: Overview of Ivonna

Tuesday, April 29, 2008 3:32:03 PM AJAX compat?

Hi,

Congratulations, pretty good approach, I'll keep my eyes on it!

But let me ask sg: What about AJAX?

This stuff could handle asyncpostbacks, XMLHTTPs correctly?

That would be great I think...

 

8 + 7 =  

Site Map | Printable View | © 2008 - 2012 Your Company Name

Powered by mojoPortal | HTML 5 | CSS | Design by styleshout