Driving software tester Gojko Adzic

Reading Time: 4 minutes

One of my resources for learning software testing craft is my Twitter list testingLearn. I recommend all testing professionals form that list because they all know a lot about software testing. My humble goal is to meet in person and talk about software testing with all members from that list. This week, I got an unexpected opportunity to meet Gojko Adzic. Ericsson Nikola Tesla, the company I work for, organised Agile Day. I am very satisfied that my company took the initiative to be one of the Croatian Agile spokesman. Gojko held keynote named ‘Specification by Example’. The topic is well explained in his book that I am currently reading, ‘Specification by Example‘. Unfortunately, it was in house event, so I could not invite any of my Zagreb STC fellow testers. I contacted Gojko one month before event if he will be available for attending Zagreb STC #7 meetup, but because of his busy schedule, he had to leave immediately after his keynote. I informed my fellow tester, Zeljko Filipin that Gojko is in the house, and because he is a software tester, he gave simple but brilliant idea that I should offer Gojko free ride to the airport (because he knows that great software testers, like James Bach and Michael Bolton, will accept something similar). Well, it was not actually for free, because Gojko gave me 30 minutes free consultancy about testers position in software development process pipeline, which is far more valuable than a ride to the airport. Gojko accepted the offer, and I am very grateful for that.
Here is my first testing interview.

Karlo: I received feedback from my colleagues about your statement that developers are supposed to do automated testing. Could you elaborate more on that?

Gojko: I see that big companies want to optimization only part of their software development process pipeline. And often, they do not do that with the bottlenecks in their process. Problem with ‘big’ companies is that it is hard for them to see whole software development process pipeline. If process bottleneck are testers, and If they only optimize development process by introducing test driven development (TDD), and developers become very good at that craft, this could produce even greater problem for whole process pipeline. Developers will start to produce faster software that is ready for testers, and this will produce even greater pipeline bottleneck.
We should optimize bottleneck part of process pipeline. Only in that way we will be able to provide better software in shorter cycles. If analysis part is bottleneck we should optimize that part of the process pipeline. Problem with tester is that they often take to much responsibilities. Testers are not responsible for automated tests. Testers should tell developers what they should test using automated tests. Because developers are good at that. When development is finished? When all test that were specified by testers are automated and green! What added value testers bring to software development pipeline? Not to automatize, because developers are better for that task, but to critically think about the product and discover how to test the product (The little test book on test design is recommended by the blog post author) and from a number of test cases to decide what should be tested first (priority).

Who is the most important person that will drive implementation of specification by example in some company?

Every company is sum of a number of smaller companies. Sell it to real product owner, and that is person who has the money.

When I write test plan, I sometimes do not put immediately everything what should be tested in test plan. For example, we should test web application on Chrome, Firefox and Chrome.

Agile brings team responsibility concept. Google introduced ‘Attribute components capability metrics‘. You can implement that idea using simple online spread sheet and start things in movement. When you have your first capabilities and their attributes, put 
priorities on them and start testing!

Karlo: In your keynote you mentioned that there is no such thing as nonfunctional requirements. All requirements are functional. That statement also generated a lot of disturbance in developers filed at my company department.

UX (usability) is the only non functional test. Scalability, performance, security, they all have function. But, it does not matter how we call it! Give me REAL EXAMPLE for those capabilities, which means what product owner wants, and developers must implement it, and testers must test it. ‘None functional’ requirements usually do not have discrete values. You have to test interval values. Quper model is very good at communicating those interval values. This is how product owner can communicate what he wants to be implemented.

Karlo: Tell us little bit about yourself.

My first computer was Commodore 64, and I was the only child in the neighborhood that did not own cassette player or disk drive for it, which automatically led to fact that I did not own any computer game. So I started to write my own games (actually my father bought computer for himself, I was just excuse so he could justify that purchase to my mother). Together with him, I wrote my first game at the age of six.

Gojko may think of this conversation as his simple and common sense gesture. But as software testing in Croatian software development community has not been recognized yet as equaly important part of software development community, this simple gesture will help software testing to be recognize in Croatian software development community.

Thank you Gojko!  

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

jython and pip ‘No files/directores in pip-egg-info’ issue

Reading Time: 2 minutes

My goal is to drive Sikuli using plain-text functional descriptions, like Cucumber does for a Ruby. Sikuli uses Jython, so my first step was to install Lettuce Python module (Cucumber for Python). And everything must run on Windows. I am using Jython2.7a2, and first step was to install pip on Jython. Here is stackoverflow answer for installing pip in Jython. Second step was installation of Lettuce module, and simple:

>jython %JYTHON_HOME%binpip lettuce

does not work.
Following command:

>jython %JYTHON_HOME%binpip –proxy my_proxy_username:@proxy_url:port -r requirements.txt

produced following error (yes, I am working behind proxy server, and it was real fun to find out proxy information from IT in my company):

“No files/directores in %your_windows_home_directory%locals~1temppip-buildJinja2pip-egg-info (from PKG-INFO)
Storing complete log in %your_windows_home_directory%.pippip.log”

and Google told me that this is known Jython issue. Notice that issue has English grammatical error.
I resolved that issue with following command:

>cd  %your_windows_home_directory%Local SettingsTemppip-buildJinja2
>jython setup.py install

What I actually did? pip has two steps. First is to get the module egg from pip repository, and second is to run the actual install of the egg. I run second step by hand.
You will have to do that for all modules listed in requirements.txt, and when you install one module, you have to delete it from requirements.txt file.

Final step, because my test machine does not have access to Internet, is to copy/paste JYTHON_HOME folder from my development machine (where all pip installations are done) to the test machine.

Update 01:

During the installation of Pygments module (jython setup.py install) I received following error:
“java.lang.RuntimeException: java.lang.RuntimeException: Method code too large!”
More on that you can read again in Jython issue 1891:

I successfully installed Pygments after I divided definition of three lists in file:

%my_windows_home%Local SettingsTemppip-buildPygmentspygmentslexers_vimbuiltins.py

into three files in the same folder as original file:

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Dear Google, testing is not dead. Blogger feature

Reading Time: 1 minute

While I was finishing my previous post about how Google closed Calendar issue, I had problems with Internet connection. In my blog post edit filed, I constantly received warning that data was not saved on Blogger server. I pressed several time Save button in Blogger, but that message was permanently present in my Blogger editor. I did not close my  Chrome, and I returned after one hour to finish my blog post. Internet connection issue was gone, and  I discovered in my Blogger dashboard nine instances of my blog post with same name. Eight identical drafts and one published instances. It looks like JavaScript stores unsuccessful saves in some sort of cache  and when connection with server is established, it sends all save requests in bulk to the server. Every save has unique id, generated by JavaScript code. For testers, network edge conditions (low bandwidth, network connection goes on/off in short time intervals) are very important as source of testing ideas. Google tested Blogger in those conditions. Again, this is not a bug, but and issue. From user perspective I have version control of my unsuccessful saves, which is awesome.  Precondition is that I do not close Chrome up to the point in time when Internet connection is back up again.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Google resolved Calendar issue

Reading Time: 1 minute

Today I tried to reproduce the issue. Google resolved the issue. Now, when you create new calendar event, populate the What field and then click edit event, Where event is not populated with What value, and there is no link to Google maps. I told you, Google is very fast in resolving issues in their applications. Event that I created while I was reproducing the issue, still has link to Google maps. A little bit strange filling, like in Georges Orwell’s 1984. “He who controls the past controls the future. He who controls the present controls the past.” I am going to check the Google calendar past snapshot, screen cast with issue manifestation. Maybe Google updated screen cast as well?

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Dear Google, testing is not dead: Google calendar issue

Reading Time: 1 minute

Dear Google, testing is not dead. Opening keynote from Alberto Savoia of GTAC 2011 was “Test is dead”. Let me be clear, Google is doing marvelous job in testing their products. But my opinion is that their in house testing is missing human flavor. Just look at the description of their testing job positions. A lot of automation and programming.
My arguments why I think that Google is not right and that testing is not dead?
Today I found and issue in Google Calendar. I stated an issue, not a bug. Because form the automation point, everything works as expected. But not from human perspective. I created a screen cast of that issue. Why? As I said earlier, Google is doing a great job in testing their products. When they accept an issue to be resolved, they are able to put that fix in production very quickly. So probably you will not be able to reproduce this issue.
Issue is with Where filed in combination with link to Google maps. Where is by default populated with some words form the Event title filed. When you click on Google maps link, Google maps are opened at the location of Where field value. When you update Where field and click on map link, Google maps opens again at the default value. To put your change in effect, you have to save the event.
Why is this an issue? I lost several minutes figuring out how to put my Where field update in effect. Business loss from Google perspective? I could have spent that time at Google maps exact location and maybe I would click at some of the payed links of event nearby businesses.

See you at Code at six meetup!

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather