implicit thought process made explicit

It is surprising to experience how difficult it is to make a thought process, which to me is second nature, explicit and find a way to share it with others.

When I started putting my thoughts on paper, I tried to put it in writing at first. This however resulted in a fairly strong writer-block. I had no idea where to start and how to get to anything that made sense to anyone, including myself.

I then switched to drawing it out on a piece of paper. After restarting several times I realized this also was not going to work.

Then it occured to me: why not try out a tool that is actually meant to capture the thought process, a mindmapping tool! So I started FreeMind and have started to actually use it sensibly.

In just a short while I managed to get clear how I quickly assess, in my head, what needs to be done.

Now the real challange starts of course. I now have a bunch of erratic mind maps which I now need to structure into an actual processflow, I need to figure out a way to explain based on what I assess the situation other than “experience and knowledge”.

Great feeling to get something that has been locked in my head for ages written out. Next up, going to try to sort things, see if there is some form of order in which I do this in my mind.

I am going to try to do that by moving from the mindmaps I made in Freemind to a tool that was posted in the Software-Testing news-group the other day: treesheets. That should help me get from a mindmap like tree to something more structured like a spreadsheet.

Funny how excited I am over something as simple as getting a mindmap with an overview of stuff that goes on in my head!  Judging by the mindmap, I have a messy mind…

When is automation useful?

Recently I helped write a proposal aimed at investigating whether or not to automate regression testing of a system is worth the investment. Looking at their current time spent in regression testing I started wondering when it is worth automating the hell out of everything and when it is just eating money on being hip to have tests automated.

I guess it all depends on a combination of things, such as time spent in regression testing, effort and investment needed to automate things, knowledge about test automation in house (e.g. does an external need to come in and do it for you?), how often do you need to run through regression on the platform, can all of regression be automated or just a part of it etc.

So, seems like you have to be a bit of a mathematician to see if test automating is worth your while, doesn’t it?

Let’s get realistic then instead.

I truly believe the easiest way to see whether test automation is your piece of cake, there’s one very effective way to do it: set a clear goal on what you want to achieve with test automation and based on that do a Proof of Concept. In other words, try it out. This is assuming you have the knowledge to write the code for test automation in house.

Start off with a little bit of research to figure out which tool will quite likely work best for you, there are plenty of Forums out there, or simply ask some fellow testers out there. Take the tool, or for all I care the demo version of some tool, you hope will work for you and try it out. Automate a few tests, just to see how fast it can be done. Do not try to make it all pretty, perfect and reusable immediately. First focus on what’s important: will it work? Does it help me get to my goal?

If it does, cool, now you can start for real, refactor the PoC-code or simply throw it out and start from scratch.

This of course becomes a slightly different story if you do not have the knowledge in-house to write the code yourself, or if you simply have no clue where to start with test automation.

If this is the case, please do not adjust the approach all that much. It is still the best, in my view, to let someone prove to you that their approach and their choice of tooling indeed is the best for your application and organisation. Keep in mind that at the end of the line, you still need to be able to use and maintain the tool and automated tests yourself, in-house. Having some contractor for that running around constantly makes the test automation effort an extremely tedious and expensive one.

Automating a legacy system

In the past I have worked a lot with fairly new, web-based applications. So here and there I would run into some “old” desktop applications, but the majority of my professional career has been, working with web-based technologies.

In my current assignment however I have hit a nice new technology, at least new to me: COBOL over TN3270

When I started on this assignment I had one big fear: being forced to use one of the bloated commercial tools out there which claim they support TN3270 off the shelf. Oh, did I say bloated? That sounds like I am biased towards the so called big commercial tools.

This sense of bias is partially true, I am in favor of using small drivers like WebDriver or White where possible over using a full environment such as QTP or Rational Functional Tester. The big tools quite probably have  their own unique selling points, however for a small IT organisation they are a huge investment and quite often overkill compared to what is actually needed.

When we started looking into tools we almost instantly dismissed the “big ones”, not so much due to their cost, but mainly due to the amount of customization still needed to make them work “out of the box” with TN3270 and the rest of the environment we’re automating. When talking to the vendors they all claimed that their tool is excellent to use for an environment for this, when asked however whether the tool will be pluggable out of the box the answer was consistently no, you will need to do some customization (or better yet, one of their consultants would need to do some customization). This same amount of customization will need to be done with a small driver as well, so why spend a fortune on something that is no better than a small, cheaper or even free tool?

For the Proof of Concept we decided to take two different drivers: Jagacy and s3270.

Jagacy is in their own words:

“… our award winning 3270 screen-scraping library written entirely in Java. It supports SSL, TN3270E, and over thirty languages. It also includes a 3270 emulator designed to help create screen-scraping applications. Developers can also develop their own custom terminal emulators (with automated logon and logoff). Jagacy 3270 screen-scraping is faster, easier to use, and more intuitive than HLLAPI. It excels in creating applications reliably and quickly.”

I cannot but agree with especially the latter part: it is indeed faster and easier than HLLAPI. In terms of more intuitive, I am not quite convinced (yet).

s3270 is a lot more simplistic than Jagacy:

” opens a telnet connection to an IBM host, then allows a script to control the host login session. It is derived from x3270(1), an X-windows IBM 3270 emulator. It implements RFCs 2355 (TN3270E), 1576 (TN3270) and 1646 (LU name selection), and supports IND$FILE file transfer.”

In other words, s3270 can be used as a layer between an application and a legacy TN3270 system.

Talking directly to s3270 is not the most intuitive thing, this requires the code to start a process, keep track of the state of this process and throw input into this process stream. All nice and doable, however it was already invented before by others and they quite likely did an adequate job at making this work, considering TN3270 is a fairly old protocol.

In order to make life for us easier while using s3270 or the PoC, we searched around a bit and found a wonderful open source tool h3270. Put simply, h3270 is a program that allows you to communicate with tn3270 hosts from within your browser. This open source tool helped us quickly hook up our test code to s3270. We dit not however need this browser functionality but are thankfully using the object orientated abstractions within h3270 for our own purposes

One of the wonders of working with tn3270 is that a whole new world of states opens up. In a web-browser for example, something is either there and visible or it is hidden from the user. Keyboards are never locked, when opening a new page the browser will tell your driver when it is done loading. With tn3270 it is not all that simple. First of all, there are features like a locked keyboard, it works with function keys that have disappeared from our physical keyboards years ago, the state of a screen is unknown most of the time, etc.

On the other hand, a terminal emulator is still nothing other than a form of sorts, just a bit more difficult to read and write.

Basically one of the things we once more saw proven, is that in test automation the basics are always similar. It is just the way you need to talk to the system that may be different.

My personal, professional code of ethics as a tester

Inspired by both my own previous post, but mostly by a response to my post on the Software Testing Club by Ainers Galvans I decided to follow his good example and write what I believe to be my professional code of ethics as a tester.

What is a Code of Ethics?

A code of ethics, or ethical code, is, in my view the following:

  • a set of rules set up to understand the difference between ‘right’ and ‘wrong’ and to apply this understanding in my decision-making.

My professional code of ethics

I have tried to keep my professional code of ethics short and understandable. Where I believe more than a one-liner is needed I have tried to keep the explanation as short and clear as possible

  • I am always honest and do not attempt to prettify information or feedback. I expect others to treat me likewise.
  • If I can get a job done in less hours than agreed, I will do so and inform my customer that the amount of time spent was less. If I cannot get a job done in the amount of hours agreed, I will inform my customer of this as soon as I can.
  • I honour (mutual) agreements. Both verbal and written agreements as well as meetings. When I agree to something I will do what I can to honor that agreement. E.g. when I agree to come to a meeting I will do what is needed and possible to be at that meeting.
  • I try to waste as little time as possible. Both my own time and my customers’ time is valuable so if I see a way to speed things up without losing efficiency and quality, I will try to speed things up.
  • I need to see the point and added value in the things I am supposed to do. A task or a job that seems pointless to me and of which the added value remains unclear to me gives me zero motivation, which would reflect on the quality of the execution, therefore it is a must for me to see what the added value of  the task is.
  • I will always try to learn something new, regardless of the situation.

