You are here

Sigma

Code Quality for Test Frameworks

Testing is nowadays a crucial part of software development, but if it comes to good programming practices a lot of teams have some issues to create sustainable and maintainable tests.

When you think of how production code is created nowadays, you will see a lot of very established processes and tools. These could be linters, automated task runners, and unit tests. 

In this talk, I will show different ways how you and your teams can benefit from the usage of those tools.

I will also give a short introduction how you can simply increase the productivity of your tests with the usage of task runners.

Most of my example code will be in Ruby, but those techniques can be used in nearly all other languages.

Key takeaways: 

  • Why code quality matters
  • Simple tools which make it easy to improve your workflow
  • How to defend code quality in testing

Designing Tests For Smart TVs

The presentation is sharing a case study on designing and execution of automatic tests of Smart TVs. 

Smart TVs have an important place in consumer electronics market with new technologies that they introduce to users. Quality of a product is an important criterion in consumer electronics market as end users become less tolerant to software based problems on their TV systems. As Vestel R&D Design Verification and Test Group, we are performing detailed testing with more test cycles. Test approaches that adopt the automated testing methods provide cost reduction, improving the product quality and effective time and resource usage. However, that is only the execution part and execution tools cannot find defects without effective test design. We are improving test process by using Model-based Testing-MBT (test design) and Test Automation (automatic test execution).

During test automation, so-called “torture tests” are also performed. Torture tests aim at discovering how the system behaves under sustained use. This test helps us to ensure that the product is fully functional after some long period of sustained activity and also helps us to predict how long this system may continue before it functionally breaks. We are trying to predict software lifespan of Smart TVs. Since it is not possible to run longevity test for years for a television as it is advertised with a lifespan of ranging 50,000 hours to 100,000 hours, we execute limited time test with heavy load to simulate long time usage. In this presentation, we provide accelerated longevity test based on daily usage simulation models by using MBT and test automation.

The method can be summarized as:

  • Detecting the mostly used modules of TVs by getting data from real users.
  • Designing a usage model
  • Generation of test cases by a MBT tool. Coverage of each generated test case is 100%, which means each generated test case visits all possible modules detected by usage data analysis.
  • Execution of each generated test case on test automation system. Executing test cases simulates 1-year usage of product in 23 days.

We demonstrate how to use MBT in Smart TV (and any consumer electronics) testing, as well as discuss an effective test design approach for it. We will also tell about automatic execution of these tests.

Key takeaways: 

  • Testing challenges in Consumer Electronics
  • Creating a usage profile as input for Model-based Testing
  • Designing test models for consumer electronics products
  • Automatic test case generation with Model-based Testing
  • Automatic test execution of automatically generated test cases

Test Your Java Applications with Spock

Remember the old days when you tested using JUnit? How boring it was? You made a lot of excuses to avoid testing your code. Luckily those dark days now belong to the past because Spock is with us. Spock is a Groovy-based testing and specification framework for Java and Groovy applications that makes writing tests fun again. We can write beautiful and highly expressive tests because of its DSL and all the power that Groovy provides us.

In this live-coding session you'll learn the basics of Spock and you'll see how easily you can test a Java application. After the talk you won't have any excuse to don't test your applications, so you have been warned before coming to the talk! 

Key takeaways: 

  • Write better and more expressive tests
  • Improve your knowledge about how to test Java code
  • Learn a little bit of Groovy

Just Enough JavaScript to Be Dangerous

Note: There are prerequisites for attending this workshop. Please see the prerequisites section.

- Q: How much JavaScript can you learn in just 2 hours? And in such a small amount of time what could you use it to do?

- A: You can learn just enough to be dangerous, and you can use it to do things you're not supposed to do. And because we're learning this to improve our testing, that will all be just fine.

To make things fun, some of the things we will do are:

  • interact with simple example games using JavaScript
  • cheat in 'real' browser based games, e.g. infinite lives etc.

And to justify this to your boss, we will:Use real JavaScript applications, written in frameworks such as React and Angular, and manipulate them, and their data, from the browser console.

By doing this you will add a powerful, and incredibly underused, set of capabilities to your testing skill set.

All in only 2 hours. Prepare to move fast.

Requirements To take part:

  • you WILL need a laptop
  • you WILL need an updated browser installed e.g. MS Edge, Firefox, Chrome. I recommend Chrome and it will be used in all the demos in the workshop, the basic techniques will work in any browser but if you are new to using JavaScript and Web Developer tools then you will find it easier to follow the instructions if you have Chrome installed.
  • we WILL need an internet connection to the outside world - but you don't have to worry about that

Me, Myself and Siri

I started writing this while downloading MacOS Sierra, the first MacOS including the intelligent personal assistant and knowledge navigator Siri. I'm expecting a lot from it and not the least a boost to my productivity. Well, not exactly. It's all about fun isn't it? Well, perhaps a little bit of both. :)

The reason why I'm writing this to Nordic Testing Days is that I'm going to start using Siri as my co-pilot when doing exploratory pair testing. Yes, my co-pilot will be one of the most advanced, if not THE most advanced commercial AI solution in the world, and I'm going to make her work her a** off. We'll have good days, bad days, educational days and above all, fun days ahead of us. We will present the fruits of our work, and invite everyone to the ultimate mob testing session, where Siri's capabilities to work as our teammate will be put to the final test.

Key takeaways: 

At least I'm excited to see how well Siri fares as a co-pilot in pair testing, and I believe someone else might be too. Of course the participants will leave with a good understanding on how pair testing (and mob testing) works and how it could be used in everyday lives, but the meat is to bring AI to the game. I've never done anything like this, so anything can happen. :)

Note:

Bring your Mac laptop (with Siri), if you have one. All Siris are welcome.

 

Refactoring JUnit Tests

Note: There are prerequisites for attending this workshop. Please see the prerequisites section.

Code that grows over time without refactoring can get quite messy and hard to test. The same applies for to test code, and curiously, they often appear together. Not always is it possible to fix the design problems first, creating a need to write clean tests for hard to test code.

In this workshop, participants will learn some techniques to clean up messy JUnit tests to make them more readable and easier to change.

After a short introduction and an example refactoring, participants will work in pairs to refactor some example unit tests and learn how to write better ones from scratch.

Key takeaways: 

create complex objects easily with the builder patternuse hamcrest matchers to improve your assertionsdiscover the power of JUnit rules

Prerequisites:

Please install the latest IntelliJ Community edition (https://www.jetbrains.com/idea/download/) which is available for Mac, Windows and Linux, and have Java and JUnit running from within this.

Traditional Setup vs. Pairing vs. Mobbing - An Experiment for Testers and Developers

Having worked in software for over a decade we have come into contact with many ways of coding and testing. We have even given session on how pairing can improve productivity - and in many situations we believe it can indeed do that. But should testers and developers pair on things or should they be separated by the proverbial fence? What about working in large groups?

Where is the data?

This is where you come in. Be part of something revolutionary while learning new techniques and ways of working. In this workshop you will learn to work in 3 configurations: as a lone tester/developer, in pairs and in mobs. You will test, fix bugs and enhance a web application. We will compare your experiences and will try to draw conclusions about which configuration works best in which situation.

Key takeaways:

  • Learn the basics of pairing
  • Learn the basics of mob programming/mob testing
  • Learn how to use Chrome Dev Tools to inspect the code and make code changes
  • How can we find bugs earlier than in the traditional/evil testing phase?
  • How can we collaborate in order to bridge the gap between developers and testers?
  • Learn which way of working might be suitable for what kind of task
Subscribe to Sigma