As a software developer, I try to develop software that is user-friendly, cutting edge, and error/bug free. While all three are attainable goals, usually the first two are the easiest to achieve. No many how much time I spend testing my software, it usually ends up in the clients hands in a less than perfect state. I guess I can console myself with the fact that large corpoations with many more testers and dollars spent in the testing phase then I have available deliver sotfware that is still full of bugs. But somehow that reasoning does not go over well with my frustrated clients.
Over the years, I have come to the following conclusions. As softare becomes more complicated and pushes the edges of technology, bugs and errors are an inevitable part of programming. Even if I could, would it be economcially feasible to produce software that has zero bugs and errors? Probably not. Does that mean that I should be satisfied with releasing software that is imperfect? Of course not. It just means that I need to realize that my staff is the first line of testers and the customer in the form of alpha and beta testers is the second line of defense.
Unfortunately, my customers, while a necessary part of the testing process, are also often times more of a hindrance in the testing process instead of a help. While internal testers are diligent in tracking errors and noting the circumstances in which they occur, external testers often forget to write down errors until later. They forget or scramble up the error message received, or forget the circumstance in which the error occured. would it not be not very helpful for debugging purposes to know exactly where the bug or error occured in the code, the state of variables at the time, and then have the user make a detailed record of this infromation. While that may seem like wishful thinking, it can be a reality thanks to a product from Redgate called SmartAssembly and its Automated Error Reporting feature.
This product which works with the latest version of .net actually provdes three very valuable features, code obfuscation, feature usage reporting and automated error reporting (AER). Of the three, my personal favorite is automated error reporting, but hey I also like the feature usage reporting. With the help of AER, my clients now have the ability to become better testers. And the reporting of bugs and errors is now accurate and filled with detailed information that makes it easy to quickly find and fix the errors. And all the client has to do is click a button. If while executing your application, the user receives an exception, they press a button to send error reporting information. In turn, an error report arrives a web service which is then stored in SQL Server. The developer uses SmartAssembly to read the reports, they fix the bug and release a new version. On the part of the client, AER is as easy to use as 1-2-3.
Setting up AER by the developer is also as easy as 1-2-3. The developer creates a new project in Smart Assembly and adds the main assembly of their application to the project. SmartAssembly is great for the client to use not only during beta testing but for a couple of months after the final release of the application. The overhead of SmartAssembly is minimal and will not have adverse affects on the application.
The latest version of SmartAssembly is 6.1. The AER works well with Silverlight 4 apps, Windows Phone 7 apps, and WPF assemblies. If you have ever released software to clients and then have been bombarded by those same clients with phone calls and emails, you will appreciate the error reporting features of SmartAssembly. It will very quickly pay for itself in hours saved trying to find bugs with the little information usually provided by clients.
I will be blogging more about AER as I prepare my latest project for alpha testing over the next couple of months.
I am not an employee of Redgate nor do I benefit financially in any way from blogging about their product. I am a developer who is constantly looking for new ways to more effectively and efficiently spend my time developing software for clients.
Check out SmartAssembly at http://www.redgate.com.