The Ultimate Tester: Wrap-Up

Maaike Brinkhof

ultimate_tester1

To everyone who has read all or some of the past blog posts in this series: thank you so much for reading. I hope I have given you some food for thought on where you can improve as a tester (or developer who tests!). 

 Read more

Our Answer To the Alert Storm: Introducing Team View Alerts

As a Dev or Ops it’s hard to focus on the things that really matter. Applications, systems, tools and other environments are generating notifications at a frequency and amount greater than you are able to cope with. It's a problem for every Dev and Ops professional.

Alerts are used to identify trends, spikes or dips in your metrics and events – for example to detect low free memory, high page-fault errors or unavailable database servers. With the right alerts in place you can get notifications or signals of problems before they escalate or respond quickly before it takes a business service down which could affect your customers.

But most companies don’t have the right alerts.

When problems occur, they have to manually correlate all alerts, metrics, events and log files from different tools to get contextual information and to understand the problem they are dealing with. How do you know which alert you have to focus on and which not?

To read the full blogpost, please visit blog.stackstate.com. 

 

Verbal Aikido for Product Managers

Chris Lukassen

"Well eh ok, I guess so" mumbled the student in the training exercise where he was practicing how to say no to feature gluttony. I decided to give the class an additional exercise to awaken their inner diplomat.

“Diplomacy is the art of telling people to go to hell in such a way that they ask for directions.” - W.S. Churchill

All sweet and well, but how do we say NO?

 Read more

The Purpose Alignment Model

Chris Lukassen

When scaling Agile/Scrum, we invariably run into the alignment vs. autonomy problem. In short, you cannot have autonomous, self-directing teams if they have no clue what direction they should go. Or, even shorter, alignment breeds autonomy.

But how do we create alignment? And what tools can we use to quickly evaluate whether or not what we want to do is part of the mission? Niel Nickolaisen, chief technology officer at OC Tanner, created the purpose alignment model. I use it with innovation labs in large enterprises to determine what aspects of innovation to keep, and what to leave to others.

 Read more

The Ultimate Tester: Sharing Knowledge

Maaike Brinkhof

sharing_knowledge_small

In the past three blog posts we have explored some aspects of being an Ultimate Tester: How we can add value, how our curiosity helps us to test the crazy stuff and how we can build quality in. We learn a lot about these things during work time (and hopefully during personal time as well), but as the Ultimate Tester we want to take this as a step further. What do we have beyond learning? Sharing knowledge!

In this post I urge you all to become a quality ambassador; to share more about the things you’ve learned. Help the testing community further by giving back what you know. Don’t say “but others know so much more than I do, what can I possibly add to it?”. You know more than you think and you can share knowledge in many ways. I will give you some options, ranging from very easy to needing a lot of effort.  Read more

How to Keep flowtype Running and Report Errors on Save

wvenema@xebia.com

We use flow from Facebook to run type checking on our codebase. When you run ‘flow status’ it starts a flow server in the background and keeps it running. That way after the first run the results of each next run are almost instant. The only thing currently lacking is a watch mode, but there is a nice trick you can use.
Read more

Filtering objects to Optionals

Lammert Westerhoff

A while ago I stumbled upon a Blog post by Natascha the Robot about Configuring a Constant Using Shorthand Argument Names in Swift. Which by itself is a great post, but I was most inspired by the Then library mentioned at the end of her post. Seeing how such a small amount of code could change the way we configure constants everywhere gave me the idea to create something in a very similar fashion. But instead of configuring a variable it’s used to filter one based on a condition. Because why should filter only be applicable to collection types?

The usage of it is extremely simple and very useful:

extension String: Filter {}

"12345".filter { $0.characters.count > 4 } // Optional("12345")
"12".filter { $0.characters.count > 4 } // Optional(nil)

Only very little code is required to make this work:

extension Filter {

    /// Allows filtering of non sequence types.
    ///
    ///     let label = UILabel().then {
    ///         $0.textAlignment = .Center
    ///         $0.textColor = UIColor.blackColor()
    ///         $0.text = "Hello, World!"
    ///     }
    public func filter(@noescape condition: Self -> Bool) -> Self? {
        return condition(self) ? self : nil
    }

}

extension NSObject: Filter {}

Not enough code to make a library out of it in my opinion. Just copy this code into your project. I did create a GitHub Gist which I will update if needed.

With this code, any object that inherits from NSObject will work by default. For pure Swift objects, just add the one liner to let the object adhere to the Filter protocol.

I’d love to hear your comments and hear about alternatives to this.

Behind the Scenes: A Minimal Viable Setup for Creating Video Scribe

Chris Lukassen

I'm getting a lot of questions about my previous blog post. Fortunately also about the content, but mostly about how I created the video. So in this episode we will look at the MVP (Minimal Viable Product) version of a video scribe and the lessons learned. This way you can make a better video scribe based on my learnings.

Simple Tools are Key

Simple Tools are Key

 Read more

The Ultimate Tester: Build Quality In

Maaike Brinkhof

XebiaTester_BQI_1

One of the most important aspects of agile working is the fast pace. In an ideal world, you can deliver to production constantly. However, if you deliver software fast, but it is full of bugs, your product has a lower chance of succeeding. As an agile tester, one of your focus points has to be to speed up the feedback loop while maintaining good quality. We no longer want to give feedback about the product with a manual regression testset that takes days or even weeks. That’s simply too much time to waste. Let’s stop that nonsense, we’re better than that.

Before you start automating your regression test on GUI level, hold on a second. Think about what you want to achieve first. What do you want to test on which layer of your application? There are a couple of helpful concepts to help guide you: the testing pyramid, testing scales (to help you map out components of your application and think about how how heavily you want to test those)  and the agile testing quadrants (to see what types of testing you have used and what you are still lacking). Always consider your context and where the risk is, do not write tests without asking yourself what value they provide. Read more

7 Agile Practices You Can Apply in a Controlled Environment

Chris Lukassen

So your teams want to do Agile, perhaps have even started doing so. Now your project managers run around wondering what story points are and why any number of people seem to be attributing hours to their project code. So the question is: what can you adopt easily without turning the Governance of your organisation upside down?

Prince2 can severely hinder your agility

Prince2 can severely hinder your agility, but that is no reason to stop smiling

Is this an ideal Agile way of working? No it's not, but it's a good first step that you can take without frustrating the environment too much. That will make additional steps easier.

 Read more