<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Quality Assurance in PHP Projects</title>
    <link>http://qualityassuranceinphpprojects.com/</link>
    <description></description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.1 - http://www.s9y.org/</generator>
    
    

<item>
    <title>Almost Done</title>
    <link>http://qualityassuranceinphpprojects.com/archives/17-Almost-Done.html</link>
            <category>News</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/17-Almost-Done.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=17</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=17</wfw:commentRss>
    

    <author>nospam@example.com (Sebastian Bergmann)</author>
    <content:encoded>
    &lt;a href=&quot;http://www.flickr.com/photos/sebastian_bergmann/4564742479/&quot; title=&quot;Lucid Lynx by Sebastian Bergmann, on Flickr&quot;&gt;&lt;img src=&quot;http://farm5.static.flickr.com/4029/4564742479_4b49b68ca2_m.jpg&quot; width=&quot;240&quot; height=&quot;140&quot; alt=&quot;Lucid Lynx&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
We are almost done with the manuscript for the &lt;a href=&quot;http://qualityassuranceinphpprojects.com/pages/german_edition.html&quot;&gt;German edition&lt;/a&gt; (&lt;a href=&quot;http://www.amazon.de/gp/product/3446419233?ie=UTF8&amp;tag=sbergmann&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=3446419233&quot;&gt;preorder at Amazon.de&lt;/a&gt;) of the book. In a couple of days we can focus on getting the manuscript for the &lt;a href=&quot;http://qualityassuranceinphpprojects.com/pages/english_edition.html&quot;&gt;English edition&lt;/a&gt; (&lt;a href=&quot;http://www.amazon.com/Real-World-Developing-High-Quality-Frameworks-Applications/dp/0470872497/&quot;&gt;preorder at Amazon.com&lt;/a&gt;) ready for the publisher. 
    </content:encoded>

    <pubDate>Fri, 30 Apr 2010 13:30:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/17-guid.html</guid>
    
</item>
<item>
    <title>Update</title>
    <link>http://qualityassuranceinphpprojects.com/archives/16-Update.html</link>
            <category>News</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/16-Update.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=16</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=16</wfw:commentRss>
    

    <author>nospam@example.com (Sebastian Bergmann)</author>
    <content:encoded>
    It has been quiet on this website since we posted the last contributed chapter abstract in June and it is time to give you an update. But first, allow me to refresh your memory on the list of contributed chapters:&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Best Practices&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/10-TYPO3-The-Agile-Future-of-a-Ponderous-Project.html&quot;&gt;TYPO3: The Agile Future of a Ponderous Project&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/15-Unit-Testing-Bad-Practices-by-Example.html&quot;&gt;Unit Testing Bad Practices by Example&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/7-Quality-Assurance-at-Digg-Inc..html&quot;&gt;Quality Assurance at Digg&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Servers and Services&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/14-Testing-Service-Oriented-APIs.html&quot;&gt;Testing Service Oriented APIs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/4-Testing-a-WebDAV-Server.html&quot;&gt;Testing a WebDAV Server&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/5-Testing-Database-Interaction.html&quot;&gt;Testing Database Interaction&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Architecture&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/11-Testing-Symfony-and-Symfony-Applications.html&quot;&gt;Testing Symfony and Symfony Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/8-Testing-the-ezcGraph-Component.html&quot;&gt;Testing the ezcGraph Component&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;QA in the Large&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/6-Large-Scale-Selenium-Based-Testing.html&quot;&gt;Large-Scale Selenium-Based Testing at studiVZ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/13-Continuous-Integration-with-phpUnderControl.html&quot;&gt;Continuous Integration with phpUnderControl&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/3-swoodoo-A-True-Agile-Story.html&quot;&gt;swoodoo: A True Agile Story&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Non-Functional Aspects&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://qualityassuranceinphpprojects.com/archives/2-Performance-Testing.html&quot;&gt;Performance&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Usability&lt;/li&gt;&lt;li&gt;Security&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;As we only have a deadline for the German edition so far and since we received the majority of contributed chapters in English, Stefan and I are currently busy translating the contributed chapters from English to German in an effort to meet our deadline. We are currently looking at a release date for the German edition in late spring / early summer of 2010.&lt;br /&gt;
&lt;br /&gt;
Once we have finished the manuscript for the German edition, we will start working on the manuscript for the English edition. Hopefully, this process will be much faster as we only need to translate a couple of chapters from German to English. We are hopeful that the English edition will be available not much later than the German edition. 
    </content:encoded>

    <pubDate>Wed, 04 Nov 2009 09:30:00 +0100</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/16-guid.html</guid>
    
</item>
<item>
    <title>Unit Testing Bad Practices by Example</title>
    <link>http://qualityassuranceinphpprojects.com/archives/15-Unit-Testing-Bad-Practices-by-Example.html</link>
            <category>Practices and Tools</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/15-Unit-Testing-Bad-Practices-by-Example.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=15</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=15</wfw:commentRss>
    

    <author>nospam@example.com (Benjamin Eberlei)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Although &lt;a href=&quot;http://en.wikipedia.org/wiki/Unit_testing&quot;&gt;Unit Testing&lt;/a&gt; is a recommended practice for any software project, care has to be exercised such that testing yields the desired benefits. Bad programming practices in both test code and production code can make Unit Testing a nightmare. Maintenance of an overly complex test suite can easily become a burden to the project team.&lt;/p&gt;&lt;p&gt;Situations of hard to maintain test code can have extremely negative outcomes for project quality. Programmers start to ignore tests, because of their inconclusive description of what is going wrong. New features might not be tested at all, because writing tests for the current architecture considerably extends development time. In the end the project manager might decide to stop Unit Testing alltogether, because the costs outweight the benefits.&lt;/p&gt;&lt;p&gt;Bad practices of Unit Testing manifest in so called &quot;&lt;a href=&quot;http://xunitpatterns.com/Test%20Smells.html&quot;&gt;Test Smells&lt;/a&gt;&quot;. These are an early indicator of problems for long-run maintainability and utility of a project test suite. To constantly derive a benefit from Unit Tests, a commitment for high quality tests has to be made.&lt;/p&gt;&lt;p&gt;This case study will discuss Unit Testing bad practices and well as Test Smells and gives hints on how to avoid them. For each test smell, examples are shown from well-known PHP Open Source projects. As a result, the reader should be aware of the possible pitfalls of Unit Testing and that any test code requires the same care that is put into production code.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Benjamin Eberlei is a Project Lead with direkt effekt GmbH and contributes to the Zend Framework and other Open Source projects.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 05 Jun 2009 12:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/15-guid.html</guid>
    
