<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://qualityassuranceinphpprojects.com/feeds/atom.xml" rel="self" title="Quality Assurance in PHP Projects" type="application/atom+xml" />
    <link href="http://qualityassuranceinphpprojects.com/"                        rel="alternate"    title="Quality Assurance in PHP Projects" type="text/html" />
    <link href="http://qualityassuranceinphpprojects.com/rss.php?version=2.0"     rel="alternate"    title="Quality Assurance in PHP Projects" type="application/rss+xml" />
    <title type="html">Quality Assurance in PHP Projects</title>
    <subtitle type="html"></subtitle>
    
    <id>http://qualityassuranceinphpprojects.com/</id>
    <updated>2011-06-15T18:57:47Z</updated>
    <generator uri="http://www.s9y.org/" version="1.5.1">Serendipity 1.5.1 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/20-The-English-Edition-Started-Shipping!.html" rel="alternate" title="The English Edition Started Shipping!" />
        <author>
            <name>Sebastian Bergmann</name>
                    </author>
    
        <published>2011-05-10T10:00:00Z</published>
        <updated>2011-06-15T18:57:47Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=20</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/News" label="News" term="News" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/20-guid.html</id>
        <title type="html">The English Edition Started Shipping!</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>The <a href="http://qualityassuranceinphpprojects.com/pages/english_edition.html">English Edition</a> of the PHP Quality Assurance book started shipping. <a href="http://priebsch.de/">Stefan</a> and I, as well as all our <a href="http://qualityassuranceinphpprojects.com/categories/Case-Studies">contributing authors</a>, are very happy about this. Below you can find additional information about the book.</p><a href="http://www.amazon.com/Real-World-Developing-High-Quality-Frameworks-Applications/dp/0470872497/"><img src="http://qualityassuranceinphpprojects.com/uploads/cover_en.jpg" alt="Real-World Solutions for Developing High-Quality PHP Frameworks and Applications" height="300"/></a><p>PHP has risen to become one of the most popular programming languages in the world, making high-quality, sustainable applications and frameworks created in PHP more sought after than ever. Using real-world case studies from well-known companies, this valuable book presents the planning, execution, and automation of tests for the different layers and tiers of a web software architecture and explains how these companies measure and test the quality of their software.</p><ul><li>Looks at the characteristics of good internal and external software quality</li><li>Shares techniques for writing new code, changing and optimizing existing code, and finding and fixing bugs</li><li>Reveals bad testing practices so you know what to avoid</li><li>Addresses how to test service-oriented APIs, a WebDAV server, and many PHP frameworks</li><li>Reviews large-scale Selenium-based testing and testing database interaction</li></ul><p>With this book, you will learn to develop high-quality PHP frameworks and applications that can easily be maintained with reasonable cost and effort.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/19-PHPQABOOK-Status-Update.html" rel="alternate" title="PHPQABOOK: Status Update" />
        <author>
            <name>Sebastian Bergmann</name>
                    </author>
    
        <published>2011-03-09T12:00:00Z</published>
        <updated>2011-03-09T12:00:00Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=19</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=19</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/News" label="News" term="News" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/19-guid.html</id>
        <title type="html">PHPQABOOK: Status Update</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                Almost a year has passed since we <a href="http://qualityassuranceinphpprojects.com/archives/17-Almost-Done.html">finished the manuscript</a> for the German edition of the book -- and almost half a year since the German edition <a href="http://qualityassuranceinphpprojects.com/archives/18-The-German-Edition-Started-Shipping!.html">started shipping</a>. High time for another status update.<br />
<br />
The video below shows a visualization of activity in the book's Git repository since April 2010. During this timeframe we mostly worked on translating chapters from English to German and editing the chapters for the German edition followed by translating chapters from German to English and editing the English edition's chapters.<br />
<br />
<iframe src="http://player.vimeo.com/video/20815820?title=0&amp;byline=0&amp;portrait=0" width="400" height="300" frameborder="0"></iframe><br />
<br />
As you can see from the video, the work on the English edition is now complete and the Git repository is quiet. The English edition is scheduled to ship on May 10, 2011 under the title "<a href="http://qualityassuranceinphpprojects.com/pages/english_edition.html">Real-World Solutions for Developing High-Quality PHP Frameworks and Applications</a>". 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/18-The-German-Edition-Started-Shipping!.html" rel="alternate" title="The German Edition Started Shipping!" />
        <author>
            <name>Sebastian Bergmann</name>
                    </author>
    
        <published>2010-10-07T08:00:00Z</published>
        <updated>2010-10-07T08:00:00Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=18</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=18</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/News" label="News" term="News" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/18-guid.html</id>
        <title type="html">The German Edition Started Shipping!</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>The <a href="http://qualityassuranceinphpprojects.com/pages/german_edition.html">German Edition</a> of the PHP Quality Assurance book started shipping. <a href="http://priebsch.de/">Stefan</a> and I, as well as all our <a href="http://qualityassuranceinphpprojects.com/categories/Case-Studies">contributing authors</a>, are very happy about this. Below you can find additional information about the book in German.</p><a href="http://www.amazon.de/gp/product/3446419233?ie=UTF8&tag=sbergmann&linkCode=as2&camp=1638&creative=6742&creativeASIN=3446419233"><img src="http://qualityassuranceinphpprojects.com/uploads/cover_de.jpg" alt="Softwarequalität in PHP-Projekten" width="238" height="300"/></a><img src="http://www.assoc-amazon.de/e/ir?t=sbergmann&l=as2&o=3&a=3446419233" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><p>Wenn die Hütte brennt, werden Überstunden gemacht und Urlaube abgesagt. Trotzdem werden Termine und Qualitätsziele meist verfehlt. Da Software jedoch weit länger lebt als ursprünglich geplant, gehen die Probleme erst dann richtig los, wenn später Änderungen und Erweiterungen notwendig werden.</p><p>Im vorliegenden Buch vermitteln Sebastian Bergmann und Stefan Priebsch gemeinsam mit ihren Co-Autoren umfassendes Fachwissen und Erfahrungen zur Qualitätssicherung in PHP-Projekten. Zahlreiche Fallstudien veranschaulichen die Planung, Durchführung und Automation von Tests für die unterschiedlichen Softwareschichten sowie die Beurteilung von Softwarequalität mit Hilfe von Softwaremetriken. Sie sind die Grundlage dafür, Entwicklungsprozesse durch den Einsatz geeigneter Methoden wie etwa <emph>Continuous Integration</emph> zu optimieren. Die Fallstudien zeigen, wie bekannte Firmen und Projekte die Qualität ihrer Software messen, kontrollieren und sichern, ermöglichen einen Blick hinter die Kulissen und vermitteln so wertvolle Praxiserfahrungen.</p><p>Das Buch empfiehlt sich allen, die eine Referenz für die Entwicklung qualitativ hochwertiger und nachhaltiger Softwareanwendungen in PHP suchen.</p><h4>Das Standardwerk zur Qualitätssicherung</h4><br />
<ul><li>Liefert wichtiges Grundlagenwissen zum Testen PHP-basierter Software</li><br />
<li>Zeigt die Umsetzung von Maßnahmen zur Qualitätssicherung in der Praxis</li><br />
<li>Enthält hochinformative Fallstudien bekannter Firmen und Projekte</li><br />
<li>Aus der Feder anerkannter PHP-Experten</li><br />
<li>Beschreibt den aktuellen Wissensstand in Sachen Software-Qualitätssicherung</li></ul><p>The <a href="http://qualityassuranceinphpprojects.com/pages/english_edition.html">English edition</a> of the book is scheduled for publication in December -- stay tuned!</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/17-Almost-Done.html" rel="alternate" title="Almost Done" />
        <author>
            <name>Sebastian Bergmann</name>
                    </author>
    
        <published>2010-04-30T11:30:00Z</published>
        <updated>2010-05-03T11:50:50Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=17</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=17</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/News" label="News" term="News" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/17-guid.html</id>
        <title type="html">Almost Done</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <a href="http://www.flickr.com/photos/sebastian_bergmann/4564742479/" title="Lucid Lynx by Sebastian Bergmann, on Flickr"><img src="http://farm5.static.flickr.com/4029/4564742479_4b49b68ca2_m.jpg" width="240" height="140" alt="Lucid Lynx" /></a><br />
