Right tool for the job

At work we really need some better tools. Testing our programs is just not easy when all you have is the program. It can take a while to manually put it into the state that you need to test. Currently we do not use any automated systems for testing. The only exception is a small tool that I wrote.

Existing tooling

Right now the only tool we have at our disposal is a crummy PHP app I wrote that runs on the command line. I use it to simulate vehicles being in trip so that I can test the big map page and ensure that it draws vehicles moving around correctly. I remember a co-worker of mine saying he would often have to test the map page at 5pm when everyone was driving home. I knew that was not a good solution to testing stuff, so I wrote a simple thing to manipulate the database in a way that simulates vehicles driving around. It has come in handy so many times. Back when I was doing full-time development on the big map page I was using it all day every day for weeks at a time.

My only regret about the trip faker tool is that I never pushed to get the others to use it. I should have written up a document and sent it around. However, I am the lead dev for that, so even if others knew how it worked it would still be mostly me using it. Also, it's usage is not very intuitive so I doubt the rest of the team would be thrilled to learn it's quirks. That is a lesson for me when I make the next tool. :)

Future Tools

I have built a few small things that need to be expanded into more usable tools:

Report Stress Tester

This is a little PHP page that generates a lot of requests for reports to be generated. I like that it fully simulates how a report would be requested. However, it exists in a page in my folder on the dev server and will never be pushed to the DEV or LIVE environment. I will need to integrate it into a admin page if I want others to even consider using it. Also, it generates a lot of data, it would be a good idea to have a way to clean up all the stress reports it created.

Device Network Simulator

We have hardware simulators that pretend to be a car engine that present a OBDII port. However, they do not let us fake data such as GPS location, timestamps, and other events. Plus they often do not get good cell reception in our part of the building.

So I built a simple (too simple) Java app that reads a input file and sends the data over the network to the back-end service to simulate network traffic from a device. The input file must contain everything exactly as you want it to be sent. I need to upgrade this to take care of things like

  • Timestamps
  • GPS in normal lat/lng format instead of raw hex
  • increment sequence numbers

I hope to build a simple GUI with it that can give some graphical feedback as it processes the file and sends the data. This would be really, really helpful when developing the back-end service. Currently the boss just uses the hardware simulator when he developers, but as I said there are many limits to that way. Additionally, when the QA team needs to test something specific, the hardware simulator usually can't reproduce a scenario exactly.

Future Tools

The biggest tools we need are already out there ready for us to use. Our main web app has no automated tests and there are many products that can be applied. We have looked at Selenium and Jazz Automation. The team really needs to set some time aside and decide which tool will work for us and get it into our workflow. Until we do, we are spending a lot of time doing things manually that could be automated. I really want automated tests so that we can catch bugs! It's really frustrating going to a page and finding that something is broken that used to work. Annoying!!

We will soon be working on a weather project. I will keep my eyes open for tools to develop that can help us build and test the new system.


Comments

comments powered by Disqus