<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Paco Hope &#187; Software Testing</title>
	<atom:link href="http://paco.to/category/software-testing/feed" rel="self" type="application/rss+xml" />
	<link>http://paco.to</link>
	<description>My Random Musings and Rants</description>
	<lastBuildDate>Mon, 06 Feb 2012 13:11:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Skype for iPad as Business App of the Year? Puhleeze.</title>
		<link>http://paco.to/2011/skype-for-ipad-not-business-app-of-the-year-puhleeze</link>
		<comments>http://paco.to/2011/skype-for-ipad-not-business-app-of-the-year-puhleeze#comments</comments>
		<pubDate>Tue, 29 Nov 2011 10:43:30 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://paco.to/?p=545</guid>
		<description><![CDATA[Skype is tweeting about how Skype for iPad was awarded "Business App of the Year" for 2011. The idea that Skype is a business app and that it is an app worthy of praise are both laughable.]]></description>
			<content:encoded><![CDATA[<p>The folks over at <a href="http://www.itpro.co.uk/" target="_blank">IT Pro</a> had their <a href="http://www.itpro.co.uk/637510/it-pro-awards-2011" target="_blank">IT Pro Awards 2011</a> recently. They awarded a few different honours. Some innovative, others pretty predictable. I struggle to care that Microsoft won "Vendor of the Year"? What does that even mean? And if it's a category that Microsoft won, who else even had a chance of winning it? Oracle? IBM? HP? And those are 4 of the biggest anyways, so it's not like this award will create some new recognition or awareness of a vendor.</p>
<p>The only thing I think awards are useful for is if you understand <strong>why</strong> they are awarded. What did candidate A have that candidate B did not? The IT Pro awards appear to be a simple popularity contest. That is, random web site visitors had a set of candidates to choose from, and they chose for whatever reason. If the candidates were judged on criteria (e.g., originality, fitness for purpose, reliability, value for money) I would love to see how the winners (and losers) scored. But these awards are meaningless. There's no judging. Just popularity of clicks.<span id="more-545"></span>What galls me is that Skype is tweeting (both <a href="http://twitter.com/#!/skype" target="_blank">@skype</a> and <a href="http://twitter.com/#!/skype4biz" target="_blank">@skype4biz</a>) about how <a href="http://www.skype.com/intl/en/get-skype/on-your-mobile/download/ipad-for-skype/" target="_blank">Skype for iPad</a> was awarded "Business App of the Year" for 2011. The idea that Skype is a business app and that it is an app worthy of praise are both laughable. Unlike the folks over at IT Pro, I have criteria for these things.</p>
<h2>What is a Business App?</h2>
<p>To be a "business app," it has to integrate with my business. It has to do <em>something</em>—<em>anything</em>—to talk to some other IT system in my business. How does Skype do that? It doesn't. It doesn't have even the tiniest integration into anything other than its own contact list. I can't hook it up to LDAP, ActiveDirectory, or even my contacts at some other service like Hotmail, GMail, Yahoo! or AIM. If it is a standalone app with zero integration into my business, it is not a "business app." Sorry guys. You might call it "the app that is accidentally the most beneficial to business" but that's a different award.</p>
<p>As for it being a good app? You're joking, right? It works. That's the long and short of it. It will connect to other Skype users and you can talk to them. I have had rock solid, full-motion video calls over 3G using my iPad. I loved it. So, there's props for what they do right. Beyond that, it is an unmitigated train wreck of an application. Just look at the user interface.</p>
<h2>Abuser Interface</h2>
<div id="attachment_546" class="wp-caption alignright" style="width: 235px"><a href="http://paco.to/wp-content/uploads/2011/11/SkypeiPad.png"><img class="size-medium wp-image-546 " title="Skype UI" src="http://paco.to/wp-content/uploads/2011/11/SkypeiPad-225x300.png" alt="Skype UI" width="225" height="300" /></a><p class="wp-caption-text">Skype User Interface</p></div>
<p>I have taken the surnames off the users, but I don't have 5 contacts named Adrian or two contacts named Ajoy. There are 3 different Adrians there and 1 Ajoy, but a couple of the Adrians have more than one phone number. My Skype user interface (version 3.5.454 on an iPad2 running iOS 5.0.1) puts a single gigantic icon on the screen for each <em>phone number</em>. That's right, one icon per <strong>number</strong>, not one icon per <strong>person</strong>. With all this screen real estate on an iPad, they choose a layout that only puts 20 contacts on the screen at the same time! (Ironically, Apple's Contacts app only shows 12 at a time! Only 3 more than my iPhone 4) Where is the list of users? Why can't I have name down one column and phone number down the other (so I can see whether I'm dialing their work, home or mobile)? And really, in 2011, do we have the technology to understand that a single person might have more than one phone number!? This app is only a few months old. How did they write something this bad in 2011?</p>
<h2>Contacts? We don't need no steenking contacts?</h2>
<p>And I can't jump to groups of users by letter (e.g., can't jump to users beginning with A or M or P). I have about 300 users in my phone, which means about 700 icons on my iPad screen. Do you think I'm going to flick through these with gestures? Fat chance. So I can search at the top of the screen. That's helpful, but this UI design is still totally flawed and fundamentally useless. Can I sort by last name instead of first letter? No. Can I display "Lastname, Firstname"? No. App of the year indeed. The contacts list on my Palm Professional in 1998 was better than this.</p>
<p>And Skype contacts aren't shown alongside iPad contacts. They're over in their own separate page. By contrast, the way Apple gets stuff like this right is by hiding stupid details like the difference between a Skype contact and a phone contact. Think of how iMessage transparently works out whether or not it can use the data connection or must use an SMS. Skype should teach me not to care whether I'm reaching my colleague by Skype or by phone. You want to sell more Skype credit, right? Hide the distinction between real phone numbers and skype IDs a little better. Blur the lines. Let there be just one contact for "James Smith" and let it include his Skype, mobile number (for SMS via Skype credit) and other numbers. When I tap on James, ask me how I want to connect. But don't give me 2 unlabeled icons for James in this screen (one for home, one for mobile) and another unlabeled icon for him back on a different page (where his Skype account is).</p>
<h2>Only one other feature left: history management</h2>
<p>And the history. I can 'edit' my history, but that's a stupid feature. What does it take to delete an item from the history? Two taps no matter what. I can drag left to right to reveal the 'delete' button, and then I can tap delete. Or I can tap the 'edit' button and do two different taps: tap the red delete symbol and then tap 'delete'. But only one at a time. I can't tap a bunch of them and then delete all the ones I marked. So who cares? Why do I have two modes of deleting history items that both operate on items one at a time and both take two taps to delete an item?</p>
<p>This is not iDevice UI design. This is half-baked mimickry of other apps. Think of the bulk delete in the Mail app and you'll see what bulk delete is supposed to look like. Notice that the iMessage feature in iOS has a 'clear all' button and you'll see what Skype is missing in its history management. And what about deleting all history items from contact A while leaving the ones related to contact B?</p>
<p>And configuration options? Preferences? Tweaks to the UI to customise it to my tastes? None.</p>
<h2>Conclusion</h2>
<p>If I were nominating Skype for iPad as an <em>Anything</em> of the Year, it would be "<span style="color: #333399;">Worst User Interface I was Willing to Put Up With Because the Features Were Compelling Enough</span>". Or "<span style="color: #333399;">Feature So Beneficial to Business that I Would Use It Despite It's Awful UI</span>". This app only has a handful of UI features to begin with. And each one is amateurish and clumsy. It makes you wonder if the team members that work on <a href="http://itunes.apple.com/gb/app/skype-for-ipad/id442012681?mt=8" target="_blank">Skype for iPad</a> actually own and use iPads in their daily lives. It's hard to believe that they do.</p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2011/skype-for-ipad-not-business-app-of-the-year-puhleeze/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Portrait of a Failed Security Dashboard</title>
		<link>http://paco.to/2011/portrait-of-a-failed-security-dashboard</link>
		<comments>http://paco.to/2011/portrait-of-a-failed-security-dashboard#comments</comments>
		<pubDate>Wed, 26 Jan 2011 22:41:52 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://paco.to/?p=436</guid>
		<description><![CDATA[The Department of Homeland Security announced that it was discontinuing its color-coded security advisory system today. In the software security world we often try to have big dashboards with red, yellow, and green indicating important things about our software. This is a great example of where such dashboards fail. If you look at the DHS [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.dhs.gov/" target="_blank">Department of Homeland Security</a> announced that it was <a href="http://news.blogs.cnn.com/2011/01/26/dhs-ending-color-coded-terror-alert-system/" target="_blank">discontinuing its color-coded security advisory system</a> today. In the software security world we often try to have big dashboards with red, yellow, and green indicating important things about our software. This is a great example of where such dashboards fail.<span id="more-436"></span></p>
<p>If you look at the DHS <a href="http://www.dhs.gov/xabout/history/editorial_0844.shtm" target="_blank">chronology of changes to the advisory system</a>, you can see that it came in at yellow and was mostly yellow for its first 4 years. In response to the threat posed by liquids on planes, the threat level was briefly raised to red, then it settled down at orange and DHS seems to have forgotten it. For more than 4 years it has just sat at orange—unloved, untended, unimportant.</p>
<div id="attachment_437" class="wp-caption alignnone" style="width: 310px"><a href="http://paco.to/wp-content/uploads/2011/01/Threats2.png"><img class="size-medium wp-image-437" title="DHS Threat Levels" src="http://paco.to/wp-content/uploads/2011/01/Threats2-300x182.png" alt="DHS Threat Level" width="300" height="182" /></a><p class="wp-caption-text">DHS Threat Level</p></div>
<p>This is typical of security dashboards. A zillion complexities are somehow squeezed into four ordinal color values. Complex qualities like geography, industry, mode of transportation, political affiliation, population density, and dozens of other factors contribute to how likely or unlikely any given target is on any given day. And somehow, all these zillions of factors were funneled into one big color that is wrong for most people.</p>
<p>It's arguable that the threat level has been green, for example, for huge swaths of the American heartland. Or yellow for certain industries while orange—or even red—for others. It is not clear how anyone anywhere benefited from this dashboard during its 9-year tenure. The fact that it sat at one color for 4 years is just testimony to how impossible it is to decide which of the zillion things justify a bump up or down on so coarse a measure.</p>
<p>As we create security dashboards in software, or in business risk, or in functional testing, or anything else that is hard to measure but begging for metrics, let this be a cautionary tale about dialing the resolution down so far that it becomes meaningless.</p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2011/portrait-of-a-failed-security-dashboard/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Funny math, microwaves, and user interface</title>
		<link>http://paco.to/2009/funny-math-microwaves</link>
		<comments>http://paco.to/2009/funny-math-microwaves#comments</comments>
		<pubDate>Sun, 22 Nov 2009 15:39:42 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://paco.to/?p=375</guid>
		<description><![CDATA[I've been contemplating the math that my microwave uses. It's kinda weird. If you forget that it works on time values instead of regular integers, you can get some surprising responses. My microwave oven is digital, so I enter a set of numbers to indicate the cooking time. I'm not sure if all microwaves are [...]]]></description>
			<content:encoded><![CDATA[<p>I've been contemplating the math that my microwave uses. It's kinda weird. If you forget that it works on time values instead of regular integers, you can get some surprising responses.</p>
<p>My microwave oven is digital, so I enter a set of numbers to indicate the cooking time. I'm not sure if all microwaves are like mine, but mine will accept integer values that are not logical clock values. I can enter, for example, 75, and it will run for 75 seconds. If you forget, for an instant, that you're dealing with clock values, the inputs and outputs (what you type and how long it runs) can seem pretty weird.<span id="more-375"></span>Consider the following inputs and outputs:</p>
<table border="0">
<tbody>
<tr>
<th>Input</th>
<th>Output</th>
</tr>
<tr>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>99</td>
<td>99</td>
</tr>
<tr>
<td>100</td>
<td>60</td>
</tr>
<tr>
<td>101</td>
<td>61</td>
</tr>
<tr>
<td>199</td>
<td>159</td>
</tr>
<tr>
<td>200</td>
<td>120</td>
</tr>
<tr>
<td>299</td>
<td>219</td>
</tr>
</tbody>
</table>
<p>I decided to try to mock this up in Excel. It turns out that you can paste this into a cell, and it will give the output (number of seconds) given the input (integers typed on the keypad).</p>
<p><code>=IF(A1&lt;100,A1,(TRUNC(A1/100)*60)+(A1-(TRUNC(A1/100)*100)))</code></p>
<p>I like this as an example of user interface design because it has some really unintuitive effects. I have some ideas how I might use this one day in training testers and security folks.</p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2009/funny-math-microwaves/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time warp: when facebook&#8217;s localization goes wrong</title>
		<link>http://paco.to/2009/facebook-localization-goes-wrong</link>
		<comments>http://paco.to/2009/facebook-localization-goes-wrong#comments</comments>
		<pubDate>Wed, 21 Oct 2009 05:03:19 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Web Stuff]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[localization]]></category>

		<guid isPermaLink="false">http://paco.to/?p=372</guid>
		<description><![CDATA[Facebook is savvy about time zones and the fact that its users span the globe. But notice this conversation I had with a friend. He sent it at 12:39am on October 21st. I replied 3 hours earlier. Now, if you look at our profiles, Roy and I live in the same time zone. Normally this [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_373" class="wp-caption alignright" style="width: 331px"><img class="size-full wp-image-373" title="TimeWarp" src="http://paco.to/wp-content/uploads/2009/10/localtime1.png" alt="Time Warp" width="321" height="248" /><p class="wp-caption-text">Time Warp</p></div>
<p>Facebook is savvy about time zones and the fact that its users span the globe. But notice this conversation I had with a friend. He sent it at 12:39am on October 21st. I replied 3 hours <strong>earlier</strong>. <img src='http://paco.to/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Now, if you look at our profiles, Roy and I live in the same time zone. Normally this would never happen. But, I happen to be in the UK when this happened. I think I replied a couple hours after his message, but at you'll see, it's essentially impossible to know, given what I see.<span id="more-372"></span></p>
<p>I think it has decided that I'm on the west coast. I'll have to go figure out if that's right. Without putting the time zones in there, though, it is impossible to sort out who sent what and when. You can't tell if there's an actual error in the time stamping, an error in my user profile or Roy's user profile (e.g., one of us has told facebook that we're in some weird location), or if there's an error in the localization. That is, facebook could have figured out that I'm in the UK and tried to display local times, but then goofed up the conversion to my local time zone.</p>
<p>I wonder what kind of software testing you would have to do, if you couldn't change the display to add in the time zone. Could this be tested in its current form? Could mistakes be distinguished from correct behavior?</p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2009/facebook-localization-goes-wrong/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>50 Ways to Inject Your SQL</title>
		<link>http://paco.to/2009/50-ways-to-inject-your-sql</link>
		<comments>http://paco.to/2009/50-ways-to-inject-your-sql#comments</comments>
		<pubDate>Mon, 15 Jun 2009 01:48:49 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[Fun Stuff]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Web Stuff]]></category>
		<category><![CDATA[language]]></category>

		<guid isPermaLink="false">http://paco.to/?p=347</guid>
		<description><![CDATA[I did a Parody of Paul Simon's "50 Ways to Leave Your Lover." It's very geeky, though. It's "50 Ways to Inject Your SQL." Yes, that's me singing. I got the idea after explaining some really crappy code to my wife and how it did a ridiculous job protecting against SQL injection. I said "there [...]]]></description>
			<content:encoded><![CDATA[<p>I did a Parody of Paul Simon's "50 Ways to Leave Your Lover." It's very geeky, though. <a href="http://www.youtube.com/watch?v=5pSsLnNJIa4"><img class="alignleft" src="http://i2.ytimg.com/vi/5pSsLnNJIa4/default.jpg" alt="" width="120" height="90" /></a>It's "<a href="http://www.youtube.com/watch?v=5pSsLnNJIa4" target="_blank">50 Ways to Inject Your SQL</a>." Yes, that's me singing.<span id="more-347"></span></p>
<p>I got the idea after explaining some really crappy code to my wife and how it did a ridiculous job protecting against SQL injection. I said "there must be 50 ways to inject SQL into that code." That's when she sang a couple bars and I realized it would be a great idea. Now, my singing it might not have been such a great idea, but the parody was a good idea.<br />
<object width="425" height="344" data="http://www.youtube.com/v/5pSsLnNJIa4&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/5pSsLnNJIa4&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /></object></p>
<p>I downloaded the music from a MIDI site, and then arranged it in GarageBand. Here are the lyrics:</p>
<p><em>I see your input's not validated properly<br />
You have to check it at all tiers: 1, 2 and 3<br />
Give me a browser and quite soon you will agree. There must be<br />
50 ways to inject your SQL</em></p>
<p><em>You see it really is my business to intrude<br />
The CTO wants to see this web app broke into<br />
Turn on my proxy and all doubt will be removed. There must be<br />
50 ways to inject your SQL<br />
50 ways to inject your SQL</em></p>
<p><em>Try a quick hack, Jack<br />
Add a new row, Joe<br />
Try an insert, Kurt<br />
Change their SQL query</em></p>
<p><em>Evade the regex, Rex<br />
Encode it all in hex<br />
Unbalance the quotes, Vinod<br />
And change the query</em></p>
<p><em>Break the syntax, Max<br />
Use a backslash, Cash<br />
Try command shell, Mel,<br />
And change the query</em></p>
<p><em>Use "one equals one," son,<br />
Unhandled exception!<br />
Read the stack trace, ace<br />
and change the query</em></p>
<p><em>He said our application is secure against your kind<br />
There are no simple vulnerabilities to find<br />
I said your coders write their code like they are blind, there must be<br />
50 ways to inject your SQL</em></p>
<p><em>He said our logs show unexpected funds were sent<br />
Its probably time we started using Prepared-Statements<br />
I said I'm glad you're seeing what I meant, there were<br />
50 ways to inject your SQL<br />
50 ways to inject your SQL</em></p>
<p><em>Break the syntax, Max<br />
Use a backslash, Cash<br />
Try command shell, Mel,<br />
And change the query</em></p>
<p><em>Use "one equals one," son,<br />
Unhandled exception!<br />
Read the stack trace, ace<br />
and change the query</em></p>
<p><em>Try a quick hack, Jack<br />
Add a new row, Joe<br />
Try an insert, Kurt<br />
Change their SQL query</em></p>
<p><em>Evade the regex, Rex<br />
Encode it all in hex<br />
Unbalance the quotes, Vinod<br />
And change the query</em></p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2009/50-ways-to-inject-your-sql/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Book Review:</title>
		<link>http://paco.to/2009/book-review</link>
		<comments>http://paco.to/2009/book-review#comments</comments>
		<pubDate>Fri, 24 Apr 2009 02:49:20 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[fuzz testing]]></category>
		<category><![CDATA[fuzzing]]></category>

		<guid isPermaLink="false">http://paco.to/?p=316</guid>
		<description><![CDATA[I recently read Ari Takanen's Fuzzing for Software Security Testing and Quality Assurance. This is a valuable book on fuzz testing, and timely. Good Things He really puts fuzzing in context. Fuzz testing has been around for a long time, and this book gives you the full historical perspective, as well as a modern view. [...]]]></description>
			<content:encoded><![CDATA[<p>I recently read Ari Takanen's <a href="http://www.amazon.com/gp/product/1596932147?ie=UTF8&amp;tag=pacohope-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1596932147">Fuzzing for Software Security Testing and Quality Assurance</a>. This is a valuable book on fuzz testing, and timely.<span id="more-316"></span></p>
<div class="wp-caption alignright" style="width: 88px"><a href="http://www.amazon.com/gp/product/1596932147?ie=UTF8&amp;tag=pacohope-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1596932147"><img style="border: 0pt none;" title="Fuzzing for Software Security Testing and Quality Assurance" src="/images/fuzzing-book.jpg" border="0" alt="" width="78" height="110" /></a><p class="wp-caption-text">Fuzzing for Software Security Testing and Quality Assurance</p></div>
<h2>Good Things</h2>
<ul>
<li>He really puts fuzzing in context. Fuzz testing has been around for a long time, and this book gives you the full historical perspective, as well as a modern view.</li>
<li>Fuzz testing is important. When Gary McGraw and company did their <a href="http://bsi-mm.com/" target="_blank">Building Security In Maturity Model</a>, one of the activities that virtually everyone did was fuzz testing. Clearly we need books like this to get everyone onboard.</li>
<li>Although Ari is CTO of <a href="http://www.codenomicon.com/" target="_blank">Codenomicon</a>, a commercial fuzz testing tool vendor, the book is not a pitch for his tool. He actually gives lots and lots of information on a broad variety of tools, including free tools. It's a complete and honest vision that is not overly promoting his company's product.</li>
<li>I learned a lot of fundamentals that make a difference to how I fuzz test things. For example, I now understand mutational versus generational fuzzers. They each have benefits and you probably want some of both for good coverage.</li>
</ul>
<h2>The Not-So-Good</h2>
<ul>
<li>I think he spends too much time talking about motherhood and apple pie security things. Things like security testing, risk analysis, code analysis, etc. There have been ample trees killed on these topics and I don't think the treatment in this book really adds to that body of knowledge. I would have been happier with just some references to the rest of the world.</li>
<li>The comparisons of commercial and free tools are intermixed with all this extra security discussion. So sometimes you have to read about security metrics or some other broad topic in order to find a specific example of a specific tool.</li>
<li>The authors' perspective is too much <em>fuzzing über alles</em>. They downplay the value of techniques like static code analysis and architecture risk analysis. Those techniques are complementary, not counter, to fuzz testing.</li>
</ul>
<p>I like the book a lot and am glad I have it. I recommend it.</p>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=pacohope-20&amp;l=as2&amp;o=1&amp;a=1596932147" border="0" alt="" width="1" height="1" /></p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2009/book-review/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Five Reasons for Software Certifications</title>
		<link>http://paco.to/2009/five-reasons-for-software-certifications</link>
		<comments>http://paco.to/2009/five-reasons-for-software-certifications#comments</comments>
		<pubDate>Mon, 20 Apr 2009 02:02:09 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://paco.to/?p=305</guid>
		<description><![CDATA[Several people I respect (notably Gary McGraw) as well as others that I don't really know (e.g., the author of this blog post "5 reasons why software certs suck"), have argued vehemently against certifications recently. I am a subject matter expert for the new Certified Secure Software Lifecycle Professional (CSSLP) certification. I help write the [...]]]></description>
			<content:encoded><![CDATA[<p>Several people I respect (notably <a href="http://www.cigital.com/~gem/" target="_blank">Gary McGraw</a>) as well as others that I don't really know (e.g., the author of <a href="http://www.testsquad.org/2009/04/5-reasons-why-software-certifications.html" target="_blank">this blog post</a> "5 reasons why software certs suck"), have argued vehemently against certifications recently. I am a subject matter expert for the new <a href="http://www.isc2.org/csslp" target="_blank">Certified Secure Software Lifecycle Professional</a> (CSSLP) certification. I help write the exam questions. Obviously I wouldn't do it if I didn't believe it had some value. So I'm going to try to write a few reasons why they are worthwhile.<span id="more-305"></span>The author of the blog post is sorta contradictory. In one case he says certifications don't matter because the companies he respects (e.g., Microsoft and Google) as well as the people he admires (e.g., Wozniak) don't have them. He simultaneously, and contrarily says that there are times when you'll be passed over in hiring because another candidate has more certs than you (i.e., because the certs do matter). Which is it? It is neither and it is both.</p>
<h2>1. Certifications provide common context and vocabulary</h2>
<p>Someone who has completed a certification, no matter how trivial, has assimilated some of the vocabulary, context, and culture that the certification tries to document. I expect someone holding a CISSP, CSSLP, GIAC, GSEC or similar certificate to speak a certain language and understand certain terms when I say them. Let's not mistakenly ascribe some loftier goal and then be frustrated when the certification's candidates don't live up to them.</p>
<h2>2. Certifications are about minimum competence, not maximum</h2>
<p>A certification is meant to recognize something you know. There are those who cram for a certification exam, in order to appear, for a brief moment, to know the material that the exam tests. No one thinks that the people who study momentarily are the same as those who have a long career behind their passing score. It's very difficult to design a test that cannot be crammed while staying within the bounds of cost-effective administration. Think of it this way: Mario Andretti has a drivers license in his wallet. So do I. His driving skills and mine are not comparable at all, but we both passed a test that certified a minimum competancy. He also has credentials for Formula 1 racing and years of career racing that I do not. Let's not, for a moment, consider trying to capture his experience (or Microsoft's or Wozniak's) in a test. We are just establishing minimum competence.</p>
<h2>3. The world needs objective measures that are comparable</h2>
<p>Ignore for a moment what value you place on the content of the exam. If the exam is carefully standardized you have a tool for comparison. If you have ever had to hire someone, you know how people make buzzword-compliant resumes today that say almost anything that could possibly help get the person a job. As a hiring official you have to sort out the BS from the actual capabilities. With a certification you have a better starting point for that weed-out process. If I see J2EE on a resume, I have a long series of questions that will get at their experience one way and another. If I see CSSLP on the resume, I know what they should know.</p>
<p>Now earlier I said ignore the value of the content. Now, let's evaluate the value of the content of the cert. If it has the ability to establish context and vocabulary and minimal familiarity with topics, I can work with that. If I come to discover that it has more value than just vocabulary (as a CCIE does), then I learn to ascribe more meaning to finding it on a resume.</p>
<h2>4. Stop insulting everyone</h2>
<p>Both the testsquad blog post and the popular anti-cert crowd make accusations of brainlessness. They claim that once you get a cert, you'll feel the rush like heroine and have to keep getting more and more certs to feed your addiction. They also claim that employers myopically focus on certs and somehow overlook the true value of the candidate. I say that the employer who overlooks a candidate's true value because he sees CSSLP on the resume would be equally duped by the long list of buzzword-compliant terminology and some good interview coaching by a placement agency. The root of <em>that</em> problem is the interviewer/employer, not the certification. I don't see anything inherently worse about a cert than a good coach and a bunch of buzzwords. If anything the certs are at least moderated and standardized.</p>
<h2>5. This train is leaving the station</h2>
<p>You can be on it or under it. The industry is attempting to create standardized comparison for various kinds of capabilities. We need to find a way to do this with integrity and value. The ivory tower people say "you can't tell if someone really knows their stuff based on a multiple choice test." There are lots of NP-Complete problems in the world that we don't think we can solve in polynomial time, yet we can apply heuristics and do various things to limit how much time we spend solving them. We need to apply the same sort of best-effort focus on quality while balancing real-world constraints. Planting our heads in the sand and saying it can't be done is not an option. The people who want the standardization of capabilities will continue to push. Those of us smart enough to know how hard this is to do can either help, or shut up. Complaining, though, is not an option.</p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2009/five-reasons-for-software-certifications/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>New Test Automation book</title>
		<link>http://paco.to/2009/elfriede-dustins-test-automation-book</link>
		<comments>http://paco.to/2009/elfriede-dustins-test-automation-book#comments</comments>
		<pubDate>Fri, 13 Mar 2009 13:42:09 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://paco.to/?p=289</guid>
		<description><![CDATA[Some colleagues of mine have recently published a book Implementing Automated Software Testing. Elfriede and Thom were key organizers of VERIFY 2007, a software testing conference.]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://rcm.amazon.com/e/cm?t=pacohope-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=0321580516&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;float:right;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
<p>Some colleagues of mine have recently published a book <a href="http://www.amazon.com/gp/product/0321580516?ie=UTF8&#038;tag=pacohope-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321580516">Implementing Automated Software Testing</a>.</p>
<p>Elfriede and Thom were key organizers of <a href="http://verifyconference.com/">VERIFY 2007</a>, a software testing conference.</p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2009/elfriede-dustins-test-automation-book/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Case sensitive filesystems: The bane of Mac OS X</title>
		<link>http://paco.to/2009/case-sensitive-filesystems-the-bane-of-mac-os-x</link>
		<comments>http://paco.to/2009/case-sensitive-filesystems-the-bane-of-mac-os-x#comments</comments>
		<pubDate>Fri, 27 Feb 2009 00:50:51 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[acrobat]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://paco.to/?p=279</guid>
		<description><![CDATA[I now have a variety of applications that are incompatible with Mac OS X because I chose to install a case-sensitive filesystem 3 years ago when I got my Mac. Yes. THREE YEARS AGO. It has been possible to have a case sensitive filesystem (i.e., where files named READme, ReAdMe, and readme are all different [...]]]></description>
			<content:encoded><![CDATA[<p>I now have a variety of applications that are incompatible with Mac OS X because I chose to install a case-sensitive filesystem 3 years ago when I got my Mac. Yes. THREE YEARS AGO. It has been possible to have a case sensitive filesystem (i.e., where files named READme, ReAdMe, and readme are all different files) for many years. Several major software vendors have been completely caught by this and failed to (a) account for it during development, (b) account for it in testing, or (c) provide any kind of solution.</p>
<p>The vendors that give me grief right now are:</p>
<ul>
<li>Logitech (Harmony Remote manager)</li>
<li>Red Marble Games (Democracy 2)</li>
<li>Adobe (Acrobat 9)</li>
</ul>
<p>Now what really burns me up is that I just upgraded to Acrobat 9 from Acrobat 7 on Mac OS, and Acrobat 7 WORKED on a case-sensitive filesystem. It's a <strong>regression</strong>!<span id="more-279"></span></p>
<p>To add insult to injury, Adobe's remedy for <strong>their screw-up</strong> is for me to <strong>reformat my hard drive</strong>. I see: you can't program or test correctly, so you'll just ask thousands of people each to donate many hours charitably (for free!) backing up, reformatting, and restoring so that they can have the pleasure of running your software (that they had to pay for).</p>
<p>If you look at <a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb405970#solution%209" target="_blank">their recommended solution</a>, that is EXACTLY what they expect. I'm flabbergasted.</p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2009/case-sensitive-filesystems-the-bane-of-mac-os-x/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordTwist&#8217;s scoring</title>
		<link>http://paco.to/2008/wordtwists-scoring</link>
		<comments>http://paco.to/2008/wordtwists-scoring#comments</comments>
		<pubDate>Mon, 13 Oct 2008 03:35:18 +0000</pubDate>
		<dc:creator>paco</dc:creator>
				<category><![CDATA[Fun Stuff]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Web Stuff]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[WordTwist]]></category>

		<guid isPermaLink="false">http://paco.to/?p=244</guid>
		<description><![CDATA[By cheating I figure out a bit about how WordTwist calculates scores. It changes how fun I think the game is.]]></description>
			<content:encoded><![CDATA[<p>My friends got me playing <a href="http://apps.facebook.com/wordtwist/index.php" target="_blank">WordTwist</a> on Facebook, and I started playing it in "ladder" mode. That's where you sorta compete against your friends and see if you can get the highest score. Well, one of my friends had a score of 181, which seemed pretty amazing. I'd try and try and get nowhere near it. Of course, I'd frequently only get 12 or 15 words out of 30-odd words. Sometimes I'd have a good round, but it was rare for me to break 100 points in a single round.</p>
<p>Finally I decided I had to cheat and see what the maximum score was. It turns out to be really easy, but I'm not going to reveal it all here and now. <span id="more-244"></span>Suffice it to say that, with a little bit of sleuthing, you can get a word list like this:</p>
<p><code>CALYXES,SCALY,SCALE,LACES,CALYX,AXLES,SALE,EASY,CLAY,CASE,AYES,AXLE,AXES, LACE,LACY,LAYS,LEAS,SEAL,SEXY,SLAY,YEAS,ALES,ACES,CAYS,LAY,LAX,LAC,CAY,AYE,AXE, ALE,LEA,LYE,SAC,YES,YEA,SLY,SEX,SEC,SEA,SAY,SAX,ACE</code><br />
And you can get it before you start the game. That means you can have the word list on your screen and all you have to do is type them in. Assuming I can type that many words in before the 120 or 60-second clock runs out, I get all the words.</p>
<p>What frustrates me is the fact that, even when I cheat, I can't beat my friend's score of 181. I am now able to see the "luck of the draw" factor. Some boards just aren't that valuable. They make you spend time playing them, but even if you're flawless you won't get a high score.</p>
<p>Knowing that took a lot out of the game for me. At least in ladder mode. Playing competitively against friends (without cheating) is still fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://paco.to/2008/wordtwists-scoring/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

