BDD loves DDD

BDD is not given when then.

It is a way of collaboration in which technical people with non-technical, business, product people write collaboratively specifications that everyone can understand. Gherkin is a format to do that. BDD is not a new format to write specifications, but rather having conversations between developers, testers and business people. Bringing examples to the front is the way we discuss what we want our software to do. BDD is a ubiquitous language.

With ubiquitous language, you can avoid terms that are understood by some of the team members only.

Ubiquitous language is used in DDD too.

DDD is a way to model software against business processes. During an event storming workshop, which is a group modeling technique that brings together, we would tend to think about using BDD on individual user stories to make sure that we nailed down the details. And where those stories are come from.

Web Element Locator Strategies: CSS Selectors

CSS Selectors have been favored over XPaths for two main reasons: simplicity and speed, though I doubt both. I usually go with XPath. Any element on a Web page can be uniquely located using XPath, and I find XPaths the strongest locator type.

CSS Selectors are not powerful, but most web developers already know how to use them. They cannot uniquely identify any given element on the page. CSS Selectors can never select elements by text context, and they cannot always select elements by index.

CSS Selectors are expressions that use pattern matching to find elements on a webpage.

Because I have abandoned CSS selectors, now I took the time to play with it more, and this is rather a memo to myself.

Continue reading Web Element Locator Strategies: CSS Selectors

The Most Important Answers Are Not Asked

We don’t know what we don’t know, and to discover this blind spot, the best we can do is to ask questions. Asking a question is the key to unlock the world full of knowledge. And actually asking questions is one of the best ways that software testers can add value. It is important to note that we – testers – ask about ‘how?‘, ‘why?’ or/and ‘under what circumstances?‘.

So what are the right questions?

Questions that

      • are brought up at the right time
      • open minds
      •  challenge the listener’s knowledge base
      • challenge the way of thinking
      • make people to shift paradigms
      • create thinkers
      • bring knowledge to the table
      • expose unseen problems or root causes

Continue reading The Most Important Answers Are Not Asked

Code Coverage. 100%

The question ‘do we really need to test constructors?‘ led me to understand that what 100% code coverage means and why we should strive for it.

Previously I’d always stated that it’s impossible to achieve 100% code coverage. Because 100% coverage means 100% coverage of that you believe to be the system’s functional paths. In other words: it is not 100% in reality. And it’s highly likely to people would write useless tests to reach that 100%.

Continue reading Code Coverage. 100%

it() Should Not Start with Should

Jasmine is a behavior-driven development framework for testing JavaScript code. This framework provides it() blocks to define test cases.

Every it() block contains two parts: description and return call.

description: this is a description of the test case

return call: this block contains function(), it may also have a variable in it, basically this variable will have some set time for to set the total time for the it() block to get executed. You can use it without time as well.

There are many articles, tips and tricks available explaining the best practices and lessons learned.

And this is where I can see that in lots of cases when the description in the it() block starts with the word should.

Continue reading it() Should Not Start with Should

What Is Exploratory Testing and Why It Is Great (Aka ET 101)

I’m pretty sure you have heard things about Exploratory Testing, you have most probably heard about how awesome it is. (Yes! This is the secret weapon!) And you may think you know it ALL. You are doing it, your team is doing it, so all should be good, according to the big book of plans you are all covered.

When you say or hear that someone was finding bugs by “just clicking around and found these issues, I did some exploratory testing“, then you can be as certain as death and taxes that it was not exploratory testing.

When you hear from the scrum master/whoever that “let’s do some exploratory testing before the live release just to make sure that everything is fine“, then you can be certain that they have no idea what they are talking about.

So what’s the point of Exploratory Testing? WHY is it great?

There is a psychological background. Let me explain.

Continue reading What Is Exploratory Testing and Why It Is Great (Aka ET 101)

Oh, Those Lovely Interviews

I have been browsing through the recent job postings for different QA roles lately, and I realized that there is only one thing in which these postings differ from each other – and this is the stack listed. And maybe the company description which tells us how great that company is, like they have bean bag chairs, table tennis, video games, etc.

I understand that it is not easy to write a job ad that stands out, from which I could predict that ‘yes, these people really know what they are looking for in a candidate.’

Nevertheless, one applies. What can go wrong? One might ask.

Well, a lot!

Continue reading Oh, Those Lovely Interviews

The Two Sides of Crowd-Sourced Testing

I was a huge fan of crowd-sourced testing.

I joined a smaller crowdsource testing company as a tester 9 years ago. I fell in love with the idea to have projects tested by a crowd with different backgrounds, experiences, and skills.

I immediately saw the advantages of crowd-sourced testing for companies:

  • valuable feedback to the development about the product within one or two days
  • a great diversity of devices and software versions
  • reveal bandwidth issues based on location and real network providers
  • localization testing by native speakers
  • low testing costs

and I saw the advantages of crowd-source testing for testers:

  • individual growth in different domains
  • learn about new testing tools
  • learn by example: reading others’ bug report is a great inspiration

Continue reading The Two Sides of Crowd-Sourced Testing