</item>
<item>
    <title>Testing Service-Oriented APIs</title>
    <link>http://qualityassuranceinphpprojects.com/archives/14-Testing-Service-Oriented-APIs.html</link>
            <category>Open Source Case Studies</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/14-Testing-Service-Oriented-APIs.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=14</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=14</wfw:commentRss>
    

    <author>nospam@example.com (Matthew Weier O'Phinney)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;One of &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt;&#039;s key strengths and differentiators in the crowded PHP framework arena is its offering of &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_Service&quot;&gt;web service&lt;/a&gt; consumer components. As of version 1.8.0, these include offerings for &lt;a href=&quot;http://en.wikipedia.org/wiki/Action_Message_Format&quot;&gt;Adobe AMF&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Akismet&quot;&gt;Akismet&lt;/a&gt;, Amazon (including &lt;a href=&quot;http://en.wikipedia.org/wiki/Amazon_EC2&quot;&gt;EC2&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Amazon_S3&quot;&gt;S3&lt;/a&gt; support), &lt;a href=&quot;http://en.wikipedia.org/wiki/AudioScrobbler&quot;&gt;AudioScrobbler&lt;/a&gt; from last.fm, &lt;a href=&quot;http://en.wikipedia.org/wiki/Delicious_%28website%29&quot;&gt;Del.icio.us&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Flickr&quot;&gt;Flickr&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/GData&quot;&gt;Google&#039;s GData&lt;/a&gt; services, &lt;a href=&quot;http://en.wikipedia.org/wiki/Nirvanix&quot;&gt;Nirvanix&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/ReCaptcha&quot;&gt;ReCaptcha&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Simpy&quot;&gt;Simpy&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Slideshare&quot;&gt;SlideShare&lt;/a&gt;, StrikeIron, &lt;a href=&quot;http://en.wikipedia.org/wiki/Technorati&quot;&gt;Technorati&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Twitter&quot;&gt;Twitter&lt;/a&gt;, and &lt;a href=&quot;http://en.wikipedia.org/wiki/Yahoo&quot;&gt;Yahoo!&lt;/a&gt; -- and more are planned or under development.&lt;/p&gt;&lt;p&gt;Offering components to interact with web services is relatively trivial -- but testing them offers a very different story. For &lt;a href=&quot;http://en.wikipedia.org/wiki/Continuous_Integration&quot;&gt;continuous integration&lt;/a&gt; purposes, it is typically better not to test against live services as this introduces network latency, and thus slows the testbed. Additionally, many services have API call limits, and automated test suites could easily rise far above these limits. There are also concerns about keeping sensitive API keys or credentials in the repository; some services are paid services, and such information would present a breach of security or contracts.&lt;/p&gt;&lt;p&gt;Over time, the Zend Framework team and contributors have developed a set of practices to address these issues that range from mocking the request and response payloads to offering different tests when credentials are provided via configuration. These practices can lead to well-tested service-oriented components and ensure that the end user experience is as documented.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Matthew Weier O&#039;Phinney works for Zend Technologies Ltd. and is the Project Lead for the Zend Framework.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 29 May 2009 12:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/14-guid.html</guid>
    
</item>
<item>
    <title>Continuous Integration with phpUnderControl</title>
    <link>http://qualityassuranceinphpprojects.com/archives/13-Continuous-Integration-with-phpUnderControl.html</link>
            <category>Practices and Tools</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/13-Continuous-Integration-with-phpUnderControl.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=13</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=13</wfw:commentRss>
    

    <author>nospam@example.com (Manuel Pichler and Sebastian Nohn)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;One of the most important events in large and distributed team projects is the &lt;a href=&quot;http://en.wikipedia.org/wiki/System_integration&quot;&gt;integration&lt;/a&gt; of all parts of the software system into a release. Often incompatibilities and hard-to-detect errors surface at that very moment and can harm the success of the project. The remedy for this problem is the practice of &lt;a href=&quot;http://en.wikipedia.org/wiki/Continuous_Integration&quot;&gt;Continuous Integration&lt;/a&gt;: a merge of all parts of the system as often as possible during the lifecycle of the project.&lt;/p&gt;&lt;p&gt;In this case study, we will take a look into the preconditions to start with Continuous Integration as well as the procedural and technical rationales of this approach. We will take a look at entering Continuous Integration in PHP projects with &lt;a href=&quot;http://phpundercontrol.org/&quot;&gt;phpUnderControl&lt;/a&gt;, a customization of the popular and established Continuous Integration server software &lt;a href=&quot;http://cruisecontrol.sf.net/&quot;&gt;CruiseControl&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Beyond Continuous Integration, this case study introduces the reader to the principles of &lt;a href=&quot;http://en.wikipedia.org/wiki/Static_testing&quot;&gt;Static Testing&lt;/a&gt; and how to instrument it to gain a better &lt;a href=&quot;http://en.wikipedia.org/wiki/Software_quality&quot;&gt;quality&lt;/a&gt;. Amongst other tools, the reader will learn how to successfully use tools such as &lt;a href=&quot;http://pear.php.net/package/PHP_CodeSniffer&quot;&gt;PHP_CodeSniffer&lt;/a&gt;, &lt;a href=&quot;http://pdepend.org/&quot;&gt;PHP_Depend&lt;/a&gt; and &lt;a href=&quot;http://github.com/sebastianbergmann/phpcpd/&quot;&gt;phpcpd&lt;/a&gt; for &lt;a href=&quot;http://en.wikipedia.org/wiki/Static_code_analysis&quot;&gt;Static Code Analysis&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;In conclusion, advanced usage scenarios of the discussed tools will be discusses with a particular focus on how to foster further principles of &lt;a href=&quot;http://en.wikipedia.org/wiki/Agile_software_development&quot;&gt;Agile Software Development&lt;/a&gt; methodologies and how to solve discrepancies with other targets of agile methodologies.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Manuel Pichler is the creator of phpUnderControl, PHP_Depend, and phpmd. Sebastian Nohn is the Team Lead Quality Assurance at Ligatus GmbH.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 22 May 2009 12:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/13-guid.html</guid>
    
</item>
<item>
    <title>Testing Symfony and Symfony Applications</title>
    <link>http://qualityassuranceinphpprojects.com/archives/11-Testing-Symfony-and-Symfony-Applications.html</link>
            <category>Open Source Case Studies</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/11-Testing-Symfony-and-Symfony-Applications.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=11</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=11</wfw:commentRss>
    

    <author>nospam@example.com (Fabien Potencier)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In this case study, we will talk about how the &lt;a href=&quot;http://www.symfony-project.org/&quot;&gt;Symfony&lt;/a&gt; framework itself is tested, but also about the tools the framework provides to ease testing the customer applications.&lt;/p&gt;&lt;p&gt;Although developers are well educated now about tests, it is still the most neglected part of a web development process. Most developers still think they cannot afford writing tests because it takes too much time. The Symfony framework tries to ease the creation of both unit tests and functional tests with a unique and simple approach. For instance, functional tests are done by simulating a browser experience, but with the possibility to introspect all internal objects between each request. It is also possible to validate the generated content easily and precisely thanks to CSS3 selectors.&lt;/p&gt;&lt;p&gt;Testing the framework itself also proved to be quite challenging, and we learned it the hard way: from code that is too coupled to be tested thoroughly, to the usage of design patterns like the Singleton. Over the years, the Symfony framework quickly evolved from our testing experience, and now provides a well decoupled, but cohesive set of components. For Symfony 2, the introduction of a &lt;a href=&quot;http://en.wikipedia.org/wiki/Dependency_Injection&quot;&gt;Dependency Injection&lt;/a&gt; container will be of great help to ease the testing process even more.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Fabien Potencier is the CEO of Sensio and the lead developer of Symfony.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 08 May 2009 12:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/11-guid.html</guid>
    
</item>
<item>
    <title>TYPO3: The Agile Future of a Ponderous Project</title>
    <link>http://qualityassuranceinphpprojects.com/archives/10-TYPO3-The-Agile-Future-of-a-Ponderous-Project.html</link>
            <category>Open Source Case Studies</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/10-TYPO3-The-Agile-Future-of-a-Ponderous-Project.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=10</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=10</wfw:commentRss>
    

    <author>nospam@example.com (Robert Lemke and Karsten Dambekalns)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;When Kasper Skårhøj wrote the first lines of PHP code laying the foundation for the &lt;a href=&quot;http://typo3.org/&quot;&gt;TYPO3&lt;/a&gt; CMS in 1998, he had not the slightest idea that a big part of the code he wrote would still be actively used ten years later. Adding the 3700 extensions contributed by an ever growing developer community resulted in an impressive amount of code - of varying quality.&lt;/p&gt;&lt;p&gt;Without surprise it soon became a challenge to assure a high quality and secure product. While the core developers were eager to add new features, the holy cow of backward compatibility was lurking at the next corner, waiting to be fed. The result is a feature-rich and solid but equally monolithic and complex pile of code that is, at best, hard to test. As a consequence we decided to rewrite TYPO3 from scratch.&lt;/p&gt;&lt;p&gt;In this case study we will share our experience with the technical and organisational techniques we have chosen for the development of TYPO3 version 5 and its foundation, the &lt;a href=&quot;http://flow3.typo3.org/&quot;&gt;FLOW3&lt;/a&gt; framework. It explains our pedantic pursuit of clean code, outlines our commit and coding guidelines and gives answers to tricky situations you face while writing and maintaining (true) &lt;a href=&quot;http://en.wikipedia.org/wiki/Unit_testing&quot;&gt;unit tests&lt;/a&gt;. Finally we demonstrate how a clean architecture can help you tackling the complexity of your application.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Robert Lemke and Karsten Dambekalns are core developers of both TYPO3 and FLOW3.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;A few recipes for writing good unit tests that are part of this case study are demonstrated in the &quot;Delicious Test Recipes&quot; episode of &lt;a href=&quot;http://typo3.org/podcasts/robert/&quot;&gt;Robert Lemke&#039;s podcast&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 01 May 2009 12:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/10-guid.html</guid>
    
</item>
<item>
    <title>Testing the ezcGraph Component</title>
    <link>http://qualityassuranceinphpprojects.com/archives/8-Testing-the-ezcGraph-Component.html</link>
            <category>Open Source Case Studies</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/8-Testing-the-ezcGraph-Component.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=8</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=8</wfw:commentRss>
    

    <author>nospam@example.com (Kore Nordmann)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;http://ezcomponents.org/docs/tutorials/Graph&quot;&gt;Graph&lt;/a&gt; component from the &lt;a href=&quot;http://ezcomponents.org/docs/tutorials/Graph&quot;&gt;eZ Components&lt;/a&gt; project provides an easy to use and extensible library for creating graphical charts. In the &lt;nobr&gt;eZ Components&lt;/nobr&gt; project we aim to develop test-driven, which resulted in two challenges developing this library.&lt;/p&gt;&lt;p&gt;The output generated by a Graph component is an image, which in most cases is binary-encoded data. Expectations are really hard to create by hand, it is only feasible to create functional tests replaying once created data. The actual image is generated by external libraries such as &lt;code&gt;ext/gd&lt;/code&gt;. These external libraries may change their exact output at any time, or even between two runs with the same version of the library. Comparisons of the generated images need to respect that and implement special assertions for the given type of binary data.&lt;/p&gt;&lt;p&gt;Testing the created binary data has proven to be prone to errors. Since the actual image generation has been abstracted away, we are able to use of different image creation mechanisms. Thanks to the &lt;a href=&quot;http://www.phpunit.de/manual/current/en/test-doubles.html&quot;&gt;support for mock objects&lt;/a&gt; in &lt;a href=&quot;http://www.phpunit.de/&quot;&gt;PHPUnit&lt;/a&gt;, all calls to the driver layer can be checked for correctness without actually generating images.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Kore Nordmann is an active member of the PHP community and works for &lt;nobr&gt;eZ Systems&lt;/nobr&gt; on the &lt;nobr&gt;eZ Components&lt;/nobr&gt;.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 17 Apr 2009 12:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/8-guid.html</guid>
    
</item>
<item>
    <title>Quality Assurance at Digg Inc.</title>
    <link>http://qualityassuranceinphpprojects.com/archives/7-Quality-Assurance-at-Digg-Inc..html</link>
            <category>Enterprise Case Studies</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/7-Quality-Assurance-at-Digg-Inc..html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=7</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    

    <author>nospam@example.com (Robert Balousek, Matt Erkkila, Ian Eure, Bill Shupp, Jeremy McCarthy and Brian O'Neill)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.digg.com/&quot;&gt;Digg&lt;/a&gt;&#039;s development philosophy has changed dramatically in the last year in an attempt to move towards a more &lt;a href=&quot;http://en.wikipedia.org/wiki/Agile_software_development&quot;&gt;agile&lt;/a&gt; and iterative approach. A large part of these sweeping changes is moving toward a &lt;a href=&quot;http://en.wikipedia.org/wiki/Test-driven_development&quot;&gt;test-driven development&lt;/a&gt; methodology with a minimum of 80% &lt;a href=&quot;http://en.wikipedia.org/wiki/Code_Coverage&quot;&gt;code coverage&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Integrating &lt;a href=&quot;http://en.wikipedia.org/wiki/Unit_testing&quot;&gt;unit testing&lt;/a&gt; into coding practices is a daunting task at first glance. It requires adjusting how developers work in almost every respect, but it can also greatly assist in debugging and validating your code. We wanted to get this right the first time, so we decided to hire an outside contractor to help us formulate a plan of attack. Once we decided upon a course of action, it took only a week for the contractor and two developers to build a test harness and small suite of tests for our core classes, we even found a handful of bugs along the way. Next, we worked to instruct the remaining developers at Digg of best practices for writing unit tests.&lt;/p&gt;&lt;p&gt;Although in one week we went from having only a handful of previously written tests to having a framework to build unit tests much more easily, our work was far from complete. Even our QA team has dramatically changed how they operate to take advantage of the benefits unit testing offers.&lt;/p&gt;&lt;p&gt;Our case study will discuss in depth benefits and drawbacks of adopting test-driven development, cover the gamut of unit testing from simple assertions to mocking complex objects, and dissect the continuing challenges we face.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Robert Balousek, Matt Erkkila, Ian Eure, Bill Shupp, Jeremy McCarthy and Brian O&#039;Neill all contributed to the case study and are employees of Digg.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 10 Apr 2009 12:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/7-guid.html</guid>
    
</item>
<item>
    <title>Large-Scale Selenium-Based Testing</title>
    <link>http://qualityassuranceinphpprojects.com/archives/6-Large-Scale-Selenium-Based-Testing.html</link>
            <category>Enterprise Case Studies</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/6-Large-Scale-Selenium-Based-Testing.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=6</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=6</wfw:commentRss>
    

    <author>nospam@example.com (Christiane Philipps and Max Horváth)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;A well established practice in web application development is testing a web-based GUI as a whole in order to ensure its functionality.&lt;/p&gt;&lt;p&gt;At studiVZ, we have to test three different platforms in two languages. There are many platform-specific differences, in both wording and functionality. The scenario is even further complicated by the use of AJAX functionality in some features. With a release cycle of 14 days, this is indeed a challenge for a small quality assurance team.&lt;/p&gt;&lt;p&gt;In addition to &lt;a href=&quot;http://en.wikipedia.org/wiki/Unit_testing&quot;&gt;Unit Tests&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Acceptance_testing&quot;&gt;Acceptance Tests&lt;/a&gt; are the main part of our automated testing strategy. There are thousands of acceptance tests that have been written since the rewrite of the platform in early 2008. Because of our special requirements (tests have to work for three platforms) we decided not to use one of these capture-and-replay web testing softwares but to write our tests by hand. We chose &lt;a href=&quot;http://seleniumhq.org/projects/remote-control/&quot;&gt;Selenium RC&lt;/a&gt; and the &lt;a href=&quot;http://www.phpunit.de/manual/current/en/selenium.html&quot;&gt;Selenium RC extension for PHPUnit&lt;/a&gt; that allows to write and execute acceptance tests in a unit test style.&lt;/p&gt;&lt;p&gt;But writing acceptance tests is a rocky road to success. The main problem with acceptance tests is their fragility: they will break when the code changes. Another challenge is keeping the tests maintainable, foremost readable. This was the motivation to create a domain-specific language for PHP that allows us to write tests in the language of our business rather than in Selenium&#039;s language.&lt;/p&gt;&lt;p&gt;We want to share our insight into the specific challenges of acceptance testing and how to handle them. Furthermore we will talk about our experiences and learning curve with a DSL-based framework for Selenium tests.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Christiane Philipps is the Team Lead Quality Assurance and Max Horváth is the Team Lead Mobile Development at studiVZ Ltd.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 03 Apr 2009 12:00:00 +0200</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/6-guid.html</guid>
    
</item>
<item>
    <title>Testing Database Interaction</title>
    <link>http://qualityassuranceinphpprojects.com/archives/5-Testing-Database-Interaction.html</link>
            <category>Practices and Tools</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/5-Testing-Database-Interaction.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=5</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=5</wfw:commentRss>
    

    <author>nospam@example.com (Michael Lively Jr.)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Proper interaction with &lt;a href=&quot;http://en.wikipedia.org/wiki/RDBMS&quot;&gt;relational databases&lt;/a&gt; is incredibly important in most pieces of software. The importance of this interaction is underscored by the fact that many software architectures have at least one entire layer or system devoted to data persistence and data loading. When dealing with critical data in enterprise level applications it becomes even more important to make sure your data is being stored and retrieved correctly.&lt;/p&gt;&lt;p&gt;As responsible developers, one of our goals should be to test database interaction and test it well. To help achieve this goal, we will take a close look at tools and techniques that can be used with projects of any size to help create reliable tests capable of validating your database interaction.&lt;/p&gt;&lt;p&gt;The discussion will begin with various techniques for testing your database layer. The focus will then move toward the functionality in the &lt;a href=&quot;http://www.phpunit.de/manual/current/en/database.html&quot;&gt;database extension&lt;/a&gt; for &lt;a href=&quot;http://www.phpunit.de/&quot;&gt;PHPUnit&lt;/a&gt;. Then, utilizing the tools provided in the database extension, examples will be given of how to create basic tests validating that the database is correctly manipulated and data from your database is successfully retrieved. This will be followed by an in depth discussion of &quot;best practices&quot; that can be utilized when you are developing &quot;database aware&quot; fixtures and tests.&lt;/p&gt;&lt;p&gt;Once the ground work is laid, we will look at how all of these tools and techniques can be utilized in both your &lt;a href=&quot;http://en.wikipedia.org/wiki/Unit_testing&quot;&gt;unit tests&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/System_testing&quot;&gt;functional tests&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Michael Lively Jr. is the Lead PHP Developer for Selling Source, LLC.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 27 Mar 2009 12:00:00 +0100</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/5-guid.html</guid>
    
</item>
<item>
    <title>Testing a WebDAV Server</title>
    <link>http://qualityassuranceinphpprojects.com/archives/4-Testing-a-WebDAV-Server.html</link>
            <category>Open Source Case Studies</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/4-Testing-a-WebDAV-Server.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=4</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=4</wfw:commentRss>
    

    <author>nospam@example.com (Tobias Schlitt)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;http://ezcomponents.org/&quot;&gt;eZ Components&lt;/a&gt; project was started with the goal to create a high-quality set of independent building blocks for PHP 5 based application development. Making extensive use of &lt;a href=&quot;http://en.wikipedia.org/wiki/Unit_testing&quot;&gt;unit tests&lt;/a&gt; and sticking to strict development and documentation standards were defined as the basic methodology. One of the biggest challenges in terms of testing and quality assurance so far was the &lt;a href=&quot;http://ezcomponents.org/docs/tutorials/Webdav&quot;&gt;eZ Webdav&lt;/a&gt; component.&lt;/p&gt;&lt;p&gt;The eZ Webdav component is intended to provide a modular &lt;a href=&quot;http://en.wikipedia.org/wiki/WebDAV&quot;&gt;WebDAV&lt;/a&gt; server to be embedded in any kind of web application. Its architecture is built to be as customizable and extensible as possible, while it tries on the other hand to compensate the weaknesses of the RFC and common WebDAV clients.&lt;/p&gt;&lt;p&gt;Testing a server is a challenge in general. Testing the WebDAV component brought us to the limit of unit testing and forced us to find new ways of using &lt;a href=&quot;http://www.phpunit.de/&quot;&gt;PHPUnit&lt;/a&gt; to ensure code quality and to obviate regressions. Unavoidable deep code dependencies in some parts of the server enforced the extensive use of &lt;a href=&quot;http://en.wikipedia.org/wiki/Mock_object&quot;&gt;mock objects&lt;/a&gt; to stick to the unit test paradigm. In some areas, like avoiding regressions in the adjusted behavior against special clients, unit testing was even impossible. For this reason, special record/playback-based tests were created and implemented using PHPUnit.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tobias Schlitt is an active member of the PHP community and works for &lt;nobr&gt;eZ Systems&lt;/nobr&gt; on the &lt;nobr&gt;eZ Components&lt;/nobr&gt;.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 20 Mar 2009 12:00:00 +0100</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/4-guid.html</guid>
    
</item>
<item>
    <title>swoodoo - A True Agile Story</title>
    <link>http://qualityassuranceinphpprojects.com/archives/3-swoodoo-A-True-Agile-Story.html</link>
            <category>Enterprise Case Studies</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/3-swoodoo-A-True-Agile-Story.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=3</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=3</wfw:commentRss>
    

    <author>nospam@example.com (Lars Jankowfsky)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.swoodoo.com/&quot;&gt;swoodoo&lt;/a&gt;, the Germany-based flight search engine, has gone through a wild evolution. In 2003 it started out as a peer-to-peer network with ActiveX browser plugins written in C++ to query cheap flights. It went through a Java-centric solution using various techniques for screenscraping data from airline websites and finally has evolved into a robust architecture where Java and MySQL are used in the backend and PHP plays a major role in all frontend-related tasks as well as in data gathering from airlines.&lt;/p&gt;&lt;p&gt;Besides technology, the software architecture has also changed immensely: from distributed objects to a &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Big_ball_of_mud&quot;&gt;big ball of mud&lt;/a&gt;&quot; and finally into a &lt;a href=&quot;http://en.wikipedia.org/wiki/Service-oriented_architecture&quot;&gt;Service-Oriented Architecture (SOA)&lt;/a&gt; with clearly defined interfaces between separate services. In order to have a better control of swoodoo evolution, project management was switched to &lt;a href=&quot;http://en.wikipedia.org/wiki/Extreme_Programming&quot;&gt;Extreme Programming (XP)&lt;/a&gt; in the beginning of 2007. At the same time we introduced unit testing using &lt;a href=&quot;http://junit.org/&quot;&gt;JUnit&lt;/a&gt; and &lt;a href=&quot;http://www.phpunit.de/&quot;&gt;PHPUnit&lt;/a&gt; as well as PHP-driven &lt;a href=&quot;http://seleniumhq.org/&quot;&gt;Selenium&lt;/a&gt; acceptance testing. Initially we made heavy use of Selenium but recently we have reduced the amount of Selenium tests - a tradeoff we had to make because of the nature of our SOA-based architecture.&lt;/p&gt;&lt;p&gt;In this case study we want to show the evolution of our agile management techniques, testing environment, tools and approaches we use and why we decided to change in case we did.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Lars Jankowfsky is the CTO of Germany-based swoodoo AG.&lt;/b&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 13 Mar 2009 12:00:00 +0100</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/3-guid.html</guid>
    
</item>
<item>
    <title>Performance Testing</title>
    <link>http://qualityassuranceinphpprojects.com/archives/2-Performance-Testing.html</link>
            <category>Practices and Tools</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/2-Performance-Testing.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=2</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=2</wfw:commentRss>
    

    <author>nospam@example.com (Brian Shire)</author>
    <content:encoded>
    &lt;p&gt;&lt;b&gt;This is an abstract for a chapter from a book on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/&quot;&gt;Quality Assurance in PHP Projects&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Incorrect application functionality is a detriment to any project, but poor performance and scalability can often lead to end-user dissatisfaction and exorbitant hardware expenses.&lt;/p&gt;&lt;p&gt;In the case of modern web application, expectations have made it necessary to provide responses within as little as 100 to 500 milliseconds. This puts a tremendous burden on not only achieving excellent performance, but maintaining consistent performance as code changes and new features are added.&lt;/p&gt;&lt;p&gt;We will review a variety of tools that can be used to test performance and scalability.  While the stack will be assumed to be Linux, Apache, MySQL and PHP (LAMP), the basic skills and tools can be applied to a variety of systems (and often the ability to correctly test different system components is itself a valid test case).&lt;/p&gt;&lt;p&gt;An initial emphasis will be on the most basic end-to-end testing of the entire request and response cycle, but later will detail smaller benchmarks and developing custom tool sets once you require more precision. Operating System metrics are also key to ensuring an application&#039;s scalability and performance, so tools such as &lt;a href=&quot;http://en.wikipedia.org/wiki/Sar_in_UNIX&quot;&gt;sar&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Strace&quot;&gt;strace&lt;/a&gt;, and &lt;a href=&quot;http://oprofile.sourceforge.net/&quot;&gt;oprofile&lt;/a&gt; will be covered. Because performance testing has unique requirements and challenges we will cover methodologies to correctly implement performance tests, benchmarks and the pitfalls to avoid. These include the short term assurance of accuracy, reproducing results, as well as long term goals and how to balance future expectations, growth, and priorities of an entire product or service.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Brian Shire is Facebook&#039;s technical lead for PHP internals and a developer for the Alternative PHP Cache (APC).&lt;/b&gt;&lt;/pre&gt; 
    </content:encoded>

    <pubDate>Fri, 06 Mar 2009 12:00:00 +0100</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/2-guid.html</guid>
    
</item>
<item>
    <title>Introduction</title>
    <link>http://qualityassuranceinphpprojects.com/archives/1-Introduction.html</link>
            <category>News</category>
    
    <comments>http://qualityassuranceinphpprojects.com/archives/1-Introduction.html#comments</comments>
    <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=1</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=2.0&amp;type=comments&amp;cid=1</wfw:commentRss>
    

    <author>nospam@example.com (Sebastian Bergmann)</author>
    <content:encoded>
    &lt;a href=&quot;http://qualityassuranceinphpprojects.com/pages/authors.html&quot;&gt;Stefan Priebsch&lt;/a&gt; and myself, &lt;a href=&quot;http://qualityassuranceinphpprojects.com/pages/authors.html&quot;&gt;Sebastian Bergmann&lt;/a&gt;, are writing a book on &quot;Quality Assurance in PHP Projects&quot;. The book will be published in &lt;a href=&quot;http://qualityassuranceinphpprojects.com/pages/english_edition.html&quot;&gt;English&lt;/a&gt; and &lt;a href=&quot;http://qualityassuranceinphpprojects.com/pages/german_edition.html&quot;&gt;German&lt;/a&gt; at the same time later this year.&lt;br /&gt;
&lt;br /&gt;
The idea for the book is that Stefan Priebsch and I write the introductory as well as the concluding chapters while other authors contribute case studies for the middle part of the book.&lt;br /&gt;
&lt;br /&gt;
The case study authors will not always agree with each other. In fact, we invite different opinions on how problems are solved to give the readers not &quot;one single truth&quot; but provide different approaches to problems and views on issues.&lt;br /&gt;
&lt;br /&gt;
Our motivation to write this book is simple: there is no such book on the market and from our experience a book such as this is needed. We get questions from our clients all the time: which book can I get for my developers or recommend to potential job applicants as required reading for the topic of web application quality assurance? This book will be the answer to these questions.&lt;br /&gt;
&lt;br /&gt;
The list of case study authors includes contributors to &lt;a href=&quot;http://qualityassuranceinphpprojects.com/categories/Open-Source-Case-Studies&quot;&gt;well-known Open Source projects from the PHP community&lt;/a&gt; as well as developers working on &lt;a href=&quot;http://qualityassuranceinphpprojects.com/categories/Enterprise-Case-Studies&quot;&gt;some of the largest websites built using PHP&lt;/a&gt;, which happen to be some of the Web&#039;s most popular sites. Other contributing authors write about &lt;a href=&quot;http://qualityassuranceinphpprojects.com/categories/Practices-and-Tools&quot;&gt;practices and tools&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Over the course of the next weeks, we will introduce each case study author together with the case study he or she is contributing to the book. 
    </content:encoded>

    <pubDate>Thu, 05 Mar 2009 12:00:00 +0100</pubDate>
    <guid isPermaLink="false">http://qualityassuranceinphpprojects.com/archives/1-guid.html</guid>
    
</item>

</channel>
</rss>