Wednesday

Reception area — Registration
Dragefjellet — Welcome from the organizers
Downstairs — Coffee break
Restaurant — Lunch
Galgebakken
Tårnplass
Quality and testing strategy concepts for cross-functional team
Anna Royzman

A cross-functional team jointly owns the quality of the product they deliver. In this workshop, Anna will guide your learning in defining both the quality concepts and the experiments that validate the quality claims. Exploring what "quality" means for various stakeholder groups, participants will learn how to select and apply testing methods and styles that fit best along the project and product maturity continuum.

Thought the hands-on exercises, the workshop attendees will practice identifying quality risks on various stages of product maturity. They will learn how to select most appropriate test automation strategies, how to leverage exploratory testing as a team activity, ways to prepare for live pilots and demos of the real product, approaches to refine test coverage based on customer feedback, and techniques for designing a production "safety net" test automation suite.

Also, participants will learn how to identify all available resources that can be used to assist in a reaching team quality goals (tools, skills, knowledge, etc.)

Anna has modified this workshop, taught to agile testing leaders worldwide, for the cross-functional audience, who want to invest in the quality of their product.

 

Workshop takeaways:

  • A better understanding of how to satisfy all your stakeholders’ needs for quality
  • Defining testing mission and priorities at various project and product maturity stages
  • Learn and practice applying testing methodologies within the specific project context
  • Identifying context and resources available in meeting team quality goals
Tårnplass
Dragefjellet
Muséplass
Teatergaten
Strangehagen
Understanding Transducers through Python
Austin Bingham

Transducers – a portmanteau of ‘transform reducers’ – are a new functional programming concept, which were first introduced into the Clojure programming language. Although transducers are actually pretty straightforward in retrospect, wrapping your brain around them can be challenging.

Transducers allow us to fuse multiple data processing operations together so they can be applied in a single pass over a data series – similar to how Python generator functions allow us to process iterable series. However, unlike generator functions they are completely decoupled from the data series abstraction and can be used on eager sequences, lazy iterables, coroutine-based push events and events such as those modelled by Reactive Extensions for Python (RxPy).

In this workshop, we introduce transducers by implementing them from scratch in Python 3. We’ll start with the familiar staples of functional programming, map(), filter() and reduce(), and derive transducers from first principles. We’ll work towards a set of general tools which works with eager collections, lazy ‘pull’ sequences, and coroutine ‘push’ event streams and RxPy. Along the way we’ll cover stateful transducers and transducer composition, demonstrating that transducers are both more general, and more fundamental, than the functional programming tools baked into Python and many other languages.

There are no prerequisites for this workshop as we stick to core Python 3 language features although an enthusiasm for a functional programming style will be sure to help attendees get the most out of this session.

Students should clone this git repository to their laptop prior to the workshop: https://bitbucket.org/sixty-north/python-transducers-live-student-material

Strangehagen
Downstairs — Coffee break
Galgebakken
Tårnplass
Quality and testing strategy concepts for cross-functional team (cont.)
Anna Royzman

A cross-functional team jointly owns the quality of the product they deliver. In this workshop, Anna will guide your learning in defining both the quality concepts and the experiments that validate the quality claims. Exploring what "quality" means for various stakeholder groups, participants will learn how to select and apply testing methods and styles that fit best along the project and product maturity continuum.

Thought the hands-on exercises, the workshop attendees will practice identifying quality risks on various stages of product maturity. They will learn how to select most appropriate test automation strategies, how to leverage exploratory testing as a team activity, ways to prepare for live pilots and demos of the real product, approaches to refine test coverage based on customer feedback, and techniques for designing a production "safety net" test automation suite.

Also, participants will learn how to identify all available resources that can be used to assist in a reaching team quality goals (tools, skills, knowledge, etc.)

Anna has modified this workshop, taught to agile testing leaders worldwide, for the cross-functional audience, who want to invest in the quality of their product.

 

Workshop takeaways:

  • A better understanding of how to satisfy all your stakeholders’ needs for quality
  • Defining testing mission and priorities at various project and product maturity stages
  • Learn and practice applying testing methodologies within the specific project context
  • Identifying context and resources available in meeting team quality goals
