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.

Automation Saves the Day

We have a new developer working on fixing some bugs. She got assigned a tough part of the system. The actual code is not too difficult. The testing is a real chore. The processes need a lot of requirements to be met before any of the data is processed. I have gone through this pain in the past while trying to test out large changes to this subsystem.

Luckily I performed a lot of tests and set up a data generation system. This system creates just the right data to test out all parts of the subsystem. I found this data generation to have come in handy when the test team could not figure out how to test any of this stuff.

The new developer was running a little behind schedule. She was finding, like all would, that it was next to impossible to test anything in this subsystem. I pointed her to the testing data generator and her problems were solved. Now she is teaching some testers how to use this tool to conduct their own test data sets. This tool is going a long way to making peoples' lives easier. Mine included.

Independent Verification

Our project has an independent testing team. Their goal is to verify that our software meets the requirements and has minimal bugs. The lead of this team recently left the company. Her replacement seems like she has management potential.

We just got through a big release of our software. It was to be delivered on a Friday. I was taking it easy that Friday since it had been a long week. Things were supposed to go out easily, with a formality of checking our production install.

One of the testers noticed some errors in the application. It turns out the changes for the release were not in order. The thing that was disturbing was that the software changes had passed test. Now it looked like the pass was achieved in error. Now the delivery was late and we had an emergency on our hands.

They needed some testing to get done. The guy who was supposed to have completed the testing had already left the company. Darn. The existing testers had little clue as to how they might test the system. What did we do? The developers were brought in to rerun the testing. Sounds like a massive fail to me.

Shopping Cart Validation

Recently I had the task to ensure a mock shopping cart app on the web was working correctly. I decided to play with the darn thing to gain insight on all the things I needed to check. At first glance all seemed well. I added items to my cart. The total amount at the bottom seemed to be incrementing correctly. Then I found some disturbing behavior.

When I removed an item from my cart, it did not always accurately decrease my total price. It did work sometimes. But it did not work most of the time. There was also some weird errors when I removed the last item in the cart. I wanted to go further. I wanted to assist the developer in figuring out what was going wrong.

Initially the incorrect total price seemed random. Then I started calculating the amount it would decrement. Although it was not the amount of the item I removed from the cart, it would decrement by the sales price of some other items in the store. I found that the error would be predictable when I removed items from certain positions in my cart list. Those were the details that let the developer hone in on the exact problem. The cart was implemented in JavaScript. Multiple variables were used in the code. However some of them were supposed to be the same variable. The real lesson from this is that a tester can shine some great light into the nature of bugs. This can help get the bugs resolved faster.

TestComplete by Smart Bear Software

Smart Bear Software has announced the newest version of their TestComplete package. This has a number of tools for testing. I think it aims to allow people with limited technical skills to become productive in testing. However there are some hooks in there for advanced users as well.

There is a Test Visualizer that let's you set up tests by clicking around in the user interface. There is also another tool that let's you type in free form text of the test. It then reads your text and generates test scripts. That seems pretty amazing.

The tool also has a Data-Driven Loop Wizard which let's you import data from a file to create tests. Finally for the seasoned testers, there is the JavaBridge. It allows you to use an API to grab data from within a Java application. That is sweet. If I get into more Java development, that feature alone could be worth the cost. Pricing starts at a grand for the Standard version.

The Many Faces of Quality

I read an insightful article on the different quality professions out there. These include quality assurance, quality control, verification, and validation. These terms are often confused and used imprecisely. So what exactly do they refer to.

Quality Assurance deals with processes. That does not necessarily mean testing. In fact, QA can involve review of a design or requirements document. This is in line with verification, which checks that development was conducted correctly.

Quality control deals with the product of software development. This is achieved through the execution of tests. It is closely related to validation, which is the execution of code.