Testing time variable using docker

Reading Time: 1 minute

TL;DR

As clouds passing by over your head, so the time passes through your product under test. Time is important testing variable that is often overlooked as source of test ideas.  Reason for that is that testers do not have appropriate tools to help them test time variable. I will provide simple example how docker can help us.

In my previous posts SIMULATING TIME IN RUBY ON RAILS and TESTING WITH TIME VARIABLE IS FUN! I already discussed time variable.

When you manage to learn docker basics, you are able to run on your local development machine various version of linux instances and services (nginx, apache, mysql) in matter of seconds.

 But you can control various variables of linux instances, not just product versions. And yes, you can control time variable. Time variable has several attributes: format, value, zone. And docker provides easy and SAFE way to change values of those attributes. Changing those values means that you only need to reboot your docker container. And if something breaks, you can have again old values in matter of seconds (all configuration variables are written in file that you can easily put under git control).

Here is example how to set docker container time ZONE. Changing time zone is important because in today’s web application world, frontend side application (javascript in browser) and backend application (Django, Rails, Node,…) usually have different time zones.

Create docker-compose.yml:

db:
  image: mysql:5.7
environment:
  TZ: UTC

and from that folder run:

>docker-compose up -d

No need to know how to actually set timezone in linux (Am I using bash or sh?), docker takes care of this. Your mysql instance is running in UTC time zone!

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Missing product feature

Reading Time: 1 minute

TL;DR

Missing product feature is one of situation where test automation can not help you. You as a tester should raise a risk about product missing feature. FEW HICCUPPS heuristic is excellent tool that can help you to identify missing feature and to persuade product owner that should be included in product.

Let’s learn by example. I bought to my mom two years ago Samsung LED TV. Criteria was price and dimension. I installed it and hit AUTOMATED channel scan. First issue is that here in Croatia we have a lot of scrambled ariel channels. So after auto scan finished its job, it took me almost an hour to delete those scrambled channels. Not an easy task. I set channel order, and important note is that when my mom gets used to that order, she does not want a new one.

Few weeks ago, my mom told me that there is new local channel. I looked for feature manual channel scan, but there was no such feature (observe channel menu). Google answered that this is the case for all Samsung TVs.

I hit auto scan:

  • user expectation broken – me spending one hour filtering out scrambled channels, my mom because she got new channel list.

This is from FEW HICCUPPS U, user desires inconsistency.

Using Google I investigated comparable products, Sony Bravia TV sets. Here is proof that they have manual scan feature. This is comparable product, first C from FEW HICCUPPS  inconsistency.

Fast forward to present. It is Euro 2016 championship, and national television is broadcasting games in Full HD over ariel for free, just during the Championship. Unfortunately, not for me.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Elixir learning path

Reading Time: 2 minutes

TL;DR

I started my Elixir functional language learning path. My goal is to learn Phoenix framework, and this is precondition. I will explain why I found that Elixir School is not a good fit for functional programming absolute beginner.

Important note: feature image features my daily elixir, which is good craft beer. Remember that this contains alcohol and you need to enjoy it responsible as legally major person.

Elixir learning page gives several options how to start. I started with Elixir School, and as absolute beginner in functional programming I lost them at matching patterns in case statement. Pattern matching is core feature for functional programming. Elixir school gives you examples, with no additional explanation. I think that precondition is that you know functional programming, and if this is true, they should state it this fact at the beginning of the lectures.

As a software tester, I read a lot about how to effectively learn something. You should always start with a book. Elixir official page listed Programming Elixir 1.2 as first resource. My heuristic was, “Does that mean that this is best option?” In order to check my fallible heuristic, I googled “best book to start Elixir” and found recomendation blog posts for this book.

So far so good. I am satisfied with book and author. Here are my notes for first chapter and my note taking tools:

tools_1

 

 

 

tools_2

 

tools_3

 

 

What I liked so far:

Instead, it is intended to give you enough information to know what questions to ask and when to ask them. So approach what follows with a spirit of adventure. Try the code as you read, and don’t stop there. Ask yourself questions and then try to answer them, either by coding or searching the Web.

Dave Thomas. Programming Elixir 1.2 (for Karlo Smid) (Kindle Locations 561-563). The Pragmatic Bookshelf, LLC (586659).

And:

The foundations of programming are not assignments, if statements, and loops.

Dave Thomas. Programming Elixir 1.2 (for Karlo Smid) (Kindle Locations 572-573). The Pragmatic Bookshelf, LLC (586659).

Conclusion

We recently had workshop on taking notes. One of the conclusion was is that you need to practice in order to create great graphically enabled notes that will help you to better understand them. Before every new chapter, I will use notes to recap what I learned in previous chapter and to use them as my Elixir reference.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

InMusic festival UX issue

Reading Time: 1 minute

TL;DR

Next week is InMusic festival in Zagreb, on beautiful Jarun lake. I checked schedule for Skunk Anansie and found one user experience issue.

 

Observe the post feature image. That is schedule for day when Skunk Anansie is playing. Can you tell me which date is date?

No, because selected day is not marked differently from other two festival days!

I hope that I will guess the day when Skunk Anansie is performing.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

URL Test Cheat Sheet

Reading Time: 1 minute

TL;DR

As a reference for my future self, here is the test cheat sheet for universal resource locator.

Elisabeth Hendrickson published some time ago this legendary heuristic test sheet, a set of quick test ideas. Recently I tested one feature that had URL, so here is set of quick test ideas for URL.

This is url structure:

scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

Here is scheme definition:

“The scheme, consisting of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus (+), period (.), or hyphen (-). Although schemes are case-insensitive, the canonical form is lowercase and documents that specify schemes must do so with lowercase letters. It is followed by a colon (:)”

Just for possible scheme values, we have explosion of test cases!

As we are smart tester, we will do risk reality check.

Here is test values cheat sheet for modern web application:

scheme: http, https, mailto, ftp, file, data, ftps, tel


various values:

http://user:password@tentamen.hr:80

https://www.tentamen.hr/tools/new

https://en.wikipedia.org/w/api.php?action=opensearch

https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#URLs

 

All those values must be parsable by the web application which means that http 500 error code must not be returned.

I missed mailto which caused 500 http error. This is the reason why I wrote this blog post.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Tester and UEFA Euro 2016 competition

Reading Time: 1 minute

TL;DR

One example with an issue in context of Uefa.com site.

Yesterday was kick off day for Uefa 2016 Championship. Great time for football fans but also some opportunities for software testers.

This morning I checked uefa official site and clicked on today’s featured video. Here is the page:

Screen Shot 2016-06-11 at 12.40.37 PM

Feature is broken on latest Chrome and Firefox.

Using Chrome developer I found out:

  • that site is using Javascript
  • as issue is active for 12 hours, UEFA is putting all their horses on TV rights income
  • on uefa.com there is no info how report an issue. I will use twitter hashtag #euro2016.

Go Croatia!

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Example of support for local community

Reading Time: 1 minute

TL;DR

On Wednesday I had opportunity to mingle with students of MIOC high school that made significant success at this year ACSL competition.

MIOC is best croatian high school and ACSL is annual competition in computer programming. If you like problems from Google Code jam or project Euler, that you know the context.

My company Tentamen gave small contribution as part of Cisex donation, so MIOC could send three teams to the competition. Cisex organized mingle session with those smart students, and I think that this was first session that involved interesting questions and did not involve any politician 🙂

IMG_1184

 

My goal was to let them know that beside computer programming, there is also software testing.

Host of the mingle session was HUB 385, new innovation center that is almost in my neighborhood. It really proved that is innovation center, because I got opportunity to see 3D printer in action.

I found out following facts:

  • teamwork is important
  • MIOC is best because of teachers that love their job and put extra, not paid effort
  • there is no many girls in teams, but MIOC has over 50% of female students
  • most student start programming in primary school as self education effort
Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Report on Zagreb STC #25 workshop: The Art of taking notes

Reading Time: 2 minutes

TL;DR

Last Tuesday we had our first workshop, The art of taking notes. Zeljko already wrote about his experience.

Our motivation was James Bach blog post, The New Testing conference. James presents idea what every conference track should include:

  • demonstrate idea in practice and take feedback from the audience
  • audience should exercise that idea
  • write or tell experience report

In this post I will write experience report about idea how to better take notes and how audience practiced that idea.

We started with usual introduction. We had 7 testers, two of them were first timers! I gave the introduction to workshop, based on this. Our context was taking notes while watching Elementary TV show. We used guidance given in previous link which was adopted on taking notes while listen to something.

We all came prepared with notebooks and pens in several colours (well almost, Irja forgot her glasses).

We all took notes by hand.

Every 5 minutes we made a pause in order to ask each other questions about our notes.

We should only note what was important and always note new information.

Use question, answer, evidence method. This is aligned with exploratory testing where you should test your heuristics about software.

Use shorthand, make notes visually appealing, always start on new page and always use wide margins, use symbols and diagram and color code your notes.

We mentioned here as examples xkcd comic, @testsidestory and twitter sketchnote hashtag.

At for last, after you are done, you should always review your notes.

What I noticed during the session. Elementary had three storylines: Sherlock/Watson relationship, get to know Watson, and the actual crime. We filtered out only crime information. But that information was overwhelming. As we made pauses, we discussed our notes and how they are significant for the case.

In the end we concluded that name of the episode was important note, because it helped us to direct our deduction towards the killer.

Here are our notes:

Callbacks on previous information.
Callbacks on previous information.

IMG_1175IMG_1173IMG_1174

This notebook already has margins which is very useful!
This notebook already has margins which is very useful!

 

We all have different styles in taking notes, which makes us differ almost like our signatures.

We concluded that it would be better to take Ted lessons or talks as a practicing material, mostly because they are shorter that Elementary show and packed with less information.

After the workshop we continued with unofficial part over pizza and croatian craft beers thanks to our sponsor, Tentamen.

 

IMG_1180

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Micro tracking changes for regression test

Reading Time: 1 minute

TL;DR

In my previous post Product moving parts as source for test strategy, I explained how I use Github as a tool that helps me to define what parts of product changed and should be tested in regression test.

Github feature that I use is pull request. It presents in clear manner changed files and what was changed in those files. As I have basic knowledge of moving parts (files) of product web framework (in this case Ruby on Rails), I can direct my regression test to test only parts of application that changed.

Sometimes I found an issue and developer updates pull request. How do I know what changed from original pull request?

I call this micromanaging pull request. I just do locall

git pull

and I get the list of files that changed in branch and that represent incremental pull request change.

Conclusion

In order to avoid spending time on massive regression test suites (e.g. breakable UI automation), you can use other automation tools, in smart way. Github, Bitbucket, Gitlab are tools that are very important part of my regression test strategy.

 

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather