I’ve been working in Visual Studio a lot lately, and I’ve found a few handy plugins that are very helpful for effective test writing. A good way to show these off is to follow my process for creating a new class and test via Test Driven Development. My goal here is to improve speed by removing the need for using the mouse (not to mention reduce the risk of repetitive strain injuries).
Here’s the short version:
|Navigate to a file in the test project
|Jump to Solution Explorer
|Create new test file
|Move class under test to matching folder in core project
|Vertical split between test and class
|Move files between split tabs
|Jump between files while editing
|Run the test
Now let’s take a look at the details. Read more on TDD a New Class in NUnit & Visual Studio without Ever Using the Mouse…
Karlin Fox and I have been using RubyMotion and ReactiveCocoa to build an iPad application for our current project. We’ve enjoyed the different paradigm and the way we’re able to stream data through our application. Adapting TouchDB live queries to ReactiveCocoa signals has been particularly rewarding.
But what about unit testing our iOS app? Unit testing in iOS has matured a lot in the past few years, and RubyMotion brings testing along from the start of a new project. However, development paradigms like FRP have a dramatic effect on how we test, what we test, and what tools we choose to build our tests.
Mocking vs. Real Objects
We’ve been alternating between mocking out signals and creating real signals we can instrument in our unit tests. Each method has its advantages.
Read more on Unit Testing with ReactiveCocoa and RubyMotion…
As a summer intern at Atomic Object, I’ve learned a lot about Test-Driven Development (TDD), a practice that Atomic uses heavily. I’d used TDD in one college class, but it wasn’t really explained; we just sort of used it without knowing exactly what was going on.
On my current project, we’ve been using TDD a lot, and learning the process has been difficult. But the more I test code, the more apparent it becomes that TDD is great way to ensure you’re getting the behavior your want from your application.
TDD helps me understand what my code is doing.
One of the things that I noticed about myself before working at Atomic was that I wasn’t always sure what my code was doing. Using TDD gives me a much better insight into how the code works together and enables me to think more clearly about what my code is actually doing.
Read more on A Beginning Developer’s Experience With TDD…
For a recent career fair, our marketing coordinator Lisa Tjapkes produced a hand-out detailing what a marketing career involved. Part of this handout listed 6 skills that a good marketer should have:
- Empathy: Understand your customers; see things from their perspective.
- Strong Writing Skills: Be clear, be concise, be interesting.
- An Analytical Mind: Carefully review results. Find patterns. See what isn’t there.
- Curiosity: Be fascinated by people — how they think, feel, and make decisions.
- Creativity: Find new ways to tall your story and reach your customers.
- Observation: Pay attention; learn from what other people are doing.
It was interesting to compare them to the skills and traits that a good tester should have. Read more on What Does It Take To Work In…?…
“…no one is born a great cook, one learns by doing.”
– Julia Child, My Life in France
Or, to paraphrase the late great Julia — no one is born a great designer, one learns by doing (and testing). Cooks test out their recipes with an audience, and the same principle applies to new products and services. Usability testing is necessary to prove the product viability, alongside making sure that the proposed design will meet (and exceed) the user’s expectations.
Think of usability testing as the test kitchen for successful software design. You put together some great ingredients, follow the necessary steps carefully, and – voila! – a greater design emerges.
Read more on Test(ing) Kitchen: Assembling the Ingredients for Your Next Usability Test…
No, not that Red Green!
Even a thoroughly-tested application can wreck havoc if it hasn’t been tested in the context of a production-like system under production-like conditions.
Tools like Puppet and Chef make it easy to produce a production-like environment for testing, but what about the production-like conditions?
One aspect of these conditions can be approximated with load testing tools like JMeter or The Grinder. I recently used The Grinder to troubleshoot a performance problem with a small web application. Here’s a walkthrough of my process.
Read more on Red Green Performance Testing with The Grinder…
As a designer, I’m a perfectionist. I enjoy solving problems, analyzing human intuition, and testing all the available research tools to turn ideas into something viable and realistically executable.
This heuristic, analytical approach to design was what shifted me from advertising into software in the first place. I enjoyed leading creative teams, driving process innovation, managing campaigns, and sharing with and learning from other designers. But ultimately, I didn’t find designing for advertising rewarding. There was something big missing: the dialogue that occurs when the customer interacts and reacts to the work I put in front of them.
Working in software, I can test my ideas and get honest feedback — on the spot. Nothing gets closer to the truth. The perfectionist inside me isn’t satisfied until I’ve created something that makes an impact, that actually helps a person (even in some minor way).
Read more on Why Usability Testing Matters: A Newbie’s Perspective…
In order to get off the ground quickly, I chose Laurent Bugnion’s MVVM Light framework to build a test project around. MVVM Light provides a nice framework upon which to base a MVVM application, with some handy facilities for messaging and commands.
As I built up my test project, I was quite happy with everything. I had previously started building a test WinForms application which downloaded files over the internet in parallel. I used this same idea to test out WPF. In short order, I had a worker thread system downloading files from different servers. Each thread was updating model properties which fired PropertyChanged events to update a view’s progress bars. All of this worked straight away, without any of the WinForms worries about only triggering updates from the UI thread.
Read more on MVVM Light Messenger Registration Causing Test Failures…
Also posted in Tools Tagged testing