Qafoo GmbH - passion for software quality

Help you and your team benefit from new perspectives on cutting-edge quality engineering techniques and tools through the Qafoo team weblog.

Qafoo Team Blog

  • Methods Of Teaching

    by Kore Nordmann on Wed, 28 Jun 2017 07:26:46 +0200

    There are many different ways to teach topics of software developments. From recorded lectures to pair programming. Over the time we tried many of them with different customers and different topics. I want to provide you with an overview of what worked best for us for which topic.

    Read more on Methods Of Teaching…
  • Refactoring Singleton Usage to get Testable Code

    by Benjamin Eberlei on Tue, 11 Jul 2017 08:48:44 +0200

    So your code base is littered with singletons and using them? Don't worry, you can start refactoring them out of your code base class by class and introduce increased testability at every step. This strategy is very simple to implement and the propability of breaking your code is very low, especially when you are becoming more experienced with this technique.

    Read more on Refactoring Singleton Usage to get Testable Code…
  • Crafting Quality Software 2.0

    by Kore Nordmann on Fri, 30 Jun 2017 09:58:18 +0200

    The second version of our book "Crafting Quality Software – Gems From the Qafoo Blog" is ready and available for download from now on. In the recent months we wrote a lot about refactoring techniques, technical patterns and workflows. This is a topic very close to our hearts and we feel that an update of our book was due.

    Read more on Crafting Quality Software 2.0…
  • Five Tips to Improve Your Unit Testing

    by Tobias Schlitt on Fri, 16 Jun 2017 09:45:16 +0200

    After you got the hang of unit testing there is still so much space for improvement. In this post I want to share five tips with advanced testers I have seen to influence testing in the right direction.

    Read more on Five Tips to Improve Your Unit Testing…
  • Refactoring with the Advanced Boy Scout Rule

    by Tobias Schlitt on Fri, 12 May 2017 11:32:46 +0200

    When we join teams to coach them with refactoring their legacy code base, many of them are overwhelmed by the sheer mass of code. That typically results in the request for "some refactoring sprints" or even "a complete rewrite". Both is obviously not a solution from the business perspective - feature development and bug fixing needs to go on and the refactoring should not eat up the larges portion of time. But where and how should the team start and how should? What we call the "Advanced Boy Scout Rule" has helped many teams to come over this staleness and reach fast results while continuing to deliver business value.

    Read more on Refactoring with the Advanced Boy Scout Rule…
  • Extracting Value Objects

    by Benjamin Eberlei on Fri, 19 May 2017 06:58:52 +0200

    Software systems usually get more complex over time. In the beginning a variable starts out to represent something very simple with very few rules and constraints that can are enforced in a single location of the code. We will show you how you can use value object extraction to avoid spreading logic everywhere.

    Read more on Extracting Value Objects…
  • Testing the Untestable

    by Manuel Pichler on Tue, 21 Mar 2017 14:09:56 +0100

    A long time ago I wrote a blog post about Testing file uploads with PHP where I have used a CGI PHP binary and the PHP Testing Framework (short PHPT), which is still used to test PHP itself and PHP extensions. Since the whole topic appears to be still up-to-date, I would like to show a different approach how to test a fileupload in PHP in this post. This time we will use PHP's namespaces instead of a special PHP version to test code that utilizes internal functions.

    Read more on Testing the Untestable…
  • How You Can Successfully Ship New Code in a Legacy Codebase

    by Benjamin Eberlei on Mon, 22 May 2017 08:24:58 +0200

    Usually the problems software needs to solve get more complex over time. As the software itself needs to model this increased complexity it is often necessary to replace entire subsystems with more efficient or flexible solutions. Instead of starting from scratch whenever this happens (often!), a better solution is to refactor the existing code and therefore reducing the risk of losing existing business rules and knowledge. A good strategy for this kind of change is called "Branch By Abstraction". While the term is certainly clumsy and overloaded, the idea itself is genious. Let's see how it works…

    Read more on How You Can Successfully Ship New Code in a Legacy Codebase…
  • Loving Legacy Code

    by Tobias Schlitt on Tue, 21 Mar 2017 14:05:11 +0100

    Many developers want to "rewrite the whole application" and "get rid of all that sh*t". Most of them are pretty blank when I tell them that I really like working on such code bases, even if I just jumped into the code. I recently talked about that to the other Qafoo members and all of them agreed to my views. Therefore I want to explain our love of legacy code in this post.

    Read more on Loving Legacy Code…
  • How to Perform Extract Service Refactoring When You Don't Have Tests

    by Benjamin Eberlei on Tue, 21 Mar 2017 10:06:55 +0100

    When you are refactoring in a legacy codebase, the goal is often to reduce complexity or separate concerns from classes, methods and functions that do too much work themselves. Primary candidates for refactoring are often controller classes or use-case oriented service classes (such as a UserService). Extracting new service classes is one popular refactoring to separate concerns, but without tests it is dangerous because there are many ways to break your original code – we show you how this can still be done.

    Read more on How to Perform Extract Service Refactoring When You Don't Have Tests…
1 - 2 - 3 - 4 - 5 ... - 10 - ... - 11