Recently, I’ve been working with a project team embracing code reviews. The experience wasn’t pleasant. Most of the time, it was downright annoying. The general idea of code reviews is that one of your team members dedicates several hours of their precious time to look at your code and help you to improve it. That’s […]
Infer is a static code analysis tool promising finding many bugs that escape the attention of many other tools. My curiosity was piqued. The result was underwhelming: Infer found four possible NullPointerExceptions in the source code of BootsFaces. Later I ran SonarQube. It found many other potential NullPointerExceptions. Any in both cases, half of the […]
The previous article of this series explained how humans run software tests. Or rather, being an “in a nutshell” article, it gave a very brief overview. Now let’s continue the article with the testing techniques involving test automation.
The previous article in this series explained why it takes so many techniques to ensure software quality. This article explains a couple of these techniques. Test methods in a nutshell When I started investigating for this article, I stumbled upon a post resonating many of my thoughts on testing. In the meantime, the post has […]
Each time I write about unit testing, people get angry. So let me explain why I rant about unit tests every once in a while. First of all, there’s nothing wrong with unit testing. That’s not the point. Usually, I start ranting when I notice people believe in unit tests religiously. Many good developers seem […]
Everybody knows that unit tests are valuable. So it’s a lot of fun playing Devil’s advocate as I did some time ago when I raved about the value of compiler checks for keeping up the quality of your program. So here we go: unit tests are expensive. You never know when or if they pay […]
Sigh! Today I’ve been wading knee-deep through all-to-clean code. Code that might have been written in a textbook. Code following the style – yeah, once I was young and naive enough to believe the textbooks without asking – I taught at university. Code that follows all the best practices. Code following the rules of the […]
I always wondered how to write truly efficient and useful unit tests. So I’m glad my co-worker Thomas Papendieck offered to write a guest article, sharing his expertise with you. Thomas, it’s your stage! Unit tests are cool! Unit tests secure already existing behavior in the code base and support the programmer while doing changes […]
Last week I’ve blogged about Cucumber and Selenium. In the meantime, my enthusiasm has cooled down considerably. I ran into a host of problems. Browsers simply aren’t intended to be controlled remotely. Quite the contrary. A remote control for your browser is a hacker’s dream. As a consequence, browsers tend to resist the remote control. […]
Do you know anybody who loves to test their code? I don’t. Granted, there are those guys raving about the test first approach, but I always wonder which drugs they take. Maybe I’ve found the answer. Maybe it’s a simple Cucumber. No, I’m not talking about the green stuff some of you grow in your […]
There are two strategies to write JUnit test for JSF applications. The first strategy uses a tool like Arquillian to start both an application server and a browser that runs a JSF application. Yeray Santana Borges used this strategy to contribute a couple of JUnit tests to BootsFaces. This approach has many advantages. It runs […]
Basically, Continuous Delivery is simply a clever idea to make software development more simple, more reliable and more efficient. Sounds like simply tweaking the development process here and there, doesn’t it? But when you’re an experienced developer starting with Continuous Delivery, you’ll be surprised to meet a whole bunch of new tools you’ve never heard […]
The other day I’ve been reviewing another department’s code. Soon I was puzzled by the way they use exceptions. They use them very often and in unexpected ways. I examined a very small module, just a handful of classes, and the vast majority of the classes were exceptions. After a while it crossed my mind […]
You already know SonarQube, I suppose? If you don’t, don’t waste your precious reading this article. You’d rather have a look at their live demo first. Nemo shows the result of SonarQube’s analysis of quite a few popular open source projects. But wait, I’d like to tell you what Sonar is about first. After that […]
This morning Heise published an article I found exciting at first glance. They claim Python has a superior software quality. At second sight thing look a little different. According to the comments, the article contains a number of mistakes. Maybe even worse, it’s utterly misleading. The study they cite says Python is high-quality software. They […]
I want my code to be simple, short and concise. I hate silly boiler plate code. Code that doesn’t add business value is code I don’t want to see. Welcome to the Java world. Well-educated Java classes – and beans in particular – consist almost entirely of boiler plate code. Sometimes it’s hard to spot […]
Why – yes, I do!
Maybe you’ve already heard of Ceylon. Ceylon’s a language initiated by Gavin King, the creator of both Hibernate and Seam. Putting it in a nutshell, Ceylon is an attempt to create a better version of Java. The Ceylon developer team has released an early preview version (milestone 5). Andrew C. Oliver considered it to be […]
One of the best ways to improve your programming skills is to read code written by others. Today I was puzzled by a program that did work – but I couldn’t find out why. As I found out, it’s a fairly clever piece of code, and I guess you can learn a lot by reading […]
It’s a common misconception that every program needs documentation. Most people seem to be terribly scared by programs lacking documentation. Whenever I am asked where my documentation is, inevitably this question is followed by the next question: “What happens if you leave the company? Nobody´ll be able to figure out your code!” That’s nonsense.