Generally I try not to compromise this set, but it is of course not a black and white set of rules, there are shades of grey as there are in all things in life. These are my professional basics which i personally am trying to stick to. There of course might be quite some additional insights to build up on top of those, which are appropriate for and depending on each customer / situation / task etc.

Work ethics – being professional?

No matter where I have worked I always believed, and still do, that I have a strong and sensible work ethic. I expect to have to work hard in order to learn new things and grow in my role. Sometimes working hard means traveling a lot, sometimes it involves working long hours or weekends without being paid extra for it. Quite often I have asked myself whether it is all worth it, generally speaking it always was.

I enjoy learning new things, new techniques or technologies. Learning means you need to invest in it, do something actively, like making an extra effort on top of your regular day-to-day life.

In return for making an extra effort, I generally get appreciation from my colleagues and customers and gain new insights and knowledge. On top of getting appreciation, I also get credits for wanting to go the extra mile, which results in goodwill from both customers and colleagues and strengthens my reputation as a professional.

Of course I too complain about things. Obviously there are things I would like to see done differently in my work. However I try to take the active approach to introduce the improvements and make life easier for all those involved.

I truly believe that in a professional working environment it is not a lot to ask people who complain – and rightly so – about things they consider wrong or up for improvement to be constructive and try to change these things, look for solutions rather than keep whining. Quite often however, when you ask the complaining people what are they planning to do to make things change, silence is the answer.

I understand that not everyone has the same drive for his work, some people rolled into a profession by accident and are not motivated to grow their, work related, knowledge and just work to make a living. They, hopefully, have something else that gives meaning to what they do and which motivates and inspires them everyday. Personally, I enjoy my job. I like testing, I like finding solutions and moving  software testing to the next level, I enjoy solving testing problems and get satisfaction from deep diving into software testing theories and challenges. I also really enjoy spending time with my family and friends, but that does not make them mutually exclusive in my view. Just as I invest in friendships and my relationship with my wife and family, I invest in my relationship with my employer and my customer.

In my professional life I try to address things I do not like or think could be better (at least in my opinion). This is why it still surprises me that quite often I run into people who are not happy with a lot of things, but when you ask them what do they propose to do about it you get no answer.

Example: as a consultant I do not have a lot of direct contact with my employer, ergo, communications between my employer and myself (and my colleagues) is not always as supple and swift as one (and the company) would like. Since I am generally at a customer site I have to read emails from my work in the evenings and weekend. We use quite some online, or cloud-based, tools to make sure we stay in touch, such as Dropbox and LinkedIn. So on my personal smartphone I make sure I have the LinkedIn app up and running so I can keep in touch with what is happening “back in the office”, even during weekends or when at a customer site where I have no access to anything but the systems we’re working on and with (bank-like institutions usually lock off their network so you also cannot get to the outside, and rightfully so).

To make all of this even easier we now have received a smartphone. Not exactly the one I would have preferred, but hey, who am I to complain about an iPhone? I had to configure the mail on it, install a few apps on it, but I now have a fully mobile miniature office with me. My employer pays for the bandwidth I use on the phone so no added costs to me, just added ways to communicate with the “home front” be it my employer, my colleagues, my assignment or my family and friends.

You’d think wonderful inventions like this make life easier for those who do not regularly read their company email or never participate in a discussion on LinkedIn. However instead it raises even more questions and reservations, such as “am I required to configure email on the phone?”, “why wasn’t this done for me already?”, “do you now expect me to read my email in the evenings?”.

Am I crazy to enjoy my work and wanting to go that extra step, if reading your email indeed should be considered an extra step? I think I am the normal one and those moaning and complaining are the crazies, but once you start noticing that a majority of the people around you are crazy, it makes you reconsider. At least it did for me.

I started to wonder whether it is normal that I feel connected to my work and to my employer, that I like responding to questions, statements or comments posted on forums, that I do read my email at the most improbable times, that I do not mind driving 400 km’s to go to my colleagues on the other side of the country to talk to them about software testing and things that keep my mind occupied.

I still believe I am the normal one, just a normal person part of a minority with strong work ethics.