<br />
We are almost done with the manuscript for the <a href="http://qualityassuranceinphpprojects.com/pages/german_edition.html">German edition</a> (<a href="http://www.amazon.de/gp/product/3446419233?ie=UTF8&tag=sbergmann&linkCode=as2&camp=1638&creative=6742&creativeASIN=3446419233">preorder at Amazon.de</a>) of the book. In a couple of days we can focus on getting the manuscript for the <a href="http://qualityassuranceinphpprojects.com/pages/english_edition.html">English edition</a> (<a href="http://www.amazon.com/Real-World-Developing-High-Quality-Frameworks-Applications/dp/0470872497/">preorder at Amazon.com</a>) ready for the publisher. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/16-Update.html" rel="alternate" title="Update" />
        <author>
            <name>Sebastian Bergmann</name>
                    </author>
    
        <published>2009-11-04T08:30:00Z</published>
        <updated>2010-02-25T10:48:49Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=16</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=16</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/News" label="News" term="News" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/16-guid.html</id>
        <title type="html">Update</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                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:<blockquote><ul><li>Best Practices<ul><li><a href="http://qualityassuranceinphpprojects.com/archives/10-TYPO3-The-Agile-Future-of-a-Ponderous-Project.html">TYPO3: The Agile Future of a Ponderous Project</a></li><li><a href="http://qualityassuranceinphpprojects.com/archives/15-Unit-Testing-Bad-Practices-by-Example.html">Unit Testing Bad Practices by Example</a></li><li><a href="http://qualityassuranceinphpprojects.com/archives/7-Quality-Assurance-at-Digg-Inc..html">Quality Assurance at Digg</a></li></ul></li><li>Servers and Services<ul><li><a href="http://qualityassuranceinphpprojects.com/archives/14-Testing-Service-Oriented-APIs.html">Testing Service Oriented APIs</a></li><li><a href="http://qualityassuranceinphpprojects.com/archives/4-Testing-a-WebDAV-Server.html">Testing a WebDAV Server</a></li><li><a href="http://qualityassuranceinphpprojects.com/archives/5-Testing-Database-Interaction.html">Testing Database Interaction</a></li></ul></li><li>Architecture<ul><li><a href="http://qualityassuranceinphpprojects.com/archives/11-Testing-Symfony-and-Symfony-Applications.html">Testing Symfony and Symfony Applications</a></li><li><a href="http://qualityassuranceinphpprojects.com/archives/8-Testing-the-ezcGraph-Component.html">Testing the ezcGraph Component</a></li></ul></li><li>QA in the Large<ul><li><a href="http://qualityassuranceinphpprojects.com/archives/6-Large-Scale-Selenium-Based-Testing.html">Large-Scale Selenium-Based Testing at studiVZ</a></li><li><a href="http://qualityassuranceinphpprojects.com/archives/13-Continuous-Integration-with-phpUnderControl.html">Continuous Integration with phpUnderControl</a></li><li><a href="http://qualityassuranceinphpprojects.com/archives/3-swoodoo-A-True-Agile-Story.html">swoodoo: A True Agile Story</a></li></ul></li><li>Non-Functional Aspects<ul><li><a href="http://qualityassuranceinphpprojects.com/archives/2-Performance-Testing.html">Performance</a></li><li>Usability</li><li>Security</li></ul></li></ul></blockquote>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.<br />
<br />
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. 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/15-Unit-Testing-Bad-Practices-by-Example.html" rel="alternate" title="Unit Testing Bad Practices by Example" />
        <author>
            <name>Benjamin Eberlei</name>
                    </author>
    
        <published>2009-06-05T10:00:00Z</published>
        <updated>2009-07-05T08:25:26Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=15</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=15</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Practices-and-Tools" label="Practices and Tools" term="Practices and Tools" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/15-guid.html</id>
        <title type="html">Unit Testing Bad Practices by Example</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>Although <a href="http://en.wikipedia.org/wiki/Unit_testing">Unit Testing</a> 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.</p><p>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.</p><p>Bad practices of Unit Testing manifest in so called "<a href="http://xunitpatterns.com/Test%20Smells.html">Test Smells</a>". 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.</p><p>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.</p><p><b>Benjamin Eberlei is a Project Lead with direkt effekt GmbH and contributes to the Zend Framework and other Open Source projects.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/14-Testing-Service-Oriented-APIs.html" rel="alternate" title="Testing Service-Oriented APIs" />
        <author>
            <name>Matthew Weier O'Phinney</name>
                    </author>
    
        <published>2009-05-29T10:00:00Z</published>
        <updated>2009-07-04T16:30:29Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=14</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=14</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Open-Source-Case-Studies" label="Open Source Case Studies" term="Open Source Case Studies" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/14-guid.html</id>
        <title type="html">Testing Service-Oriented APIs</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>One of <a href="http://framework.zend.com/">Zend Framework</a>'s key strengths and differentiators in the crowded PHP framework arena is its offering of <a href="http://en.wikipedia.org/wiki/Web_Service">web service</a> consumer components. As of version 1.8.0, these include offerings for <a href="http://en.wikipedia.org/wiki/Action_Message_Format">Adobe AMF</a>, <a href="http://en.wikipedia.org/wiki/Akismet">Akismet</a>, Amazon (including <a href="http://en.wikipedia.org/wiki/Amazon_EC2">EC2</a> and <a href="http://en.wikipedia.org/wiki/Amazon_S3">S3</a> support), <a href="http://en.wikipedia.org/wiki/AudioScrobbler">AudioScrobbler</a> from last.fm, <a href="http://en.wikipedia.org/wiki/Delicious_%28website%29">Del.icio.us</a>, <a href="http://en.wikipedia.org/wiki/Flickr">Flickr</a>, <a href="http://en.wikipedia.org/wiki/GData">Google's GData</a> services, <a href="http://en.wikipedia.org/wiki/Nirvanix">Nirvanix</a>, <a href="http://en.wikipedia.org/wiki/ReCaptcha">ReCaptcha</a>, <a href="http://en.wikipedia.org/wiki/Simpy">Simpy</a>, <a href="http://en.wikipedia.org/wiki/Slideshare">SlideShare</a>, StrikeIron, <a href="http://en.wikipedia.org/wiki/Technorati">Technorati</a>, <a href="http://en.wikipedia.org/wiki/Twitter">Twitter</a>, and <a href="http://en.wikipedia.org/wiki/Yahoo">Yahoo!</a> -- and more are planned or under development.</p><p>Offering components to interact with web services is relatively trivial -- but testing them offers a very different story. For <a href="http://en.wikipedia.org/wiki/Continuous_Integration">continuous integration</a> 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.</p><p>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.</p><p><b>Matthew Weier O'Phinney works for Zend Technologies Ltd. and is the Project Lead for the Zend Framework.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/13-Continuous-Integration-with-phpUnderControl.html" rel="alternate" title="Continuous Integration with phpUnderControl" />
        <author>
            <name>Manuel Pichler and Sebastian Nohn</name>
                    </author>
    
        <published>2009-05-22T10:00:00Z</published>
        <updated>2009-07-05T08:25:31Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=13</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=13</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Practices-and-Tools" label="Practices and Tools" term="Practices and Tools" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/13-guid.html</id>
        <title type="html">Continuous Integration with phpUnderControl</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>One of the most important events in large and distributed team projects is the <a href="http://en.wikipedia.org/wiki/System_integration">integration</a> 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 <a href="http://en.wikipedia.org/wiki/Continuous_Integration">Continuous Integration</a>: a merge of all parts of the system as often as possible during the lifecycle of the project.</p><p>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 <a href="http://phpundercontrol.org/">phpUnderControl</a>, a customization of the popular and established Continuous Integration server software <a href="http://cruisecontrol.sf.net/">CruiseControl</a>.</p><p>Beyond Continuous Integration, this case study introduces the reader to the principles of <a href="http://en.wikipedia.org/wiki/Static_testing">Static Testing</a> and how to instrument it to gain a better <a href="http://en.wikipedia.org/wiki/Software_quality">quality</a>. Amongst other tools, the reader will learn how to successfully use tools such as <a href="http://pear.php.net/package/PHP_CodeSniffer">PHP_CodeSniffer</a>, <a href="http://pdepend.org/">PHP_Depend</a> and <a href="http://github.com/sebastianbergmann/phpcpd/">phpcpd</a> for <a href="http://en.wikipedia.org/wiki/Static_code_analysis">Static Code Analysis</a>.</p><p>In conclusion, advanced usage scenarios of the discussed tools will be discusses with a particular focus on how to foster further principles of <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile Software Development</a> methodologies and how to solve discrepancies with other targets of agile methodologies.</p><p><b>Manuel Pichler is the creator of phpUnderControl, PHP_Depend, and phpmd. Sebastian Nohn is the Team Lead Quality Assurance at Ligatus GmbH.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/11-Testing-Symfony-and-Symfony-Applications.html" rel="alternate" title="Testing Symfony and Symfony Applications" />
        <author>
            <name>Fabien Potencier</name>
                    </author>
    
        <published>2009-05-08T10:00:00Z</published>
        <updated>2009-07-04T16:30:38Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=11</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=11</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Open-Source-Case-Studies" label="Open Source Case Studies" term="Open Source Case Studies" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/11-guid.html</id>
        <title type="html">Testing Symfony and Symfony Applications</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>In this case study, we will talk about how the <a href="http://www.symfony-project.org/">Symfony</a> framework itself is tested, but also about the tools the framework provides to ease testing the customer applications.</p><p>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.</p><p>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 <a href="http://en.wikipedia.org/wiki/Dependency_Injection">Dependency Injection</a> container will be of great help to ease the testing process even more.</p><p><b>Fabien Potencier is the CEO of Sensio and the lead developer of Symfony.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/10-TYPO3-The-Agile-Future-of-a-Ponderous-Project.html" rel="alternate" title="TYPO3: The Agile Future of a Ponderous Project" />
        <author>
            <name>Robert Lemke and Karsten Dambekalns</name>
                    </author>
    
        <published>2009-05-01T10:00:00Z</published>
        <updated>1970-01-01T00:00:00Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=10</wfw:comment>
    
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=10</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Open-Source-Case-Studies" label="Open Source Case Studies" term="Open Source Case Studies" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/10-guid.html</id>
        <title type="html">TYPO3: The Agile Future of a Ponderous Project</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>When Kasper Skårhøj wrote the first lines of PHP code laying the foundation for the <a href="http://typo3.org/">TYPO3</a> 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.</p><p>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.</p><p>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 <a href="http://flow3.typo3.org/">FLOW3</a> 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) <a href="http://en.wikipedia.org/wiki/Unit_testing">unit tests</a>. Finally we demonstrate how a clean architecture can help you tackling the complexity of your application.</p><p><b>Robert Lemke and Karsten Dambekalns are core developers of both TYPO3 and FLOW3.</b></p><p>A few recipes for writing good unit tests that are part of this case study are demonstrated in the "Delicious Test Recipes" episode of <a href="http://typo3.org/podcasts/robert/">Robert Lemke's podcast</a>.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/8-Testing-the-ezcGraph-Component.html" rel="alternate" title="Testing the ezcGraph Component" />
        <author>
            <name>Kore Nordmann</name>
                    </author>
    
        <published>2009-04-17T10:00:00Z</published>
        <updated>1970-01-01T00:00:00Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=8</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=8</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Open-Source-Case-Studies" label="Open Source Case Studies" term="Open Source Case Studies" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/8-guid.html</id>
        <title type="html">Testing the ezcGraph Component</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>The <a href="http://ezcomponents.org/docs/tutorials/Graph">Graph</a> component from the <a href="http://ezcomponents.org/docs/tutorials/Graph">eZ Components</a> project provides an easy to use and extensible library for creating graphical charts. In the <nobr>eZ Components</nobr> project we aim to develop test-driven, which resulted in two challenges developing this library.</p><p>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 <code>ext/gd</code>. 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.</p><p>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 <a href="http://www.phpunit.de/manual/current/en/test-doubles.html">support for mock objects</a> in <a href="http://www.phpunit.de/">PHPUnit</a>, all calls to the driver layer can be checked for correctness without actually generating images.</p><p><b>Kore Nordmann is an active member of the PHP community and works for <nobr>eZ Systems</nobr> on the <nobr>eZ Components</nobr>.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/7-Quality-Assurance-at-Digg-Inc..html" rel="alternate" title="Quality Assurance at Digg Inc." />
        <author>
            <name>Robert Balousek, Matt Erkkila, Ian Eure, Bill Shupp, Jeremy McCarthy and Brian O'Neill</name>
                    </author>
    
        <published>2009-04-10T10:00:00Z</published>
        <updated>2009-07-04T16:30:58Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=7</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=7</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Enterprise-Case-Studies" label="Enterprise Case Studies" term="Enterprise Case Studies" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/7-guid.html</id>
        <title type="html">Quality Assurance at Digg Inc.</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p><a href="http://www.digg.com/">Digg</a>'s development philosophy has changed dramatically in the last year in an attempt to move towards a more <a href="http://en.wikipedia.org/wiki/Agile_software_development">agile</a> and iterative approach. A large part of these sweeping changes is moving toward a <a href="http://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a> methodology with a minimum of 80% <a href="http://en.wikipedia.org/wiki/Code_Coverage">code coverage</a>.</p><p>Integrating <a href="http://en.wikipedia.org/wiki/Unit_testing">unit testing</a> 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.</p><p>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.</p><p>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.</p><p><b>Robert Balousek, Matt Erkkila, Ian Eure, Bill Shupp, Jeremy McCarthy and Brian O'Neill all contributed to the case study and are employees of Digg.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/6-Large-Scale-Selenium-Based-Testing.html" rel="alternate" title="Large-Scale Selenium-Based Testing" />
        <author>
            <name>Christiane Philipps and Max Horváth</name>
                    </author>
    
        <published>2009-04-03T10:00:00Z</published>
        <updated>2009-07-04T16:31:03Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=6</wfw:comment>
    
        <slash:comments>7</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=6</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Enterprise-Case-Studies" label="Enterprise Case Studies" term="Enterprise Case Studies" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/6-guid.html</id>
        <title type="html">Large-Scale Selenium-Based Testing</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>A well established practice in web application development is testing a web-based GUI as a whole in order to ensure its functionality.</p><p>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.</p><p>In addition to <a href="http://en.wikipedia.org/wiki/Unit_testing">Unit Tests</a>, <a href="http://en.wikipedia.org/wiki/Acceptance_testing">Acceptance Tests</a> 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 <a href="http://seleniumhq.org/projects/remote-control/">Selenium RC</a> and the <a href="http://www.phpunit.de/manual/current/en/selenium.html">Selenium RC extension for PHPUnit</a> that allows to write and execute acceptance tests in a unit test style.</p><p>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's language.</p><p>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.</p><p><b>Christiane Philipps is the Team Lead Quality Assurance and Max Horváth is the Team Lead Mobile Development at studiVZ Ltd.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/5-Testing-Database-Interaction.html" rel="alternate" title="Testing Database Interaction" />
        <author>
            <name>Michael Lively Jr.</name>
                    </author>
    
        <published>2009-03-27T11:00:00Z</published>
        <updated>1970-01-01T00:00:00Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=5</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=5</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Practices-and-Tools" label="Practices and Tools" term="Practices and Tools" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/5-guid.html</id>
        <title type="html">Testing Database Interaction</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>Proper interaction with <a href="http://en.wikipedia.org/wiki/RDBMS">relational databases</a> 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.</p><p>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.</p><p>The discussion will begin with various techniques for testing your database layer. The focus will then move toward the functionality in the <a href="http://www.phpunit.de/manual/current/en/database.html">database extension</a> for <a href="http://www.phpunit.de/">PHPUnit</a>. 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 "best practices" that can be utilized when you are developing "database aware" fixtures and tests.</p><p>Once the ground work is laid, we will look at how all of these tools and techniques can be utilized in both your <a href="http://en.wikipedia.org/wiki/Unit_testing">unit tests</a> and <a href="http://en.wikipedia.org/wiki/System_testing">functional tests</a>.</p><p><b>Michael Lively Jr. is the Lead PHP Developer for Selling Source, LLC.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/4-Testing-a-WebDAV-Server.html" rel="alternate" title="Testing a WebDAV Server" />
        <author>
            <name>Tobias Schlitt</name>
                    </author>
    
        <published>2009-03-20T11:00:00Z</published>
        <updated>2009-07-04T16:31:08Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=4</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=4</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Open-Source-Case-Studies" label="Open Source Case Studies" term="Open Source Case Studies" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/4-guid.html</id>
        <title type="html">Testing a WebDAV Server</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>The <a href="http://ezcomponents.org/">eZ Components</a> 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 <a href="http://en.wikipedia.org/wiki/Unit_testing">unit tests</a> 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 <a href="http://ezcomponents.org/docs/tutorials/Webdav">eZ Webdav</a> component.</p><p>The eZ Webdav component is intended to provide a modular <a href="http://en.wikipedia.org/wiki/WebDAV">WebDAV</a> 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.</p><p>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 <a href="http://www.phpunit.de/">PHPUnit</a> to ensure code quality and to obviate regressions. Unavoidable deep code dependencies in some parts of the server enforced the extensive use of <a href="http://en.wikipedia.org/wiki/Mock_object">mock objects</a> 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.</p><p><b>Tobias Schlitt is an active member of the PHP community and works for <nobr>eZ Systems</nobr> on the <nobr>eZ Components</nobr>.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/3-swoodoo-A-True-Agile-Story.html" rel="alternate" title="swoodoo - A True Agile Story" />
        <author>
            <name>Lars Jankowfsky</name>
                    </author>
    
        <published>2009-03-13T11:00:00Z</published>
        <updated>1970-01-01T00:00:00Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=3</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=3</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Enterprise-Case-Studies" label="Enterprise Case Studies" term="Enterprise Case Studies" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/3-guid.html</id>
        <title type="html">swoodoo - A True Agile Story</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p><a href="http://www.swoodoo.com/">swoodoo</a>, 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.</p><p>Besides technology, the software architecture has also changed immensely: from distributed objects to a "<a href="http://en.wikipedia.org/wiki/Big_ball_of_mud">big ball of mud</a>" and finally into a <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture">Service-Oriented Architecture (SOA)</a> with clearly defined interfaces between separate services. In order to have a better control of swoodoo evolution, project management was switched to <a href="http://en.wikipedia.org/wiki/Extreme_Programming">Extreme Programming (XP)</a> in the beginning of 2007. At the same time we introduced unit testing using <a href="http://junit.org/">JUnit</a> and <a href="http://www.phpunit.de/">PHPUnit</a> as well as PHP-driven <a href="http://seleniumhq.org/">Selenium</a> 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.</p><p>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.</p><p><b>Lars Jankowfsky is the CTO of Germany-based swoodoo AG.</b></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/2-Performance-Testing.html" rel="alternate" title="Performance Testing" />
        <author>
            <name>Brian Shire</name>
                    </author>
    
        <published>2009-03-06T11:00:00Z</published>
        <updated>2009-07-05T08:25:39Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=2</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=2</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/Practices-and-Tools" label="Practices and Tools" term="Practices and Tools" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/2-guid.html</id>
        <title type="html">Performance Testing</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><b>This is an abstract for a chapter from a book on <a href="http://qualityassuranceinphpprojects.com/">Quality Assurance in PHP Projects</a>.</b></p><p>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.</p><p>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.</p><p>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).</p><p>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's scalability and performance, so tools such as <a href="http://en.wikipedia.org/wiki/Sar_in_UNIX">sar</a>, <a href="http://en.wikipedia.org/wiki/Strace">strace</a>, and <a href="http://oprofile.sourceforge.net/">oprofile</a> 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.</p><p><b>Brian Shire is Facebook's technical lead for PHP internals and a developer for the Alternative PHP Cache (APC).</b></pre> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://qualityassuranceinphpprojects.com/archives/1-Introduction.html" rel="alternate" title="Introduction" />
        <author>
            <name>Sebastian Bergmann</name>
                    </author>
    
        <published>2009-03-05T11:00:00Z</published>
        <updated>2009-07-05T08:30:58Z</updated>
        <wfw:comment>http://qualityassuranceinphpprojects.com/wfwcomment.php?cid=1</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://qualityassuranceinphpprojects.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=1</wfw:commentRss>
    
            <category scheme="http://qualityassuranceinphpprojects.com/categories/News" label="News" term="News" />
    
        <id>http://qualityassuranceinphpprojects.com/archives/1-guid.html</id>
        <title type="html">Introduction</title>
        <content type="xhtml" xml:base="http://qualityassuranceinphpprojects.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <a href="http://qualityassuranceinphpprojects.com/pages/authors.html">Stefan Priebsch</a> and myself, <a href="http://qualityassuranceinphpprojects.com/pages/authors.html">Sebastian Bergmann</a>, are writing a book on "Quality Assurance in PHP Projects". The book will be published in <a href="http://qualityassuranceinphpprojects.com/pages/english_edition.html">English</a> and <a href="http://qualityassuranceinphpprojects.com/pages/german_edition.html">German</a> at the same time later this year.<br />
<br />
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.<br />
<br />
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 "one single truth" but provide different approaches to problems and views on issues.<br />
<br />
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.<br />
<br />
The list of case study authors includes contributors to <a href="http://qualityassuranceinphpprojects.com/categories/Open-Source-Case-Studies">well-known Open Source projects from the PHP community</a> as well as developers working on <a href="http://qualityassuranceinphpprojects.com/categories/Enterprise-Case-Studies">some of the largest websites built using PHP</a>, which happen to be some of the Web's most popular sites. Other contributing authors write about <a href="http://qualityassuranceinphpprojects.com/categories/Practices-and-Tools">practices and tools</a>.<br />
<br />
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. 
            </div>
        </content>
        
    </entry>

</feed>