Tårnplass
Dragefjellet
Muséplass
Teatergaten
Strangehagen
Understanding Transducers through Python (cont.)
Austin Bingham

Transducers – a portmanteau of ‘transform reducers’ – are a new functional programming concept, which were first introduced into the Clojure programming language. Although transducers are actually pretty straightforward in retrospect, wrapping your brain around them can be challenging.

Transducers allow us to fuse multiple data processing operations together so they can be applied in a single pass over a data series – similar to how Python generator functions allow us to process iterable series. However, unlike generator functions they are completely decoupled from the data series abstraction and can be used on eager sequences, lazy iterables, coroutine-based push events and events such as those modelled by Reactive Extensions for Python (RxPy).

In this workshop, we introduce transducers by implementing them from scratch in Python 3. We’ll start with the familiar staples of functional programming, map(), filter() and reduce(), and derive transducers from first principles. We’ll work towards a set of general tools which works with eager collections, lazy ‘pull’ sequences, and coroutine ‘push’ event streams and RxPy. Along the way we’ll cover stateful transducers and transducer composition, demonstrating that transducers are both more general, and more fundamental, than the functional programming tools baked into Python and many other languages.

There are no prerequisites for this workshop as we stick to core Python 3 language features although an enthusiasm for a functional programming style will be sure to help attendees get the most out of this session.

Students should clone this git repository to their laptop prior to the workshop: https://bitbucket.org/sixty-north/python-transducers-live-student-material

Strangehagen
Kalfaret brygghus (map) — Conference dinner

Thursday

Reception area — Registration
Galgebakken
Tårnplass
Exploratory Testing an API
Maaret Pyhäjärvi

How can I use exploratory testing on something that does not have a GUI?

Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics. A lot of times we test before there’s a graphical user interface or finalized features available, and exploring is the mindset that helps us uncover things we do not know. Still I often hear people expressing surprise at the idea that you can explore an API. Something that is intended for programmers.

In this session, we will work together in a mob with one computer to learn about exploratory testing of an API. We’ll look at exploring usability of an API (also known as “design”), internal and environmental variables we can tweak, and prioritizing information we will find relevant in relation to it’s purpose. Let’s work on code-oriented tests that are not regression oriented but aim at finding new information by means of exploratory testing.

Learning outcomes:

  • Uncover how other people think when testing to learn from your peers
  • Learn to identify variables (things you can change) on an API or a method signature
  • Learn to prioritize your testing efforts for most relevant feedback fast

Presentation format. This session is a workshop. From the audience, we pick 6 volunteers to form a mob that engages in testing an API within the constraints and support given by the facilitator. The facilitator will (whenever needed) interrupt the mob and step in as a temporary navigator to introduce exploratory testing tools and concepts that makes the testing experience flow smoother. The rest of the audience observes, and in the end of the session, we reserve time for a whole audience retrospective focusing on lessons learned in the session

 

Tårnplass
Dragefjellet
Fast Feedback Loops & Fun with Ruby
Stephan Kämper

Ruby is "a Programmer’s best friend", but it can be very useful for all roles including testers, designers and others.

Let’s use Ruby to get feedback—as well as getting the feedback automatically—when working on projects. Whether it's about transforming source code into test results (a.k.a. running automated tests) or generating image files from raw data, Ruby can be used to automate these tasks. Furthermore, it can also be used to automate actually running these tasks, e.g. upon saving a file to disk. Does that sound like a good idea? This session is for you.

I regularly bump into tasks that are...

  1. tedious, if done manually
  2. not done often enough, unless automated
  3. still not done often enough, unless running them is automated, too.

If this happens to you as well—and you already know some Ruby (or a similar language)—you're very welcome in this workshop, no matter whether you're a tester, designer or programmer. 
If your tools can be started from the command line, chances are very good that you can use Ruby to automate running them.

In the workshop we'll combine some Ruby tools to remedy this situation. In particular the workshop will cover:

  1. Writing a simple Ruby program that does something useful, e.g. turn a markdown file into HTML
  2. Wrapping that in a Rake task
  3. Automate running the task

Knowing how to do this is useful, not only for projects using Ruby as their primary language, but can be handy in all projects.

To get the most out of the workshop you should:

  1. Have some Ruby knowledge; you don't have to be an expert or anything like that.
  2. Be willing to help others and be helped by others.
  3. Bring a notebook (or tablet) with an internet connection & Ruby installed. If you're using RVM, rbenv or chruby or similar, that's cool.
  4. OS X, BSD; Linux & friends should all be fine, Windows may be a bit problematic.
Dragefjellet
Muséplass
Teatergaten
Strangehagen
Hødden
Downstairs — Coffee break
Galgebakken
Tårnplass
Exploratory Testing an API (cont.)
Maaret Pyhäjärvi

How can I use exploratory testing on something that does not have a GUI?

Exploratory testing is a systematic approach for discovering risks using rigorous analysis techniques coupled with testing heuristics. A lot of times we test before there’s a graphical user interface or finalized features available, and exploring is the mindset that helps us uncover things we do not know. Still I often hear people expressing surprise at the idea that you can explore an API. Something that is intended for programmers.

In this session, we will work together in a mob with one computer to learn about exploratory testing of an API. We’ll look at exploring usability of an API (also known as “design”), internal and environmental variables we can tweak, and prioritizing information we will find relevant in relation to it’s purpose. Let’s work on code-oriented tests that are not regression oriented but aim at finding new information by means of exploratory testing.

Learning outcomes:

  • Uncover how other people think when testing to learn from your peers
  • Learn to identify variables (things you can change) on an API or a method signature
  • Learn to prioritize your testing efforts for most relevant feedback fast

Presentation format. This session is a workshop. From the audience, we pick 6 volunteers to form a mob that engages in testing an API within the constraints and support given by the facilitator. The facilitator will (whenever needed) interrupt the mob and step in as a temporary navigator to introduce exploratory testing tools and concepts that makes the testing experience flow smoother. The rest of the audience observes, and in the end of the session, we reserve time for a whole audience retrospective focusing on lessons learned in the session

 

Tårnplass
Dragefjellet
Fast Feedback Loops & Fun with Ruby (cont.)
Stephan Kämper

Ruby is "a Programmer’s best friend", but it can be very useful for all roles including testers, designers and others.

Let’s use Ruby to get feedback—as well as getting the feedback automatically—when working on projects. Whether it's about transforming source code into test results (a.k.a. running automated tests) or generating image files from raw data, Ruby can be used to automate these tasks. Furthermore, it can also be used to automate actually running these tasks, e.g. upon saving a file to disk. Does that sound like a good idea? This session is for you.

I regularly bump into tasks that are...

  1. tedious, if done manually
  2. not done often enough, unless automated
  3. still not done often enough, unless running them is automated, too.

If this happens to you as well—and you already know some Ruby (or a similar language)—you're very welcome in this workshop, no matter whether you're a tester, designer or programmer. 
If your tools can be started from the command line, chances are very good that you can use Ruby to automate running them.

In the workshop we'll combine some Ruby tools to remedy this situation. In particular the workshop will cover:

  1. Writing a simple Ruby program that does something useful, e.g. turn a markdown file into HTML
  2. Wrapping that in a Rake task
  3. Automate running the task

Knowing how to do this is useful, not only for projects using Ruby as their primary language, but can be handy in all projects.

To get the most out of the workshop you should:

  1. Have some Ruby knowledge; you don't have to be an expert or anything like that.
  2. Be willing to help others and be helped by others.
  3. Bring a notebook (or tablet) with an internet connection & Ruby installed. If you're using RVM, rbenv or chruby or similar, that's cool.
  4. OS X, BSD; Linux & friends should all be fine, Windows may be a bit problematic.
Dragefjellet
Muséplass
Teatergaten
Strangehagen
Hødden
Restaurant — Lunch
Dragefjellet — Introduction to open spaces
Dragefjellet and more — Open spaces 1
Dragefjellet and more — Open spaces 2
Downstairs — Coffee break
Dragefjellet
Muséplass
Teatergaten
Downstairs — Coffee break
Dragefjellet
Muséplass
Teatergaten

Friday

Reception area — Registration
Galgebakken
Cucumber - Behaviour Driven Development for the masses
Snorre Brekke

Lost in translation

Have you ever had a new features returned under the heading "This is not what we wanted!"?

Developers, testers and product-owners often have very different views on how software should work. Unless they all talk together, misunderstandings can quickly creep in, leading to cost-overruns and confusion.

BDD (behavior driven development) is TDD taken to the next level. Start with spesification by example, and implement the feature as specified. It aims to bridge the void between developers, testers and product-owners, through a shared understanding of the subject matter. Cucumber allows a fluid translation of natural language into runnable specifications.

Agenda

In this workshop, we delve into Cucumber using the Java implementation.

First we will cover the basics of getting Cucumber up and running using JUnit, and write some simple spesifications.

Then we jump into the deep end, where we will try to learn a new domain by examining the Cucumber spesification of a small game.

Building on the already existing code base we will expand and improve upone the spec.

During the brunt of the workshop we will implement increasingly more complex user stories. As we expand our codebase, we have a running suite of acceptance tests to lean back on - if we break something, the reason should be clear.

Can spesification by example help us understand our code better? And is Cucumber a useful tool for the job?

Come and find out!

Code & Wiki

https://github.com/snorrees/cucumber-game

https://github.com/snorrees/cucumber-game/wiki

 

Galgebakken
Tårnplass
Be The Naturalist! Or: Sorry, Your Mum Is Not a Valid Test Participant
Michael Rawling

Speaking to the right users and getting more than feature requests

 

"If you want understand how a Lions hunts, don’t go to the Zoo, go to the Savannah."

 

User Research is one of the cornerstones of UX but the sheer volume of techniques around, combined with jargon and ‘silo’d teams often means the fundamental goal of many approaches like UX and XP always seems beyond reach:

 - To bring together (understanding of) the people who use a system with those who actually create it.


Mike Rawling, a ux veteran of products and projects of all sizes and shapes, takes attendees on a safari through the world of user research techniques, combining tried and tested formal UX experiences with the latest practical techniques, hot from the ux trenches you can use as a team. These include methods for user interviews, agile ethnography, user observation and practically testing your ideas with users in a measured way that fits right into the world of digital design and development: without compromising either UX or your XP, Agile, Lean or other development principles. 

Those new to UX, new to user research or struggling with getting good feedback will come away from this session with an introduction to using the right types of user research in your Agile/Lean/XP process so they serve as an invaluable source of intelligence for you, your team and stakeholders, whilst most UX practitioners will come away with techniques that can help them solve the conundrum of ensuring rigorous user research in a rapidly changing landscape of disrupted devices, platforms and markets.

 

 

 

                                                                                                      

Tårnplass
Dragefjellet
Muséplass
Teatergaten
The WSJF City Simulation: Program & Portfolio Prioritisation in Practice.
Martin Burns

Purpose:

To discover and explore rational, economics-based prioritisation through
explanation, discussion and dramatised simulation, so that
we are prepared to use it in our own environment.

Don Reinertsen’s fully quantified Cost of Delay model for prioritising backlogs sourced from many stakeholders is inspired, but many organisations struggle with implementing it and abandon attempts to have a rational discussion about value because “it’s too hard to quantify in real money”. And often, it is hard to forecast real money, and other factors such as Risk really do play a part in understanding value.

This simulation provides a concrete model that enables exploration of a practical CoD prioritisation and sequencing model (based on the version used in SAFe) and an experience of operating it in a group setting.

The scenario involves a property developer building a satellite city and evaluating the Cost of Delay of various housing estates, shops and other developments. Initially framed at the Epic level, every group receives a list of 9 Epics to evaluate along with a good supply of planning poker cards...

--

My experience is that WSJF gives a fantastic language to talk about prioritisation with business stakeholders. I have used it at multiple layers of abstraction, all the way up to CxO level, with the consistent outcome of "We want this, and we want it NOW"

