New Job

I got a job in Seattle. Starting on 24th. Looks like lots of XML and database testing. Exciting new world all that begins with X in the w3c alpha soup. I will continue writing on this site but in a different form using Ruby: maybe Typo! or Hobix for blogging software and some wiki like Instiki or Hieraki. Ruby is becoming a Software Testers language.

Good/Bad Software

It’s far too simplistic to label software as good or bad. As a tester I look at what works or what doesn’t. I don’t see it in the realm of morality and judgment. I review it in the domain of design, elegance, workability, integrity, wholeness, accomplishment, smoothness, affordance, barriers, continuity, brevity, support, assistance, ambiguity, incompleteness and so on and so on and on and on…. This makes far more complex software testing and far more ‘better’ software as viewed outside of judgment.

ConcurrentModificationException at greenmountain.com

I was making changes at my Electricity provider GreenMountain.com and kaboom I got an exception (below). As a tester I wonder how I could have tested this scenario. Where in here are we blowing up and why? The bug is somewhere in MyAccountHandler.getBilingType method. I wonder what kind of a user I am set up as that I blow up on accessing this option. Hmm…

Error: 500

Location: /servlet/MyAccountHandler

Internal Servlet Error:

java.util.ConcurrentModificationException

at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:445)

at java.util.AbstractList$Itr.next(AbstractList.java:422)

at com.gmec.web.servlets.MyAccountHandler.getBillingType(MyAccountHandler.java:1394)

at com.gmec.web.servlets.MyAccountHandler.navigate(MyAccountHandler.java:246)

at com.gmec.web.servlets.MyAccountHandler.doGet(MyAccountHandler.java:90)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)

at org.apache.tomcat.core.Handler.service(Handler.java:287)

at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)

at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:812)

at org.apache.tomcat.core.ContextManager.service(ContextManager.java:758)

at org.apache.tomcat.service.connector.Ajp13ConnectionHandler.processConnection(Ajp13ConnectionHandler.java:160)

at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)

at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)

at java.lang.Thread.run(Thread.java:484)