Marked as Passed

Our development team has delegated the first line of cutomer support to our internal testing team. The test team is to try to replicate problems reported by our customer. This cuts down on developers being distracted from their primary role. It is best if the internal testers can help the customers figure out what's wrong.

Recently the customers reported a very strange behavior in some of our new software. A tester got assigned the task to replicate the problem. This tester could not even get the applicaiton launched. She reached out to a developer for help. The developer produced a recent build for the tester to use. Then tester then was able to launch the app.

This tester proceeded to then try the steps documented by the customer trouble ticket. There was no trouble for the tester when she tried following the steps. She made the conclusion that they developer must have fixed the customer problem. The tester reported that the problem was fixed and verified. Management took this diagnosis as gospel. Promises were made.

Disaster ensued from this mix up. The customer thought they were getting a fix. They received no such correction. Imagine development's surprise when this thing came back to us. Development was sure they never resolved the problem that the customer raised. This was tracked down and the conclusion was that the tester was never able to recreate the problem voiced by the customer. This is much different than testing and passing a fix.

Breaking Tests

I've got a relatively mature set of code that generates unit test data for a complex program we have. This code has been developed over the past 5 to 6 years. It creates about 15 postive test cases for different scenarios in the program. It also can also generate the same amount of negative test cases.

This year we added three more test cases. So the test code was modified to produce three more positive test cases worth of data. Things were looking good. I had a long standing action item to create data for a whole separate path that the program sometimes takes. This resulted in a new slew of tests.

At first I had some trouble generating the test data for the new scenarios. But I dug down and determined what I needed to change to get everything set up. I pretty much based the data creation on the existing routines to produce data for the existing scenarios. I was happy when the task was complete.

I decided to do a round of regression tests to make sure the original test scenarios still worked. Ooops. Looks like I broke half of them. Good thing I have an easy way to run the whole suite of tests for the original scenario. But now I got to big back in to ensure the new and old unit test scenarios are correctly served.

Software Testing Class

I saw a posting for a free Software Testing course by Udacity. It starts up in a few weeks. I am busy this summer trying to relearn the Java programming language. However I always wanted to check out some online learning that does not suck. It seems that online is the future.

This course covers things such as code coverage (no pun intended). It also seems to spend a lot of time on random testing. I just finished up some unit testing. So this topic is very relevant to my job at work. The course is taught by John Regehr and Sean Bennett. To tell the truth, I don't know these guys. But they must be okay if they are approved to teach at Udacity.

I am not exactly sure how Udacity makes money. The courses seem free. Perhaps it is advertising funded? It looks like they don't require you to even buy a book. The whole school seems to be based on the Python programming language, which I have no experience in. I really want to get involved with some online learned that represents the education model to come.

Test Data Generation

We have a big need to generate test data to verify all kinds of functionality in our system. Personally I like to use Oracle PL/SQL to do the job. This is very practical. The data needs to be in our Oracle 11g database. What better way than to use some code compiled into the database?

Now PL/SQL does have some more advanced programming constructs such as collections. However you can't beat high level languages such as C++ or Java to have advanced features. I have been experimenting with writing some utility apps in Java.

The next step will be to start writing some Java apps to generate test data. I know how to use JDBC to do simple database queries and DML. Let's see where this takes me.