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.

PHP Hypertext Processor

  • 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…
  • Refactoring Basics: Extract Method

    by Benjamin Eberlei on Tue, 07 Mar 2017 08:56:52 +0100

    Refactoring is the process of restructuring code without changing its behaviour and the technique "Extract Method" is one of the most important building blocks of refactoring. What do you need to keep in mind while doing this?

    Read more on Refactoring Basics: Extract Method…
  • Extended Definition Of Done

    by Kore Nordmann on Fri, 17 Feb 2017 09:30:03 +0100

    When software projects grow it is considered helpful if the software follows an established structure so that every developer finds their way easily. If the used structures and patterns change per developer or even every couple of months or years it will get really hard to maintain the software. Let's discuss the reason for this and possible fixes.

    Read more on Extended Definition Of Done…
  • Refactoring: Extracting Data Objects

    by Tobias Schlitt on Tue, 07 Feb 2017 09:35:57 +0100

    Extracting data objects from your code will make it easier to read and write, easier to test and more forward compatible. This post shows you the two most common cases where introducing a data object makes sense and how to do it.

    Read more on Refactoring: Extracting Data Objects…
  • Refactoring Should not Only be a Ticket

    by Tobias Schlitt on Tue, 24 Jan 2017 09:11:15 +0100

    In this blog post I would like to elaborate a bit further on why refactoring should never only be a dedicated task on your board. It should be an essential part of every task you work on…

    Read more on Refactoring Should not Only be a Ticket…
  • Getting Rid of static

    by Kore Nordmann on Tue, 10 Jan 2017 07:32:43 +0100

    When people start (unit-)testing their code one of the worst problems to tackle are static calls. How can we refactor static calls out of an existing application without breaking the code and while producing new features? How can we get rid of this big test impediment?

    Read more on Getting Rid of static…
  • Free eBook For Christmas

    by Kore Nordmann on Mon, 22 May 2017 08:24:58 +0200

    This year we do not only have Christmas presents for our customers for all of you. We created a book and an ebook out of the most important articles in our blog. Gave them a sensible order, so that you can read and enjoy them on even more devices.

    Read more on Free eBook For Christmas…
1 - 2 - 3 - 4 - 5 ... - 9