-
An Introduction to Distributed Tracing with OpenTelemetry in .NET 7
Last updated: Thursday, December 8, 2022
Published in: CODE Magazine: 2023 - January/February
OpenTelemetry is an open-source distributed tracing framework. Companies that use it can make more informed decisions about their operations. Learn to use it through an example ASP.NET 7 project.
-
Test Your REST APIs Using Insomnia REST Client
Last updated: Wednesday, May 24, 2023
Published in: CODE Magazine: 2021 - July/August
APIs are everywhere! Joydip shows you how to take advantage of them using a new, free, cross-platform desktop framework, Insomnia, with its user-friendly interface and sophisticated features.
-
Interactive Unit Testing with .NET Core and VS Code
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2020 - September/October
John continues exploring unit testing using .NET Core 3 in VS Code, and steps to get ready for .NET 5 and VS Code.
-
10 Reasons Why Unit Testing Matters
Last updated: Thursday, April 8, 2021
Published in: CODE Magazine: 2019 - January/February
If you’ve ever argued with management about how unit testing is beneficial, speeds up the process in the long run, and makes the software work better, you’ll recognize John’s point of view. If you haven’t (yet) had the argument, you’ll want to have this article handy.
-
A Professional-Grade Configuration for Azure DevOps Services: Beyond the Quickstarts
Last updated: Wednesday, April 7, 2021
Published in: CODE Magazine: 2019 - January/February
Jeffrey shows you how to organize your code to suit DevOps, configure the five Azure DevOps products, automate your pipeline for speed, and build quality into each stage of your process.
-
Part 3: Merrily We Roll Along
Last updated: Thursday, December 16, 2021
Published in: CODE Magazine: 2019 - January/February
Rod continues the tale of an enormous conversion project.
-
Software Archaeology
Last updated: Tuesday, May 11, 2021
Published in: CODE Magazine: 2017 - November/December
If you’ve ever had to step through legacy code—even your own—you understand what a mystery some of it can be. Chris provides some tips and tricks for figuring it out.
-
Improving Code Quality with Unit Tests
Last updated: Thursday, May 13, 2021
Published in: CODE Magazine: 2017 - September/October
Insufficient testing can lead to devastating results. Find out what you can do to minimize outages as Keith explores unit testing using a Python tool called Coverage.py.
-
Beta Test Your iOS Applications Using TestFlight
Last updated: Friday, May 21, 2021
Published in: CODE Magazine: 2017 - May/June
Jason explores TestFlight, a new tool for testing your iOS apps. It has some nifty notification tools, which makes it easier to have a lot of testers—or just a few, depending on what your product needs. Check out what else it has going for it.
-
What’s New in Visual Studio 2017
Last updated: Wednesday, May 19, 2021
Published in: CODE Magazine: 2017 - May/June
It’s so new that the dust is still settling, and VS2017 was worth the wait. Markus explores the ins and outs of his favorite new features.
-
How to Know Your Team is Productive and Delivering Quality
Last updated: Tuesday, May 25, 2021
Published in: CODE Magazine: 2017 - March/April
Jeffrey takes a look at the state of the industry and comes up with some interesting ways to measure efficiency and accuracy.
-
Improve Code Quality Using Test Coverage
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2017 - January/February
Every system needs to be tested before being set loose on an unsuspecting public. Keith uses Coverage.py to figure out how much information about code is enough, and what kinds of statistics and measurements can make you confident that your work will endure whatever a user throws at it.
-
From MSTest to xUnit, Visual Studio, MSBuild, and TFS Integration
Last updated: Monday, June 28, 2021
Published in: CODE Magazine: 2016 - January/February
Punit explores the necessary detail of testing and a useful collection of tools that you can employ. His advice ensures not only that your code runs as designed, but that the testing process is as painless as possible.
-
JSLint, AngualrJS, and TDD
Last updated: Friday, June 25, 2021
Published in: CODE Magazine: 2016 - January/February
Sahil explores the three cardinal rules of working on any JavaScript project and introduces some cool new tools.
-
Asynchronous, Test-Driven Development, with JavaScript and Mocha
Last updated: Friday, May 20, 2022
Published in: CODE Magazine: 2013 - July/August
Although I’m now a huge advocate of test-driven-development, I was not an immediate convert to the school of thought. I understood the necessity of unit testing:
-
CODE Framework: Testing
Last updated: Tuesday, February 19, 2019
Published in: VFP Conversion Papers, CODE Magazine: 2012 - September/October
The CODE Framework provides a set of tools for developing n-tier, service-oriented applications. In addition, there is a set of recommended patterns and practices that provide guidance in enabling developers to achieve Rapid Application Development, Contract-First implementation, and a system that allows you to change a contract without breaking an implementation. However, one question which has been repeatedly asked throughout our trainings and seminars is, “How do I Unit Test when I’m using the CODE Framework?” This article will examine the question and attempt to answer it.
-
Behavior-Driven Development Using SpecFlow
Last updated: Wednesday, February 20, 2019
Published in: CODE Magazine: 2012 - July/August
As software development becomes complicated, writing unit tests provides a protection against constant changes and modifications. Traditionally, unit tests were written by testing each piece of the application layer in isolation. With the advent of behavior-driven development, now our unit tests can be composed into user defined stories. Each story represents a single feature of the application which can be tested from end to end. This method makes sure that the unit test only passes when the story is completely done. In this article I’ll show you how to use SpecFlow and WatiN to write BDD-style tests to implement user stories.
-
Debugging Hard to Reproduce Issues
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2012 - July/August
Software developers live and breathe debugging. It’s an essential and integral part of our day-to-day job. Whenever we are confronted with any bug in code, our typical first question is, “How can I reproduce this issue?” Any problems that cannot be reproduced are generally considered tricky to resolve. In order to really understand the challenges with debugging hard to reproduce issues, let’s walk through a few scenarios here.
-
Windows Phone 7 Development Using MVVM and Unit Testing
Last updated: Thursday, February 21, 2019
Published in: CODE Magazine: 2012 - January/February
As readers of this magazine, you are all experts at certain facets of software development, be it for the desktop, the web, SQL Server and now mobile platforms. Mobile programming was a fairly arcane development arena up until the recent announcement of Windows Phone 7 (WP7). Prior to WP7, you had to become intimately familiar with the myriad platforms and form factors available and write your programs to each of those phones. With the advent of WP7, Microsoft is now controlling the hardware capabilities of the phone making it much easier to develop for these platforms. You can now also leverage existing skills in Silverlight and XNA to write your apps. But the question always remains: how do I get started and what is the best way to write for the new WP7? In a previous article, <i>CODE Magazine </i>Jan/Feb 2011, I showed you what to do to get started; now I want to show you the best way to apply what you have learned in that article. I will use Silverlight, the Model-View-ViewModel (MVVM) pattern, and Silverlight Unit testing to build a sample app.
-
Post Mortem: Developing the OSS Project AutoMapper
Last updated: Wednesday, February 20, 2019
Published in: CODE Magazine: 2011 - May/June
Jimmy explores what went right and what went wrong with version 1.0 of AutoMapper.
-
Anti-Patterns: TED (Test-Eventually Development)
Last updated: Tuesday, February 19, 2019
Published in: CODE Magazine: 2011 - January/February
Software developers are good at writing applications. Testers are good at testing applications. In the software development world where separation of concerns is a never-ending quest, it seems logical to apply the rule to the software development cycle. “Let the developers code; QA can be responsible for making sure it works.” It provides an object-oriented management approach where each team is responsible only for what they are best at, and the two teams interface through one simple property, each: the result of their logic and expertise. The system is of logical design. It appears to be a logical pattern. Or so it seems.
-
Unit Testing CLR Assemblies Using IronRuby
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2010 - November/December
For a very long time, .NET developers have envied the simplicity and the beauty of the Ruby language. The dynamic behavior, duck typing and compact code are some of the main features of the Ruby language. Now, .NET developers can enjoy the same benefits using the IronRuby framework. This article explores the possibilities of using IronRuby in the CLR world. The main focus will revolve around the sphere of unit testing CLR assemblies using the IronRuby framework.
-
Building .NET Systems with Ruby, Rake and Albacore
Last updated: Wednesday, February 20, 2019
Published in: CODE Magazine: 2010 - May/June
Automated build tools have been around for a long time.Many of the early tools were simple batch scripts that made calls out to other command-line tools like compilers and linkers. As the need for more and more complexity in the build scripts was realized, specialized tools like Make were introduced. These tools offered more than just sequential processing of commands. They provided some logic and decision making as well as coordination of the various parts of the build process. Since Make was first introduced, many variations and specialized versions have been introduced for various languages and platforms. Rake - the “Ruby Make” system - may not have much more than its namesake to claim a connection to Make, but it is a build tool that is quickly growing in popularity and providing .NET developers with new options.
-
Ensuring Quality Code
Last updated: Tuesday, February 19, 2019
Published in: CODE Magazine: 2010 - March/April
Every developer needs to test their code, or have it tested by someone.I don’t know about you, but I am horrible at testing my own code. Does this mean that I do not need to test my code? Heck, no! It is always best if you do not rely on your end user to test your code. This can end up with a very frustrated user, and your user can lose faith in your ability to get their project done.
-
Introducing Advanced Code Contracts with the Entity Framework and Pex
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2010 - January/February
Martin introduces Design by Contract and Code Contracts, and gives you a sneak preview of Pex—Microsoft’s new test-suite generator. Along the way, he will show you how to add contracts to ADO.NET entities and some interesting coding strategies, good practices, and pitfalls you may encounter while making a deal with your code.With Code Contracts, Microsoft delivers its own flavor of Design by Contract for the .NET Framework. But wait, what is this thing sometimes called Contract-First Development? How will it change the way you develop software and write your unit tests? And first and foremost, how do you use Code Contracts efficiently?In this article, I will introduce Design by Contract and Code Contracts, as well as give you a sneak preview of Pex-Microsoft’s new test-suite generator. Along the way, I will show you how to add contracts to ADO.NET entities and some interesting coding strategies, good practices, and pitfalls you may encounter while making a deal with your code.
-
S.O.L.I.D. Software Development, One Step at a Time
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2010 - January/February
Derick outlines how to achieve the benefits of low coupling, high cohesion, and strong encapsulation. He also shows how the five S.O.L.I.D. design principles can get you there.Most professional software developers understand the academic definitions of coupling, cohesion, and encapsulation.However, many developers do not understand how to achieve the benefits of low coupling, high cohesion and strong encapsulation, as outlined in this article. Fortunately, others have created stepping stones that lead to these goals, resulting in software that is easier to read, easier to understand and easier to change. In this article series, I will define three of the primary object-oriented principles and show how to reach them through the five S.O.L.I.D. design principles.
-
Hudson Continuous Integration Server
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2009 - May/June
Hudson makes continuous integration easy and powerful.Though Hudson is a Java project, it can easily build your .NET applications. You configure Hudson easily via the web interface rather than tweaking XML. With plenty of plugins available to .NET projects, Hudson provides plenty of powerful features.
-
Isolating Dependencies in Tests Using Mocks and Stubs
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2009 - May/June
Unit tests are not “unit” tests if they test things other than the System Under Test (SUT).In order to test a SUT (the class to be tested), a developer must make sure that the class’s dependencies won’t interfere with its unit tests. Enter mocks and stubs.
-
Speed Up Project Delivery with Repeatability
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2008 - November/December
Automate high-friction, unpredictable tasks in your environment to regain sanity and achieve a rapid, sustainable pace.Every environment has them: The dreaded manual tasks that drain productivity from the team and adds instability to the processes. We usually only dedicate half our brain power and never enough time to deal with them, which only compounds the problem. What if you could easily automate out the most painful tasks and gain a huge boost in productivity and speed of delivery?
-
Behavior-Driven Development
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2008 - May/June
Extreme Programming and Scrum compliment each other, but they weren’t made from the start to fit together hand in glove.Practicing Extreme Programming and Scrum are more effective when practiced together, and even more effective when practiced together as Behavior-Driven Development.
-
Heard on .NET Rocks! Andy Leonard on Unit Testing Your Database
Last updated: Wednesday, February 20, 2019
Published in: CODE Magazine: 2008 - May/June
May/June 2008 .NET Rocks! column
-
Introduction to Scrum
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2008 - May/June
Scrum is an agile software development process to manage software projects. Scrum is based on three simple principles: visible progress, constant inspection, and adaptation. With Scrum, teams use an empirical approach to adapt to changing requirements and priorities. Teams using Scrum focus on delivering working software to their customers on a frequent basis.
-
Ask the Doc Detective
Last updated: Thursday, February 21, 2019
Published in: CODE Magazine: 2007 - November/December
Nov/Dec 2007 Doc Detective Column
-
Layered Architecture, Dependency Injection, and Dependency Inversion
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2007 - May/June
Building loosely coupled application architectures requires more than just separating your application into different layers.In this article, I’ll take a project that was built using techniques that result in fragile, hard-to-test code and introduce some principles, techniques, and refactorings that will help you realize flexibility and testability in your applications.
-
Purporting the Potence of Process
Last updated: Tuesday, February 19, 2019
Published in: CODE Magazine: 2007 - March/April
Do you ever feel like you’re beating your head against a wall? I know I do; quite often, in fact. It seems like developers spend half of their time bending technology to their purposes when the technology doesn’t really quite fit. Well, I’m actually thinking of one problem in particular right now, namely that of validation. Can you think of a more boring topic? There are few, but I think you can agree that it is an extremely important one in business software.
-
Advanced .NET Debugging
Last updated: Saturday, January 18, 2020
Published in: Book Excerpts
Mario Hewardt takes a look at the internals of the CLR heap manager and the GC and some common pitfalls that can wreak havoc in your application.He shows how to utilize the debuggers and a set of other tools to illustrate how to get to the bottom of the problems.
-
Building Windows 8 Apps with C# and XAML - Introduction to UI Design Patterns for Windows 8 Apps Chapter Excerpt
Last updated: Wednesday, February 20, 2019
Published in: Book Excerpts
In this excerpt from Building Windows 8 Apps with C# and XAML, learn about the various parts of MVVM and how to apply it with a special focus on testing. By Jeremy Likness, Published Oct 25, 2012 by Addison-Wesley Professional. Part of theMicrosoft Windows Development Series series. Copyright 2013 ISBN-10: 0-321-82216-1 ISBN-13: 978-0-321-82216-1. To Purchase go to: http://www.informit.com/store/building-windows-8-apps-with-c-sharp-and-xaml-9780321822161?w_ptgrevartcl=%20Introduction%20to%20UI%20Design%20Patterns%20for%20Windows%208%20Apps%20_1960915.
-
Chapter 2: The Case for Manual Testing
Last updated: Saturday, January 18, 2020
Published in: Book Excerpts
The origin of software bugs begins with the very origin of software development itself. It’s clearly not the case that we started out with perfect software and invented ways to screw it up.(1) Indeed, the term bug has been in common use within software development from the inception of the discipline(2) and is a nomenclature that is used today in every office, garage, dorm room, data center, laboratory, bedroom, cafe, and every other place where software is developed. The first software had bugs, the latest software has bugs, and so have all the bits and bytes in between. Software is not, and likely never will be, bug free.
-
Chapter 3 - Planning Your Testing
Last updated: Wednesday, August 31, 2022
Published in: Book Excerpts
-
Reengineering .NET: Injecting Quality, Testability, and Architecture into Existing Systems - Chapter 3: Unit Testing
Last updated: Saturday, February 23, 2019
Published in: Book Excerpts
This excerpt is from Reengineering .NET: Injecting Quality, Testability, and Architecture into Existing Systems, by Bradley Irby, Published Oct 24, 2012 by Addison-Wesley Professional. Part of the Microsoft Windows Development Series series. Copyright 2013, ISBN-10: 0-321-82145-9. To Purchase this book go to: http://www.informit.com/store/reengineering-.net-injecting-quality-testability-and-9780321821454 .
-
Why Automated Software Testing Fails and Pitfalls to Avoid
Last updated: Friday, February 22, 2019
Published in: Book Excerpts
“This excerpt is a sample chapter from the book, Implementing Automated Software Testing: How to Save Time and Lower Costs While Raising Quality, authored by Elfriede Dustin, Thom Garrett, and Bernie Gauf, published by Addison-Wesley Professional, March 2009, ISBN 0321580516, Copyright 2009 Pearson Education, Inc. For more info, please visit http://www.informit.com/store/product.aspx?isbn=0321580516 and Safari Books Online subscribers can access the book here: http://my.safaribooksonline.com/9780321619600
-
Compilation and Deployment in ASP.NET 2.0
Last updated: Tuesday, February 19, 2019
Published in: CODE Magazine: 2006 - September/October
It’s crucial to understand how your ASP.NET code compiles in order to debug your Web applications effectively. ASP.NET 2.0 has changed the way compilation and deployment works, and in this article I’ll dig in and show you how compilation works now and what has changed from ASP.NET 1.x.
-
.Finalize(): Try and Ye Shall Succeed
Last updated: Wednesday, February 20, 2019
Published in: CODE Magazine: 2006 - May/June
May/June 06 Finalize Column
-
eXtreme .NET
Last updated: Tuesday, February 19, 2019
Published in: CODE Magazine: 2005 - May/June
Learn how to use XP (eXtreme Programming) techniques to improve the way you deliver softwareIn my book, "eXtreme .NET," I introduce a team of developers who are learning how to improve their ability to deliver great software. In this article, you'll follow this team as they learn about a new tool to help them develop software solutions using the .NET Framework. The tool they are going to explore is called Cruise Control and it helps the team continuously integrate their code.
-
Unit Testing in .NET
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2004 - November/December
You have been given the task of creating some business objects for a new .NET project.The UI has not been created (or designed) yet, so you start coding right away. After creating the first few objects, you decide that maybe you should do some unit testing. How?
-
Unit Testing Overview
Last updated: Wednesday, August 31, 2022
Published in: CODE Magazine: 2004 - November/December
Utilize unit testing in your Visual Studio .NET development. Automated unit testing enables a team to exercise its entire code base against a battery of tests. This facilitates a quick, reactive environment by providing instant feedback during development. Changes to the code will be tested for validity and any errors will become apparent. Your code will become simpler and you will have great example documentation for using your code.
-
Instrumenting Applications with .NET Tracing
Last updated: Tuesday, February 19, 2019
Published in: CODE Magazine: 2004 - September/October
Application instrumentation gives you the ability to perform runtime diagnosis of enterprise application state, which is critical to mission success.To help with instrumentation and logging, .NET ships with tracing types in the System.Diagnostics namespace. Using these types, you have the ability to log information to multiple output streams for diagnosis of application runtime behavior. Information produced by instrumentation and tracing types enable you to examine the runtime state of an application and fix problems that would be otherwise expensive and painful to solve.
-
The Enterprise Instrumentation Framework
Last updated: Tuesday, February 19, 2019
Published in: CODE Magazine: 2003 - November/December
We've all faced those irritable questions about our applications running in production. Typically a system administrator will spring one on you on a Friday afternoon just when you're finishing out the week with a game of foosball. Why did this request fail? What is causing so many disk IO spikes? What requests are failing as a result of this error? Why is the application running so slowly? Why are all the resources being gobbled up on the Web server? These questions often make us stare blankly for a while, mumble something, and then scramble back to our cave (or server room) for hours on end trying to provide answers,
-
Maximizing Your Testing Results
Last updated: Wednesday, February 23, 2022
Published in: CODE Magazine: 2002 - January/February
Testing computer software is more than just randomly executing portions of the software.Professional-level testing uses industry-accepted practices to write tests that are the most likely to find bugs. This article will examine how to use a combination of several common testing methods to maximize the results of the time you spend on testing.
-
Introduction to Gathering Requirements and Creating Use Cases
Last updated: Thursday, December 9, 2021
Published in: CODE Magazine: 2001 - Issue 2
Studies indicate that between 40% and 60% of all defects found in software projects can be traced back to errors made while gathering requirements.This is huge! Finding problems while they are just in the planning stages is MUCH easier to deal with than finding them after the code has been written. So, how can developers avoid these errors and create a solid design for their software? This article will describe various methods for gathering software requirements and writing Use Cases - the first two steps in the software development process.
-
Load Testing Web Applications using Microsoft's Web Application Stress Tool
Last updated: Thursday, December 9, 2021
Published in: CODE Magazine: 2000 - Spring
Microsoft's Web Application Stress Tool provides an easy way to simulate large numbers of users against your Web application.This tool makes it possible to make intelligent decisions about hardware and software load incurred by your application and how much traffic a given machine or group of machines can handle. In this article Rick shows how the tool works and how to properly interpret the performance data it generates.
-
6 Tips for Assigning Tasks That Your Testers Will Actually Complete
Last updated: Thursday, February 21, 2019
Published in: Newsletters
One of the most effective ways to obtain feedback from beta testers is to ask them for it in the form of tasks. A task is a specific activity you can assign to your beta testers that they can perform and report back to you on. You can request testers do everything from installing the product, to updating to a newer version of your software, to requesting feedback on a specific product feature/bug.
-
Converting Your Beta Testers into Brand Evangelists
Last updated: Thursday, February 21, 2019
Published in: Newsletters
Brand evangelists can be a powerful force for your product. A brand evangelist is a customer who’s not only a big fan of you and the products you sell, but often makes it their mission to refer or recommend your products to everyone around them.
-
Validating Your Beta Testers by Closing the Feedback Loop
Last updated: Saturday, February 23, 2019
Published in: Newsletters
You rely on your testers to give you relevant, high-quality feedback about your product. This requires fostering a relationship with them so they feel that they’re being heard and valued.