It is particularly effective when you have business stakeholders with conflicting interests and little shared management interest in resolving disputes. It gives a clear explanation (particularly those whose treasured features don't get prioritised) of why the order is what it is, and so signfiicantly reduces stakeholder conflict.

Teatergaten
Strangehagen
Hands on workshop with ELK: Elasticsearch, Logstash and Kibana
Sigmund Hansen and Marco Bertani-økland

ELK consist of three open source projects — Elasticsearch, Logstash, and Kibana — designed to take data from any source and search, analyze, and visualize it in real time. The philosophy behind these tools is that getting immediate, actionable insight from data matters.

During this workshop we will teach you how to:

  • Set up and configure ELK

For more information, take a look at https://www.elastic.co/

What we expect from you:

  • Not afraid to use a shell, though commands will be served
  • Hands on
  • Eager to learn a new technology
  • Not afraid to ask questions

Get prepared

  1. Clone our github repo branch master at https://github.com/mbertani/elk-workshop/
    git clone --recursive https://github.com/mbertani/elk-workshop/

    # or if you have already cloned with "git clone https://github.com/mbertani/elk-workshop/"
    # you have to initialize the reveal.js submodule with this command inside the elk-workshop directory:
    git submodule update --init --recursive

    # switch to branch booster2016
    git checkout booster2016
  2. Follow instructions at Readme.md
  3. The presentation is in https://github.com/mbertani/elk-workshop/blob/booster2016/presentation/presentation.html
    After you clone the repository, you can run the presentation in your browser 
  4. Probably you should run a "git pull" the day of the workshop to make sure you get the latest changes.
  5. This workshop has been tested before in windows and linux. There are some issues with Ruby if you are using OSX.
Strangehagen
Hødden
Downstairs — Coffee break
Galgebakken
Cucumber - Behaviour Driven Development for the masses (cont.)
Snorre Brekke

Lost in translation

Have you ever had a new features returned under the heading "This is not what we wanted!"?

Developers, testers and product-owners often have very different views on how software should work. Unless they all talk together, misunderstandings can quickly creep in, leading to cost-overruns and confusion.

BDD (behavior driven development) is TDD taken to the next level. Start with spesification by example, and implement the feature as specified. It aims to bridge the void between developers, testers and product-owners, through a shared understanding of the subject matter. Cucumber allows a fluid translation of natural language into runnable specifications.

Agenda

In this workshop, we delve into Cucumber using the Java implementation.

First we will cover the basics of getting Cucumber up and running using JUnit, and write some simple spesifications.

Then we jump into the deep end, where we will try to learn a new domain by examining the Cucumber spesification of a small game.

Building on the already existing code base we will expand and improve upone the spec.

During the brunt of the workshop we will implement increasingly more complex user stories. As we expand our codebase, we have a running suite of acceptance tests to lean back on - if we break something, the reason should be clear.

Can spesification by example help us understand our code better? And is Cucumber a useful tool for the job?

Come and find out!

Code & Wiki

https://github.com/snorrees/cucumber-game

https://github.com/snorrees/cucumber-game/wiki

 

Galgebakken
Tårnplass
Be The Naturalist! Or: Sorry, Your Mum Is Not a Valid Test Participant (cont.)
Michael Rawling

Speaking to the right users and getting more than feature requests

 

"If you want understand how a Lions hunts, don’t go to the Zoo, go to the Savannah."

 

User Research is one of the cornerstones of UX but the sheer volume of techniques around, combined with jargon and ‘silo’d teams often means the fundamental goal of many approaches like UX and XP always seems beyond reach:

 - To bring together (understanding of) the people who use a system with those who actually create it.


Mike Rawling, a ux veteran of products and projects of all sizes and shapes, takes attendees on a safari through the world of user research techniques, combining tried and tested formal UX experiences with the latest practical techniques, hot from the ux trenches you can use as a team. These include methods for user interviews, agile ethnography, user observation and practically testing your ideas with users in a measured way that fits right into the world of digital design and development: without compromising either UX or your XP, Agile, Lean or other development principles. 

Those new to UX, new to user research or struggling with getting good feedback will come away from this session with an introduction to using the right types of user research in your Agile/Lean/XP process so they serve as an invaluable source of intelligence for you, your team and stakeholders, whilst most UX practitioners will come away with techniques that can help them solve the conundrum of ensuring rigorous user research in a rapidly changing landscape of disrupted devices, platforms and markets.

 

 

 

                                                                                                      

Tårnplass
Dragefjellet
Muséplass
Teatergaten
The WSJF City Simulation: Program & Portfolio Prioritisation in Practice. (cont.)
Martin Burns

Purpose:

To discover and explore rational, economics-based prioritisation through
explanation, discussion and dramatised simulation, so that
we are prepared to use it in our own environment.

Don Reinertsen’s fully quantified Cost of Delay model for prioritising backlogs sourced from many stakeholders is inspired, but many organisations struggle with implementing it and abandon attempts to have a rational discussion about value because “it’s too hard to quantify in real money”. And often, it is hard to forecast real money, and other factors such as Risk really do play a part in understanding value.

This simulation provides a concrete model that enables exploration of a practical CoD prioritisation and sequencing model (based on the version used in SAFe) and an experience of operating it in a group setting.

The scenario involves a property developer building a satellite city and evaluating the Cost of Delay of various housing estates, shops and other developments. Initially framed at the Epic level, every group receives a list of 9 Epics to evaluate along with a good supply of planning poker cards...

--

My experience is that WSJF gives a fantastic language to talk about prioritisation with business stakeholders. I have used it at multiple layers of abstraction, all the way up to CxO level, with the consistent outcome of "We want this, and we want it NOW"

It is particularly effective when you have business stakeholders with conflicting interests and little shared management interest in resolving disputes. It gives a clear explanation (particularly those whose treasured features don't get prioritised) of why the order is what it is, and so signfiicantly reduces stakeholder conflict.

Teatergaten
Strangehagen
Hands on workshop with ELK: Elasticsearch, Logstash and Kibana (cont.)
Sigmund Hansen and Marco Bertani-økland

ELK consist of three open source projects — Elasticsearch, Logstash, and Kibana — designed to take data from any source and search, analyze, and visualize it in real time. The philosophy behind these tools is that getting immediate, actionable insight from data matters.

During this workshop we will teach you how to:

  • Set up and configure ELK

For more information, take a look at https://www.elastic.co/

What we expect from you:

  • Not afraid to use a shell, though commands will be served
  • Hands on
  • Eager to learn a new technology
  • Not afraid to ask questions

Get prepared

  1. Clone our github repo branch master at https://github.com/mbertani/elk-workshop/
    git clone --recursive https://github.com/mbertani/elk-workshop/

    # or if you have already cloned with "git clone https://github.com/mbertani/elk-workshop/"
    # you have to initialize the reveal.js submodule with this command inside the elk-workshop directory:
    git submodule update --init --recursive

    # switch to branch booster2016
    git checkout booster2016
  2. Follow instructions at Readme.md
  3. The presentation is in https://github.com/mbertani/elk-workshop/blob/booster2016/presentation/presentation.html
    After you clone the repository, you can run the presentation in your browser 
  4. Probably you should run a "git pull" the day of the workshop to make sure you get the latest changes.
  5. This workshop has been tested before in windows and linux. There are some issues with Ruby if you are using OSX.
Strangehagen
Hødden
Restaurant — Lunch
Galgebakken
Tårnplass
Dragefjellet
Muséplass
Teatergaten
Beyond the Like Button: Designing for Social Identity
Victor Yocco

Users and clients expect digital experiences to allow for social interaction. Because of this, digital design teams are constantly pushed to include social aspects into their products. Incorporating effective social interactions into an experience isn’t as simple as placing a “Like” button on every page. Designing a successful, usable and influential social experience requires thoughtfulness and a conscious effort.

This workshop will focus on how design teams can address users' social identities to create meaningful social interactions. Social Identity Theory provides a framework for design teams to thoughtfully incorporate elements of social influence within their work. We will define and discusses key elements of Social Identity Theory, using relevant examples from digital design. Attendees will work together to explore the potential social identities of their users, potential users, and non-users. We will explore what types of social interactions might be most appropriate for the various experiences attendees design. We will also look at creating an experience that addresses meaningful social experiences at a holistic level.

You will learn:

  • How to use psychological principals as a framework for design
  • Key components of Social Identity Theory
  • How components of Social Identity Theory are applied to popular websites and digital products
  • Questions that should be asked when incorporating any type of social experience into design
  • Why they should explore their users' social identities and address these in their design
Teatergaten
Strangehagen
Hødden
Downstairs — Coffee break
Dragefjellet — See you next year