<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>ClearNet Security: Us and them development</title>
    <link>http://blog.clearnetsec.com/articles/2008/03/14/us-and-them-development</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Us and them development</title>
      <description>
This actually relates to security.  It's round about but it'll tie together.   
&lt;p&gt;
I was speaking with a college buddy the other day,  a guy I respect the hell out of who happens to be an extremely senior engineer and now a fairly wealthy man due to applying that skill in some successful companies.   I can't remember the exact thing I said but I was chatting about work, sort of complaining or venting and he called me out for speaking negatively about my current company's QA.   I was basically saying that they don't seem to try very hard and he pretty much asked me why they ever would if you treated them like inferiors?  
&lt;p&gt;
I was a little taken back,  I don't think I treat them that way,  it's not a conscious thing but clearly there is a caste.   I haven't had that many jobs but the 2 places where test was treated as equals and with the same respect as development they also had the same level of responsibility and we ultimately had much much better testing.  It works better when everyone takes ownership of the whole product and it generally doesn't work that well when people try to just slice off little pieces and ignore the rest.  Everywhere else, most other places, QA were second class citizens, it seems like a normal sort of way of operating.    People can rise to the level of expectation, if that level is too low then that's what you'll get.
&lt;p&gt;
So how does this affect security?   Network ops and marketing usually have very different missions.   In the last 10 years, businesses have added security groups  and security officers to &#8220;add security&#8221; to the business,  and to basically fill in a hole that nobody else owned.   It doesn't work very well.   A CSO should be more like an ombudsman.   If it's not everybody's responsibility and everybody's job then it simply won't work,   there are no tools you can simply buy that will make your business &#8220;secure.&#8221;  



</description>
      <pubDate>Fri, 14 Mar 2008 10:57:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:3b6737ff-b1fc-4ef9-8c20-7a2a49021222</guid>
      <author>ian@ClearNetSec.com (Ian S. Nelson)</author>
      <link>http://blog.clearnetsec.com/articles/2008/03/14/us-and-them-development</link>
      <category>testing</category>
      <category>development</category>
      <category>qa</category>
      <category>rifts</category>
      <category>teams</category>
    </item>
    <item>
      <title>"Us and them development" by Andre Gironda</title>
      <description>&lt;p&gt;A traditional model, which is often the result of a primarily waterfall-based SDLC (or other classic SDLC) usually splits software development and SQA.&lt;/p&gt;

&lt;p&gt;In this modern era of programming, where developers utilize practices such as Continuous Integration, Refactoring, the Dependency Injection pattern, and TDD/BDD - this &amp;#8220;traditional&amp;#8221; approach often does not work.&lt;/p&gt;

&lt;p&gt;First, SQA is thought to be the validation or &amp;#8220;check&amp;#8221; for software development.  If software developers utilize Continuous Integration, this means that developers are likely to also be doing Fagan inspection (or peer review of some kind) on all code check-ins, or component check-ins.  At this point, SQA becomes redundant.&lt;/p&gt;

&lt;p&gt;Continuous Integration and TDD also assume that developers are doing unit testing in their daily/nightly builds.  This turns some or all developers into &amp;#8220;developer-testers&amp;#8221; which replace the need for unit testing done by SQA.  This comes even more into play if the developers are doing continuous-prevention development and/or refactoring.&lt;/p&gt;

&lt;p&gt;Worst of all for an already marginalized SQA team, the developers could also be doing all of the functional testing using Continuous Integration.  Not only are unit tests written by developers, but also all functional tests using an automated testing tool such as Canoo WebTest driven by something like an Ant task at build time.&lt;/p&gt;

&lt;p&gt;What does this leave SQA to do?  Well, there is regression testing (replaced by continuous-prevention development) and finally - acceptance testing.  Would an organization want to keep a SQA or SQC team around just to perform acceptance testing?  Maybe.  It&amp;#8217;s my opinion that developer-testers can also do acceptance testing and thus - full elimination of all SQE&amp;#8217;s is possible (however, it could naturally be that many SQE&amp;#8217;s fill the developer-tester roles).  In some cases, where extensive or very user-driven testing is necessary (or where it just doesn&amp;#8217;t fit the culture), SQA/SQC should be kept around to perform acceptance testing.&lt;/p&gt;

&lt;p&gt;The best place to put all of your current SQE&amp;#8217;s is into test case/charter roles.  Test cases are created in the earliest phases of the life cycle: planning and requirements gathering.  Using the &lt;a &gt;V-Model&lt;/a rel="nofollow"&gt;, test cases that will apply to any software project should be started before the software engineers sit down to decide on the design decisions.&lt;/p&gt;

&lt;p&gt;Test case development isn&amp;#8217;t the only way to provide testing throughout the life cycle.  The best SQE&amp;#8217;s today use techniques such as exploratory testing - however I also feel that this is best done during the programming phase (or the integration phase!) and not during a separate, post-build phase.  Exploratory testing creates and works from a test charter, which is often everything that the test cases and unit tests are missing and more.&lt;/p&gt;

&lt;p&gt;Exploratory testing takes into factors that involve the application as it is built and how it works internally besides all of the boundary value analysis, input validation, and code metrics.  Domain testing and combinatorial explosions (especially using all-pairs testing) make good candidates for exploratory testing.&lt;/p&gt;

&lt;p&gt;In summary, quality testers need to redefine their roles in this new era of TDD.  There are many places for current quality people in early development lifecycle work, and there are many places to put &amp;#8220;newbie&amp;#8221; people (i.e. people with no computer science degree, experience, or certification).  It&amp;#8217;s probably best to list the positions still as SQE (software quality engineer), but make the role as a developer-tester.  This is what Google and others do.  For those that have quality tester certifications, utilize these people where they can provide the most benefit - such as requirements gathering and exploratory testing.&lt;/p&gt;

&lt;p&gt;Yes, this means that SQA/SQC will have to integrate and work well with developers (and vice-versa).  A documented and clean Fagan inspection process is necessary in order to make this successful.&lt;/p&gt;</description>
      <pubDate>Fri, 14 Mar 2008 13:47:59 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:c5c25f7f-6785-43bc-b310-26fe7e2d8182</guid>
      <link>http://blog.clearnetsec.com/articles/2008/03/14/us-and-them-development#comment-61</link>
    </item>
  </channel>
</rss>
