Efficient and effective software testing with Python.

With some distractions, opinions, rantings, and such.

If you are a software developer or software tester, I’m trying to write content that will save you time.

If you find my writing useful, tell me about it.


I’ve been using Python for testing software and hardware for at least the last 10 years.
I’ve been a professional developer for almost two decades. I’ve used many styles of software development and software testing strategies.

I’m trying to write down the best of what I’ve learned that relates to software testing, software development, and Python.

For me, testing is an integral part of developing great software.

A great place to start is the start here page.

If you like what you see, please sign up for my email updates.
It gives me a good feeling when the numbers go up, and encourages me to keep writing.
I make sure to at least email the people on my list when I’ve got new content. I limit emails to once a week or less. I also try to mention new content on twitter, G+, and FB. I don’t really use those services much though. However, I always read @brianokken tweets, so that’s a great way to ask a question if you don’t want to email.

Opinions and such

The opinions expressed on this site are entirely my own. I don’t speak for my employer, or anyone else.
The experiences I’ve had through my work life have, of course, affected my opinions.
However, writings here do not reflect what happens where I work.
I’ve worked on many, many projects.
But I’ve only been in my current position a few years.

You’re not going to agree with all of my opinions.
But I hope that in the process of sharing what I’ve learned, I can save you time.

Who is this guy anyway?

Brian Okken.
I’m a lead software engineer. That means I spend 70% of my time programming and about 30% of my time doing team lead stuff. At least, that’s the idea.

I received my MSCS from the University of Oregon in ’96. Go Ducks!

Since then I’ve been developing software in the Test and Measurement industry.
I’ve worked with lots and lots of EEs and learned a thing or two about measurement instruments, and many types of measurements. I’ve worked on oscilloscopes, spectrum analyzers, communication test systems, and test systems with 1 to 5 racks of instruments.

I’ve also learned quite a bit about software design and pragmatic testing. Almost all of the commercial software I’ve written has been in C++.

So why on earth am I writing primarily about Python testing?

Test instruments have remote interfaces.
In controller environments, including production lines for almost every electronic do-hicky that you own, the instruments are controlled remotely.
The remote interface has a published interface specification. And often some unpublished extensions.

We can use whatever language we want to communicate with an instrument.

I choose Python.

For the past 10-ish years, I’ve been on projects that have used Python to test the functionality of an instrument though it’s remote API. Usually SCPI. Usually over LAN.

This emphasis on proving and testing functionality through the same interface that our customers use has colored my opinion about testing.

Your published API will be thoroughly tested.

It’s up to you whether you want it to be tested by you first, or your customers.

On QA groups

I’ve worked on projects with a dedicated software QA team. I’ve worked on projects that utilize the development team as QA.

In both instances, I feel it is the development teams responsibility to make sure the functional API to whatever thing they are delivering works.

QA folks are great. But don’t let the fact that you have some working with you let you get lazy.

The development team needs tests in place to make sure both new and old functionality works correctly, and that old bugs don’t come back.

This is important even if you have a QA team also looking at it.

If you can share tests between QA and development, all the better.


Most posts allow comments.

Post whatever you like. I won’t edit content or attribution of any comment. However, I’ll delete comments that are inappropriate or overly rude.

You don’t have to agree with me. But don’t be a jerk about it. If something is deleted, it’s because it’s off-topic, adds no value, or involves a personal attack.

Technology for this site.

I use WordPress. Many Python enthusiasts will be disappointed in me for that. Get over it.