Demystified programming languages

Reading Time: 1 minute

During my schooling at Faculty of Electrical engineering and computing (FER), professors followed very simple mantra for teaching programming languages, they did not teach programming languages. We got assignments, and we should find our own way to teach ourself programming language. The trick was that it was before Google era and c++ was very trendy. And I did a lousy job. Available books in Croatian were poor direct translations of poor programming books in English about c++.

At my third year I met excellent teacher, Julijan Sribar, and he mentioned that his book Demystified c++ (coauthor was Boris Motnik) will be published very soon. Knowing that he is excellent teacher, I bought Demystified c++ as soon it was available.
In book authors do not only teach c++, they also teach you how any programming language works. For example, the difference between int a and float b. And why program with float b needs more memory that program with int aDo testers need to know how to program? I do not think so. But I think that tester should now how programming languages actually work.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Two testers at Ruby::ZG::Meetup

Reading Time: 2 minutes

Yesterday, I attended Ruby Zagreb meet up. Officially, it

was first, but it was just first organized using Meetup platform. I think that Ruby group is one of the oldest meet up groups from Zagreb area. Meet up was held in club Mama. There is a story that in early days of Croatian Internet access (1992) Mama’s Internet fee for linux users was twice cheaper than for Windows users. 
We started with usual introductions. We had professional hard core Ruby developers, Ruby newcomers who wanted to find out why Ruby is such a great language, and two dedicated software testers.
Fun part started with Nikica’s presentation on Threads, Actors, Fibers and STM made easy with Celluloid framework. Presentation takeaway: serious concurrency is possible in plain Ruby.

Second presentation was held by Sime, how to create our own mini testing framework by reverse engineering minitest framework.

Presentation takeaway: by doing it, you will learn a lot of great stuff how to create your own framework. I was surprised that minitest was new in Ruby world, because I am from Java world. It seems that rspec was first Ruby testing framework, coming with its own DSL language and resolving some missing feature and obstacles in Junit framework (versions before number 3). I hope that there will not be future Ruby presentation how we switch back from minitest to rspec.

At the end, Vlado presented its own open source contribution with gem rails_db_info. Browse through your database tables in easy and effective way. Presentation takeaway: create it, encapsulate it, publish it as a gem, true meanings of open source. And, yes, you will learn something by doing it. Vlado learned how to configure Travis.
Zeljko announced Citcon unconference that will be held on 20. and 21. September in Zagreb. It is about continuous integration and testing that accompanies it. And it is FREE!
We continued mingling over beers at Kolding. I was part of interesting conversation about  ActiveRecord practical problems and challenges. I herd again that Rails is oversimplified and that “everybody” could start programming with it very quickly. That Rails is not framework for real projects. I can not argue against those arguments because I am not power Rails users, but again, coming from Java world (J2EEs and Spring frameworks), I think that Rails is very revolutionary framework. It is very testable (for example, I know few J2EE developers who would kill for Capybara J2EE framework) and security features are state of the art comparing to Java framework world.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Master of test data

Reading Time: 1 minute


One tester got and assignment to generate a set of testing data. Scale of that set was in thousands of records. He created an sql script, and execution of script lasted for hours.
Tester could have various possible responsibilities on project. Some of those responsibilities could be also assigned to developers. More on that you can read in this famous paper “Managing the proportion of testers to other developers by Kaner, Hendricson and Smith-Brock. This paper is required reading in BBST foundation testing course.
Tester could be responsible for creating scripts that load a great amount of testing data into database. In this post I would like to explain what every tester need to know about database transactions concept. And that will be general explanation that could be applied on any database implementation.
Every interaction with database is in the transaction scope. Yes, even when you query the database, you are doing it in transaction scope. And transaction takes database resources and it takes some time to execute. Important parameter of every tool or client that interacts with database is auto- commit parameter and that parameter is usually set to true value.
And that was tester problem. Every insert was in transaction scope. When he turned auto-commit parameter to false, and he put after every 1000 records explicit commit command in sql script, execution time of script was in seconds.
As a tester, your obligation is to understand the concept that are important for your testing activity. Understand those concepts, and mastering testing tool will be an easy task. You will earn your credibility in project team and you would not need to worry about your professional future as a tester.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

An information, an information, my kingdom for an information!

Reading Time: 1 minute

Name for this post is inspired with one of the best known William Shakespeare lines from Richard III play. In this post I will describe issue that I had while I was testing ETL procedure.
ETL procedure is Microsoft Windows command line application. It has a number of command line parameters. I was testing one of the command line options, and ETL tool reported error that it can not connect to the database using provided username and password. Using previous build, I was able to connect to the database using those credentials.

I had access to version control system (Microsoft Team Foundation System), so I decided to research what changed in source code for ETL procedure in latest commit. I was able to quickly identify what caused the issue. New code was trying to connect to database that was not created yet. This is typical variable initial state issue (you can find out more about that topic in BBST Test design course, lecture 2). So proper error should be: “Unable to connect to none existing database”.
What are effects of this issue?
Imagine that you work for DevOps Google team. New code push introduced this issue. You do not have access to source code. You need to know the real cause of this issue immediately in order to write credible bug report. Downtime is very expensive for Google applications. 

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Microsoft Visual Studio 2012 UX issue

Reading Time: 1 minute

In this blog post I will describe Microsoft Visual Studio 2012 user experience issue. Using consistency oracles, I will advocate why is this user experience issue.
In Microsoft Visual Studio 2012, I accidentally closed source code explorer window. This is for me the most important tool window. It is window that enables me to easily browse through the project files and folder structure. I did not have information how to reopen it. I started my investigation by touring the View menu. There is 24 menu options in first menu level, but no source code explorer option. I switched to Window menu, no lack again. So far I spent 5 minutes in my tour. Switched back to View menu, other windows submenu, there it was, as sixth option. I spent 8 minutes in my tour.
This is not consistent with:

  • user expectation – I expect that most important window must be reopened in quick manner.
  • consistent with claims – on Visual Studio home page, second claim is “Built for Agile processes”. Dictionary meaning of word agile is: Characterized by quickness, lightness, and ease of movement; nimble. I spent 8 minutes to find out how to reopen source code explorer window. This is not agile.
  • consistent with our image – observe picture in this post (picture is from Microsoft Visual Studio home page). Microsoft wants to project image as company that enables user to do their work quickly.
We have three inconsistencies which are advocating my claim that described behavior is user experience issue in Microsoft Visual Studio.
Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather