<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Seven Seconds</title>
	<atom:link href="http://sevenseconds.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sevenseconds.wordpress.com</link>
	<description>Is Seven Seconds an Eternity or What?</description>
	<lastBuildDate>Wed, 18 Jan 2012 15:30:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sevenseconds.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Seven Seconds</title>
		<link>http://sevenseconds.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sevenseconds.wordpress.com/osd.xml" title="Seven Seconds" />
	<atom:link rel='hub' href='http://sevenseconds.wordpress.com/?pushpress=hub'/>
		<item>
		<title>If We Are Not Learning&#8230;Then Maybe We Are Not Evolving</title>
		<link>http://sevenseconds.wordpress.com/2012/01/17/if-we-are-not-learning-then-maybe-we-are-not-evolving/</link>
		<comments>http://sevenseconds.wordpress.com/2012/01/17/if-we-are-not-learning-then-maybe-we-are-not-evolving/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 20:05:48 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=499</guid>
		<description><![CDATA[This weekend I had one of those moments when an idea gets in your head and you just can&#8217;t let it go. I was listening to NPR on Monday night as I was driving to pick-up dinner for the family. It was an episode of All Things Considered, specifically a segment about violist, Joshua Bell. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=499&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This weekend I had one of those moments when an idea gets in your head and you just can&#8217;t let it go. I was listening to NPR on Monday night as I was driving to pick-up dinner for the family. It was an episode of <a href="http://www.npr.org/templates/rundowns/rundown.php?prgId=2&amp;prgDate=01-16-2012">All Things Considered</a>, specifically a <a href="http://www.npr.org/templates/transcript/transcript.php?storyId=145191200">segment </a>about violist, Joshua Bell. Robert Siegel was interviewing Joshua Bell and he played a piece that Bell performed in 1989. He asked Bell what he thought about his performance more than 20 years after playing the piece. Below is a snippet of the interview&#8230;</p>
<p>	SIEGEL: The relationship between you, the artist, and the piece of music that you&#8217;ve performed over decades, is it something constant and steady, or are there moments of evolution when you decide after some performance, I&#8217;m going to do this differently now, I mean, I&#8217;m going to rethink that particular movement? Or does it just change very naturally without being so self-conscious about it?<br />
BELL: Well, a lot of what happens in &#8211; and as a &#8211; we&#8217;re basically evolving and learning. You&#8217;re a constant student as a musician. So &#8211; and a lot of that, it just evolves naturally. But there are also moments where the light bulb goes off in your head and quantum jumps in understanding that those happen as well, and those are wonderful moments. You know, those often come after times where you feel a little bit stagnant or frustrated.</p>
<p>But I believe in things happening naturally. I think if you try to do something artificially or try to change your style or &#8211; very self-consciously, I think it won&#8217;t be honest.</p>
<p>SIEGEL: But even trying that hard, it&#8217;ll change because you&#8217;re growing as an artist.</p>
<p>BELL: It does change. We all &#8211; I mean, we change anyway. I mean, as human beings, we change. We &#8211; the more experience we have in life, it all informs and is reflected in everything we do artistically.</p>
<p>What got me thinking was Bell&#8217;s notion that we are constantly evolving and learning. We are &#8220;constant students&#8221; he says. Interesting enough as software engineers it&#8217;s rare that continue our education. The best programmers are learning new patterns, languages and skills. The vast majority of software engineers and software practitioners fail to continue their education, whether in a formal or informal manner.</p>
<p>When I got 2 or 3 months without learning something new, I feel stale. I hate that feeling. Lately I&#8217;ve been teaching myself Ruby and re-learning MySQL. I&#8217;ve been using the MCPS library and their online access to the O&#8217;Reilly catalog as my main resource. I don&#8217;t necessarily need a class or a workshop, just a little motivation.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/499/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/499/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/499/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=499&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2012/01/17/if-we-are-not-learning-then-maybe-we-are-not-evolving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>
	</item>
		<item>
		<title>Blackboard Performance Tuning and Optimization Guide</title>
		<link>http://sevenseconds.wordpress.com/2011/08/01/blackboard-performance-tuning-and-optimization-guide/</link>
		<comments>http://sevenseconds.wordpress.com/2011/08/01/blackboard-performance-tuning-and-optimization-guide/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 13:52:58 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=495</guid>
		<description><![CDATA[I&#8217;m hoping a few lurkers to my blog area will chirp up once they see the title to this document. Yes, we are about to undertake a new version of the Blackboard Learn Performance Tuning and Optimization Guide this fall. We have a big benchmark project running from September through November with intentions to publish [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=495&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m hoping a few lurkers to my blog area will chirp up once they see the title to this document. Yes, we are about to undertake a new version of the Blackboard Learn Performance Tuning and Optimization Guide this fall. We have a big benchmark project running from September through November with intentions to publish a new guide in the winter. I&#8217;m hoping that this will be our last &#8220;big&#8221; guide and going forward we could start building more wiki like articles smaller in size and nature.</p>
<p>A dream scenario would be that we as a community put our heads together and co-author a more collaborative document that&#8217;s living and breathing. It always feels as though once we put out a PDF, the document is immediately obsolete. Hopefully that won&#8217;t be the case with this guide. We will have to see.</p>
<p>We are in the early outlining stages of the document right now. I&#8217;m mainly putting together a master list of platform components to focus on. The most glaring holes as I see from the last guide is the incredible lack of information we left out on Blackboard specific information such as Snapshot, Content Exchange and Bb-Tasks to name a few. That&#8217;s my bad as I organized the last document and wrote most of the content. The other big hole that I&#8217;m seeing right now is Lucene. We have a few implementations of Lucene in the product that never gets the appropriate care and feeding.</p>
<p>My ultimate goal is to get the customer community involved in writing this blog. I did a quick Twitter post a few minutes ago soliciting some early thoughts. I&#8217;m hoping to get some feedback from the community about what they want in the guide, versus what would they remove. Now iss everyone&#8217;s chance to have their voice heard.</p>
<p>Send me a DM to @seven_seconds if you are interested in participating.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/495/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=495&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/08/01/blackboard-performance-tuning-and-optimization-guide/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>
	</item>
		<item>
		<title>Slides for So Your Boss Wants You to Performance Test Blackboard</title>
		<link>http://sevenseconds.wordpress.com/2011/07/12/slides-for-so-your-boss-wants-you-to-performance-test-blackboard/</link>
		<comments>http://sevenseconds.wordpress.com/2011/07/12/slides-for-so-your-boss-wants-you-to-performance-test-blackboard/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 15:47:42 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[BbWorld]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=492</guid>
		<description><![CDATA[Thanks to all of those who attended my session on &#8220;So Your Boss Wants to Performance Test Blackboard&#8221; at DevCon 2011. It was a delight to meet so many customers with such great questions. You can access the slides here: So Your Boss Wants You to Performance Test Blackboard View more presentations from sfeldman13<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=492&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Thanks to all of those who attended my session on &#8220;So Your Boss Wants to Performance Test Blackboard&#8221; at DevCon 2011. It was a delight to meet so many customers with such great questions.</p>
<p>You can access the slides here:</p>
<div id="__ss_8575679" style="width:425px;"><strong><a title="So Your Boss Wants You to Performance Test Blackboard" href="http://www.slideshare.net/sfeldman13/so-your-boss-wants-you-to-performance-test-blackboard" target="_blank">So Your Boss Wants You to Performance Test Blackboard</a></strong> <iframe src='http://www.slideshare.net/slideshow/embed_code/8575679' width='425' height='348' scrolling='no'></iframe></p>
<div style="padding:5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/sfeldman13" target="_blank">sfeldman13</a></div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/492/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/492/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=492&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/07/12/slides-for-so-your-boss-wants-you-to-performance-test-blackboard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>
	</item>
		<item>
		<title>So Your Boss Wants You to Performance Test&#8230;The Practicalities of Getting Started</title>
		<link>http://sevenseconds.wordpress.com/2011/07/08/so-your-boss-wants-you-to-performance-test-the-practicalities-of-getting-started/</link>
		<comments>http://sevenseconds.wordpress.com/2011/07/08/so-your-boss-wants-you-to-performance-test-the-practicalities-of-getting-started/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 17:27:47 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[BbWorld]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=484</guid>
		<description><![CDATA[Expectations have been established about Why, What, Who, When and How. Now it&#8217;s time to move from the definition stage to planning the effort. Planning a performance benchmark or even a small-scale performance test is no cup of tea. It&#8217;s challenging from a time, resource and skill perspective. Not all of the resources are in-house to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=484&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><code></code><a href="http://sevenseconds.wordpress.com/2011/06/28/so-your-boss-wants-you-to-performance-test-the-realities-of-expectation-setting/">Expectations</a> have been established about Why, What, Who, When and How. Now it&#8217;s time to move from the definition stage to planning the effort. Planning a performance benchmark or even a small-scale performance test is no cup of tea. It&#8217;s challenging from a time, resource and skill perspective. Not all of the resources are in-house to take on the feat. Of course it&#8217;s not like you have hours and hours of spare time to assemble the work.</p>
<p>There are some basic tenants of performance benchmarking and testing that can be followed to pull off this feat. It starts by setting goals, targets and thresholds which I will describe later. You will subsequently need to define both functional scenarios and data requirements for test interactions. No performance test is complete without writing test automation. Don&#8217;t fall hard for using &#8220;real users&#8221; to perform your tests. Why might you ask? Well a) it&#8217;s not scientific b) it&#8217;s not repeatable and c) it&#8217;s pretty tough to get hundreds of users to participate in a synchronized activity. Before a single test is run, you will need to plan how the scenarios will be distributed, sequenced and balanced, as well as the attributes of a test such as duration, workload, arrival/departure rates, think time, timeouts and abandonment.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/07/so_benchmark_know.png"><img class="alignnone size-full wp-image-485" title="so_benchmark_know" src="http://sevenseconds.files.wordpress.com/2011/07/so_benchmark_know.png?w=480&#038;h=503" alt="" width="480" height="503" /></a></p>
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<th><strong>Category</strong></th>
<th><strong>Description</strong></th>
</tr>
<tr>
<td><strong>Goals, Targets and Thresholds</strong></td>
<td>Goals, targets and thresholds are lumped together, but are not the same thing. A goal is just another way of saying performance objective. It should be measurable and traceable. The best goals align to the vision of and direction of the business. If goals can be called-out as a performance/scalability requirement you are better off. Good goals often will reference a response time percentile, throughput metric, a workload condition and a data condition.A target is measurable as well. Targets are more aligned to resources such as CPU, Memory, I/O or Network that can be presented as utilization or saturation metrics. They can also be aligned to throughput metrics such as database transactions or IOps. The key point is that they influence performance goals, but do not define them. Goals/Objectives are about the user experience, whereas targets are about the user conditions. A CPU running at 95% doesn&#8217;t affect a user necessarily. It may affect whether 100 users can receive sub 1s response times or whether an additional 100 users can interact with a sub 1s SLA.A threshold is essentially one or more acceptance criteria values. It too must be measurable. It&#8217;s conditional in nature. Typically thresholds are negative based, such as failure rate or HTTP 400/500 counts. They can also be response time variables in which abandonment might be influenced. The key point is a threshold is the boundary between what you are willing to accept or not accept.</td>
</tr>
<tr>
<td><strong>Functional Scenarios</strong></td>
<td>You might only need 1 or you may have many. Whatever the case, defining what you are functionally testing is more than click here&#8230;then here&#8230;and submit this. A lot goes into planning what you are functionally testing. You have to align your functional scenarios to your performance objectives. For instance, if you have initiative around supporting the submission of online assessments/exams by students in a lab-based scenario, it makes sense to build a scenario that accomplishes that goal. It doesn&#8217;t necessarily make sense to define scenarios that are unrelated, not relevant, not time or seasonally appropriate, or wasteful. Sometimes you will hear about &#8220;noise scripts&#8221;&#8230;well my advice is avoid them like the plague. Define the functional scenarios that you want, need and have to have.A lot goes into a functional scenario. You have to be able to define navigation and page interaction of course. Those are a given. You also have to define conditions of data. For example if your script assumes that an exam hasn&#8217;t been taken, then your user can&#8217;t attempt to retake a submitted exam, unless you script for that condition. If you are to take a 25 question test, don&#8217;t provide a 20 question test or a 50 question test. Make sure that the data aligns appropriately to your functional needs. Otherwise, your scripting requirements are going to be very complex and tricky.</td>
</tr>
<tr>
<td><strong>Test Bed (Data Model)</strong></td>
<td>I personally consider the test bed to be the most important part of a performance test or benchmark. My main reason is that your performance goals should define your data conditions that affect the workload conditions of a test. I want to test 1000 concurrent exams of 25 Questions each with no more than 3s response time for submission. Your functional scenarios ultimately have to match-up to the data set just like piecing together a puzzle.With all of this mind, don&#8217;t go into a performance testing or benchmarking exercise without synthesizing your test bed. You can have background data, but the data you test with has to be controlled and organized to accommodate the conditions of a test. If all you are doing is testing 1000 users taking the same assessment, then prepare a single assessment. Don&#8217;t forget to provide a means to either restore the data or clean it up. Never let your tests run against the same data repeatedly. It&#8217;s just not a valid test. If your test has to run through multiple iterations, make sure to either setup enough unique accounts unable to repeat the scenario, or provide additional data for the same users to interact.Sometimes your tests require your data to be setup in a transformative state, meaning that your functional scenarios require the data you are interacting with to be presented in a variety of lifecycle states. For example, you may have a functional scenario to take an exam for the first time. This would require your test bed data to be pristine. You may also have a scenario where you are scoring the results of a completed exam. This will require you to create tests with submitted responses that are not graded. Finally, you may require a scenario where a teacher reviews scored assessments in the grade center. Each of these represents a transformative state of the data. It&#8217;s important to know what you need in terms of the structure of the data and the lifecycle state of the data.</td>
</tr>
<tr>
<td><strong>Scripting</strong></td>
<td>Choosing the right scripting framework and tool can be quite complicated. First you need to identify what you can afford and what you are capable of leveraging. A lot of scripting tools are written in scripting languages like C, Python, JavaScript or Perl. There are some that use their own proprietary languages and then others that use object-oriented languages like Java or C#. Whatever the case, picking the language/framework is often a secondary exercise to picking what you can afford.There are commercial tools like LoadRunner, MSVSTS, SOASTA, Rational and Silk Performer. They are very similar in nature, but offer different features, capabilities and most importantly price points. There are open source projects like JMeter, Grinder, OpenSTA, Multi-Mechanize and Curl-Loader. Remember with open source tools you get what you get and you don&#8217;t get upset. Then there are even rich client and browser tools like Browser-Mob, Selenium, SOASTA, LISA and WebPageTest.Whatever you choose, consider what you can afford and what you can support. One last point is to beware of &#8220;Record and Playback&#8221; tools. I&#8217;ve never been a fan of those tools, which the commercial vendors often tout as their differentiator. With &#8220;Record and Playback&#8221; you lose a lot control. A lot of times you get garbage in your scripts that can cause your scripts to be functionally invalid.</td>
</tr>
<tr>
<td><strong>Scenario Planning (Interaction Model)</strong></td>
<td>Scenario planning is different then functional scenario definition. Essentially functional scenario definition is about defining what you are going to do and against what data model condition. Scenario planning is about defining when your scenarios will run, how often they will run (frequency), dependencies on other scenarios running, etc&#8230;It&#8217;s important to see this activity as orchestrating the sequence and order of test or benchmark.</td>
</tr>
<tr>
<td><strong>Load Test Definition</strong></td>
<td>The load test definition is a critical piece in setting up your actual performance test or experiment. It covers the key attributes of the test such as the workload of users, time of test (duration), some sequencing of scenarios, think time, arrival/departure rates, timeout conditions, etc&#8230;Keep in mind that there are many ways to run performance tests. You might choose a soak test, a steady-state (staircase) test, a fixed arrival rate running for a predefined duration. Not only do you define the attributes of the test workload, but you define what&#8217;s being measured and instrumented at a particular rate, as well as what systems are sending the load.</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/484/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/484/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/484/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=484&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/07/08/so-your-boss-wants-you-to-performance-test-the-practicalities-of-getting-started/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/07/so_benchmark_know.png" medium="image">
			<media:title type="html">so_benchmark_know</media:title>
		</media:content>
	</item>
		<item>
		<title>Top 10 Users&#8230;Why This is Important</title>
		<link>http://sevenseconds.wordpress.com/2011/06/28/top-10-users-why-this-is-important-2/</link>
		<comments>http://sevenseconds.wordpress.com/2011/06/28/top-10-users-why-this-is-important-2/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 13:58:29 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=384</guid>
		<description><![CDATA[Added by Stephen Feldman, last edited by Stephen Feldman on Mar 23, 2011 I&#8217;ve been meaning to write this blog for quite a while. Procrastination has definitely held me back&#8230;that and the fact that what I want to do is no simple task. When you want a complex task to be done, you better have your thoughts organized. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=384&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>Added by Stephen Feldman, last edited by Stephen Feldman on Mar 23, 2011</div>
<div>
<div>
<p>I&#8217;ve been meaning to write this blog for quite a while. Procrastination has definitely held me back&#8230;that and the fact that what I want to do is no simple task. When you want a complex task to be done, you better have your thoughts organized.</p>
<p>Over the years, I&#8217;ve considered so many different ways to forensically study what people do in the system. I&#8217;ve looked at logs. I&#8217;ve looked our ACTIVITY_ACCUMULATOR table. I&#8217;ve looked at aggregates of data as well. I&#8217;ve brought in tools like Coradiant Dynatrace and Quest User Performance Management. None of these tools has ever met my real needs. The reason is that I haven&#8217;t been able to articulate what I am really in search of.</p>
<p>I think I&#8217;ve had a few eureka moments as of late with what I&#8217;m interested in seeing. I know that I want to see what is being done when in our product. I know that I want to understand the sequence of events and the orientation of where events happen in the system. I want to understand the probability of something happening. I want to see the frequency of something happening. In the case of frequency, I want to understand the volume related to frequency. I think all of this data is relavent because it will give us more insight into predicting patterns of usage of a system.</p>
<p>Where a lot of this has come from centers around coversations I&#8217;ve had recently about Assessment performance. A lot of customers have been complaining about high-stakes assessments in which they have hundreds of students taking tests all within a lab. They have been complaining about both memory issues (makes sense) and I/O issues (inserts/updates on QTI_RESULT_DATA) which also makes sense. In the case of I/O they didn&#8217;t really call them out. Rather, after discussing, I called-out that there likely were some I/O issues based on the behavior an assessment. One of the things I&#8217;ve been suggesting to customers was to query the QTI_RESULT_DATA table to get a resultset of row&#8217;s inserted versus modified. Then put it in a scatter plot (from an isolated period of time) to see the volumes of inserts versus updates to see when the timeslices of these events were occuring. From that data, then go into their I/O sub-system and graph their IOps for those same periods of time and overlay the two charts&#8230;</p>
<div>
<div>
<pre>SQL&gt; desc QTI_RESULT_DATA;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 QTI_ASI_DATA_PK1                          NOT NULL NUMBER(38)
 PK1                                       NOT NULL NUMBER(38)
 POSITION                                           NUMBER(38)
 ASI_PLIRID                                         VARCHAR2(255)
 ASI_TITLE                                          NVARCHAR2(255)
 DATA                                               BLOB
 BBMD_RESULTTYPE                                    NUMBER(38)
 PARENT_PK1                                         NUMBER(38)
 BBMD_DATE_ADDED                                    DATE
 BBMD_DATE_MODIFIED                                 DATE
 BBMD_GRADE                                         NVARCHAR2(32)
<a href="http://sevenseconds.files.wordpress.com/2011/06/scatter_example.png"><img class="alignnone size-medium wp-image-388" title="scatter_example" src="http://sevenseconds.files.wordpress.com/2011/06/scatter_example.png?w=300&#038;h=205" alt="" width="300" height="205" /></a></pre>
</div>
</div>
<p>&nbsp;</p>
<h2><a name="Top10Users...WhyThisisImportant-BacktoMyPoint"></a>Back to My Point</h2>
<p>So all of this talk about using scatter plots to isolate time of when certain events happened in mass, got me thinking about why I wasn&#8217;t getting what I really wanted (aka&#8230;my rambling above). What I really wanted to create an identity of a user. I didn&#8217;t care about their name, just their role. I would call them &#8220;Insanely Ambitious Student&#8221; or &#8220;Constantly Connected Teacher&#8221;. It really doesn&#8217;t matter. What matters is that you can start building profiles about these users. Before you can build the profile, you have to have a starting point.</p>
<p>My starting point is to look at every entity in the system. I would like to be able to directly or indirectly trace back a row of data to a user. It&#8217;s not as simple as you think. First off, not every table has a foreign key relationship to USERS. Some tables have a tie back to COURSE_USERS, which is not a problem per se, but it&#8217;s not a straight-up look at each table with USER_PK1 foreign keys.</p>
<p>As a starting point, I would like to do a gap analysis to determine what entities can be directly tied back to the user. From that, we need to know whether the row entry can be presented as time/date value. In some cases, the entity can even show the initial INSERT versus an UPDATE. We really need to understand this system-wide, which means yes we could/would touch the monster ACTIVITY_ACCUMULATOR table.</p>
<p>We could even start with a single entity as a starting point. I would even compromise for an entity that stores USER_PK1 in it. It has to be a table that can present a many to one reference of rows to a user. A good example might be MSG_MAIN as a starting point since it covers all of the criteria.</p>
<p>We could easily look at time series data by user, as well as aggregate statistics. Both are relevant, but obviously time series is a little more visual. I think you need aggregate statistics or at a minimum binned data (binned by time series per user) like aggregate counts by user over each week as a key data point.</p>
<div>
<div>
<pre>SQL&gt; desc MSG_MAIN;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PK1                                       NOT NULL NUMBER(38)
 DTCREATED                                 NOT NULL DATE
 DTMODIFIED                                         DATE
 POSTED_DATE                                        DATE
 LAST_EDIT_DATE                                     DATE
 LIFECYCLE                                 NOT NULL VARCHAR2(64)
 TEXT_FORMAT_TYPE                                   CHAR(1)
 POST_AS_ANNON_IND                         NOT NULL CHAR(1)
 CARTRG_FLAG                               NOT NULL CHAR(1)
 THREAD_LOCKED                             NOT NULL CHAR(1)
 HIT_COUNT                                          NUMBER(38)
 SUBJECT                                            NVARCHAR2(300)
 POSTED_NAME                                        NVARCHAR2(255)
 LINKREFID                                          VARCHAR2(255)
 MSG_TEXT                                           NCLOB
 BODY_LENGTH                                        NUMBER(38)
 USERS_PK1                                          NUMBER(38)
 FORUMMAIN_PK1                             NOT NULL NUMBER(38)
 MSGMAIN_PK1                                        NUMBER(38)</pre>
</div>
</div>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/384/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/384/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=384&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/06/28/top-10-users-why-this-is-important-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/scatter_example.png?w=300" medium="image">
			<media:title type="html">scatter_example</media:title>
		</media:content>
	</item>
		<item>
		<title>Journeys Into Forensic Fishing</title>
		<link>http://sevenseconds.wordpress.com/2011/06/28/journeys-into-forensic-fishing/</link>
		<comments>http://sevenseconds.wordpress.com/2011/06/28/journeys-into-forensic-fishing/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 13:56:17 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=381</guid>
		<description><![CDATA[As performance engineers we often spend our time studying forensics after an incident occurred and most importantly when the incident was recognized by one or more people. What happens when an issue happens and nobody reports it? Lots of issues go unreported within our customer basis. It&#8217;s amazing when I sit down with customers and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=381&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As performance engineers we often spend our time studying forensics after an incident occurred and most importantly when the incident was recognized by one or more people. What happens when an issue happens and nobody reports it? Lots of issues go unreported within our customer basis. It&#8217;s amazing when I sit down with customers and they walk me through a scenario. I guess the amazing part is how nonchalant they are when they encounter an issue. Often they ignore the issue or work around them. They recognize the defect is a nuisance, but reporting the issue is often more trouble than it&#8217;s worth. We all know that most system administrators don&#8217;t have hours and hours of free time scanning log files looking for clues from issues that go unreported. Imagine a scene where cops are wandering around a busy street looking for a crime that may have or may not have actually happened&#8230;It simply doesn&#8217;t happen.</p>
<p>Who&#8217;s to say it doesn&#8217;t have to happen. In fact, lots of great software companies and organizations actively seek out issues that go unreported. They build frameworks into their products to notify development and/or support teams that an issue occurred. While it might not be reported by the user, it&#8217;s actually being reported by the system. Now that would be a dream for me. Imagine an administrative feature set that sends some form of message when an exception occurs? Granted, we might get bombarded with hundreds or thousands of these messages, but we could easily build the capability to aggregate and analyze the data so that issues could be evaluated both individually and as a holistic trend.</p>
<p>Building an administrative feature wasn&#8217;t my intention of this blog. Rather, I wanted to talk about the topic of proactively evaluating issues that may or may not be reported by issues. I call this forensic fishing. The idea is to strategically sample a software system with the intent of identifying a performance, scalability or even a functional issue as part of the sampling effort. The goal is to seek out issues or catch some fish. It&#8217;s not like you go fishing with the intent of going home empty handed right?</p>
<p>So why do I use the phrase &#8220;strategically sample&#8221;? Well, my first strategic purpose would be to sample customers who are early adopters of a release. Let&#8217;s reward early adopters by responding to issues before customers report them. The second would be to sample a customer who&#8217;s taken a patch or SP based on a fix we did. Our team is working dozens of issues per release. We verify in our lab, but ideally being able to verify with an even greater degree of confidence. Third, the whole goal of fishing is to find issues. Issues creep from release to release and go unnoticed. We may find an old issue that gets exposed because our magnify glass was fortunate to pass over it during a sampling period.</p>
<p>Of course our plan is to fish using a pretty awesome rod, aka&#8230;Dynatrace. The idea is to build a program with our colleagues in Managed Hosting to selectively pick customers for sampling. We have to identify when we sample and most importantly how long we sample. I&#8217;m a firm believer that we do not need to sample every aspect of the customer. We could run with a lightweight profile. We could selectively choose 1 node or maybe 2. If a customer had 10 nodes, it&#8217;s not worth our time to sample them all. We obviously need some low hanging fruit to initially focus on and react to. A more sophisticated inspection could and should be performed as well. What would we be looking for? We would look for everything from exceptions to unreleased connections to other forms of software anti-patterns. We would sample over short intervals like 30 minutes and use the compare features across profiles.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/381/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=381&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/06/28/journeys-into-forensic-fishing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>
	</item>
		<item>
		<title>Broken Window Theory&#8230;Exceptions and Log Messages</title>
		<link>http://sevenseconds.wordpress.com/2011/06/28/broken-window-theory-exceptions-and-log-messages/</link>
		<comments>http://sevenseconds.wordpress.com/2011/06/28/broken-window-theory-exceptions-and-log-messages/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 13:55:00 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=379</guid>
		<description><![CDATA[When I first read the Tipping Point years ago, I remember Gladwell&#8217;s fascinating story about the NYC police and how they cracked down on crime by replacing broken windows and painted over graffiti every single day/week. So if a window was broken by a stone, a brick, a bullet, whatever&#8230;it was replaced as quickly as possible. If [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=379&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I first read the Tipping Point years ago, I remember Gladwell&#8217;s <a href="http://www.gladwell.com/1996/1996_06_03_a_tipping.htm" rel="nofollow">fascinating story about the NYC police</a> and how they cracked down on crime by replacing broken windows and painted over graffiti every single day/week. So if a window was broken by a stone, a brick, a bullet, whatever&#8230;it was replaced as quickly as possible. If graffitti was on a building wall or a city vehicle, it would be quickly painted. The core idea was that if vandalism was left in place, disorder would invite even more disorder-that a small deviation from the norm would set into motion a cascade of more vandalism. When addressed in a timely manner, it established a quality standard for vandalism to not be tolerated.</p>
<p>So what does that have to do with Blackboard Learn?</p>
<p>Good question Steve. Let&#8217;s start by talking about Exceptions and Log Messages. I&#8217;ve written two blogs, one about the <a href="http://sevenseconds.wordpress.com/2011/06/28/361/" rel="nofollow">cost of an exception</a> and the second about <a href="http://sevenseconds.wordpress.com/2011/06/28/digging-into-dynatrace-exceptions-and-logging/" rel="nofollow">using Dynatrace to evaluate exceptions and logs</a>. Both of which discuss the great insight we can see quite easily with Dynatrace.</p>
<p>In the visual below you have a case of neglect. Yuck! We have broken windows everywhere. The visual is a snapshot of almost 1 million exceptions that our PVT test, which runs for about an hour. This <a href="http://galileo.pd.local/test/test_detail?testId=9090" rel="nofollow">test</a> had about 4100 unique user sessions who performed about 56,000+ page requests. You saw what I wrote right? I said 1 million exceptions from an hour worth of user activity only by 4100 unique user attempts. That&#8217;s over 230+ exceptions a second. Holy smokes batman!</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/pvt_exceptions.png"><img class="alignnone size-medium wp-image-390" title="pvt_exceptions" src="http://sevenseconds.files.wordpress.com/2011/06/pvt_exceptions.png?w=300&#038;h=201" alt="" width="300" height="201" /></a></p>
<p>&nbsp;</p>
<p>I call out the broken window theory because I see this problem of throwing exceptions as epidemic in the product. Fortunately, I&#8217;ve got the Flex team starting to begin looking into why are we throwing so many exceptions. We are wasting a ton of memory and CPU time by throwing these exceptions. Our goal is to get to no exceptions. This could, should and will become the standard going forward.</p>
<p>The visual below is also from the same PVT test. What we are showing here are all WARN, ERROR and SEVERE log messages (stack traces) that were raised during the test. It&#8217;s about 1100 log messages, which is about 1 log message every 4s. Not good&#8230;and yes another standard that we need to address.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/log_messages.png"><img class="alignnone size-medium wp-image-391" title="log_messages" src="http://sevenseconds.files.wordpress.com/2011/06/log_messages.png?w=300&#038;h=107" alt="" width="300" height="107" /></a></p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/379/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/379/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/379/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/379/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/379/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/379/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/379/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/379/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/379/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/379/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/379/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/379/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/379/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/379/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=379&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/06/28/broken-window-theory-exceptions-and-log-messages/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/pvt_exceptions.png?w=300" medium="image">
			<media:title type="html">pvt_exceptions</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/log_messages.png?w=300" medium="image">
			<media:title type="html">log_messages</media:title>
		</media:content>
	</item>
		<item>
		<title>Random Java Application Performance Blog Posting&#8230;Reader Beware</title>
		<link>http://sevenseconds.wordpress.com/2011/06/28/random-java-application-performance-blog-posting-reader-beware/</link>
		<comments>http://sevenseconds.wordpress.com/2011/06/28/random-java-application-performance-blog-posting-reader-beware/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 13:53:06 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=377</guid>
		<description><![CDATA[So I follow this one user on Twitter named @JavaTune. I am not sure who @JavaTune is, but I was under the impression that it was a credible source given some of the user&#8217;s tweets. This morning I saw the following tweet which pointed me to this blog post. It was kind of a random blog [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=377&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<div>
<p>So I follow this one user on Twitter named @JavaTune. I am not sure who @JavaTune is, but I was under the impression that it was a credible source given some of the user&#8217;s tweets. This morning I saw the following tweet which pointed me to this <a href="http://jasswin.blogspot.com/2011/05/java-application-server-performance.html" rel="nofollow">blog post</a>. It was kind of a random blog post with no substantial data backing any of the statements. Some of the tunables are worth investigating. I really want to see substantial evidence supporting these tunables.</p>
<p>&nbsp;</p>
</div>
</div>
<div id="labels-section"><a href="http://sevenseconds.files.wordpress.com/2011/06/java_tune.png"><img class="alignnone size-full wp-image-393" title="java_tune" src="http://sevenseconds.files.wordpress.com/2011/06/java_tune.png?w=480&#038;h=311" alt="" width="480" height="311" /></a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/377/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=377&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/06/28/random-java-application-performance-blog-posting-reader-beware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/java_tune.png" medium="image">
			<media:title type="html">java_tune</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Galileo and Dynatrace for Forensic Purposes</title>
		<link>http://sevenseconds.wordpress.com/2011/06/28/using-galileo-and-dynatrace-for-forensic-purposes/</link>
		<comments>http://sevenseconds.wordpress.com/2011/06/28/using-galileo-and-dynatrace-for-forensic-purposes/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 13:52:03 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=374</guid>
		<description><![CDATA[My intention with this blog is to share the process that I&#8217;ve become custom to using when analyzing results in Galileo and Dynatrace as part of a performance optimization exercise. It&#8217;s by no means the holy grail for forensic investigations. It&#8217;s a solid approach from my perspective to narrowing down the problem. There&#8217;s really no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=374&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My intention with this blog is to share the process that I&#8217;ve become custom to using when analyzing results in Galileo and Dynatrace as part of a performance optimization exercise. It&#8217;s by no means the holy grail for forensic investigations. It&#8217;s a solid approach from my perspective to narrowing down the problem.</p>
<p>There&#8217;s really no reason to create a &#8220;Chicken or Egg&#8221; kind of problem with this investigation. For simplicity, I&#8217;m going to say that I have a transaction in question. I&#8217;ve done an analysis of &#8220;Transaction X&#8221; looking at my baseline results and my regression test results. I see that &#8220;Transaction X&#8221; took a 50% hit. The transaction went from 3s to 6s. Not a big deal, but big enough for it to be on my top regression issues list.</p>
<p>First thing I want to do is map the data in Dynatrace with the data in Galileo. What&#8217;s interesting is that Galileo presents the Timestamp and Response Time. The Timestamp looks to be the end time. Dynatrace shows the Duration in the container (which should always be equal or less than Galileo) plus the start time. You have to do a little bit of math to figure whether the PurePath in question matches the individual sample. Why am I doing this? A couple of reasons. First, it gives me confidence that the data is correct in both systems. Second, it gives me both the CPID and the user in question so that I can use that information for profiling. I would always profile with the system at rest. Even that&#8217;s not exactly necessary as we can see &#8220;Suspension Duration&#8221; in the Dynatrace profile to see whether we were waiting on Garbage Collection. We can also look at the Method time to see if we are ever waiting to get a Database connection.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_narrow1.png"><img class="alignnone size-full wp-image-395" title="dynat_forensics_narrow1" src="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_narrow1.png?w=480&#038;h=309" alt="" width="480" height="309" /></a></p>
<p>Below is my Galileo details view as well. I match the Start/End times plus the duration. Now I have the user&#8217;s information and the CPID.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_narrow2.png"><img class="alignnone size-full wp-image-396" title="dynat_forensics_narrow2" src="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_narrow2.png?w=480&#038;h=150" alt="" width="480" height="150" /></a></p>
<p>Before I go into any kind of profiling exercise, I want to review as much of the data that I have available in the Dynatrace recording. I start with the PurePath of course. This gives me an idea of my hotspots of where to investigate. In this case I can see the class ViewQuestionsActions is where I&#8217;m spending my time. Interesting enough it&#8217;s a Struts call. So most likely I know that I don&#8217;t have enough information to make a call as to where my problem is or is not.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_call.png"><img class="alignnone size-full wp-image-397" title="dynat_forensics_call" src="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_call.png?w=480&#038;h=190" alt="" width="480" height="190" /></a></p>
<p>Next I dig into the tier breakdown so I can be confident of where to spend my time. If I see a lot of time is in Struts, but a ton of time also in JDBC, it could be that my Struts action is being masked by database latency. In the example below it looks like I&#8217;m spending about 5s in DB time, but close to 79s in Struts time. I wonder why.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_api.png"><img class="alignnone size-full wp-image-399" title="dynat_forensics_api" src="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_api.png?w=480&#038;h=431" alt="" width="480" height="431" /></a></p>
<p>I want to know where to look next. I obviously could go do a deeper YourKit profile with an emphasis on the ViewQuestionsAction. I want to be absolutely sure of the data. I can dig into the Methods view next for confirmation. Interesting enough I see 1 execution which accounted for 84 out of 89s of runtime. The key is understanding what this code is doing and why.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_methods.png"><img class="alignnone size-full wp-image-400" title="dynat_forensics_methods" src="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_methods.png?w=480&#038;h=173" alt="" width="480" height="173" /></a></p>
<p>I still want to see where my database time is being spent.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_database.png"><img class="alignnone size-full wp-image-403" title="dynat_forensics_database" src="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_database.png?w=480&#038;h=324" alt="" width="480" height="324" /></a></p>
<p>&nbsp;</p>
<p>Unfortunately I have an issue where I don&#8217;t see where the time is being executed. I do have the knowledge that we always reference Proxy9 when we prepare and Proxy10 when we execute. We can do a quick filter on the word Proxy and viola we see the statements in question. Note that we always prepare before execute. So it&#8217;s a guarantee that the Proxy10 that falls in question with no text is the statement from Proxy9.</p>
<p><a href="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_database_dig.png"><img class="alignnone size-full wp-image-401" title="dynat_forensics_database_dig" src="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_database_dig.png?w=480&#038;h=208" alt="" width="480" height="208" /></a></p>
<p>So now I have the 4s+ of JDBC time narrowed down to this query referenced above. I have my class in question above. I have 2 optimization exercises to focus on. The 84s is obviously my priority. The 4s query is just as alarming.</p>
<h2><a name="UsingGalileoandDynatraceforForensicPurposes-WhatShouldIDoNext"></a>What Should I Do Next</h2>
<p>As I mentioned above, there really are 2 optimization exercises. We really need to get to the bottom of the latency exhibited in the ViewQuestionsAction. Obviously part of my problem is that I&#8217;m using an Extreme data set. So I have some kind of workload variation anti-pattern that gets worst and worst with the bigger the data set. If the problem was more uniform or static in nature, I wouldn&#8217;t see the transaction in question perform better with smaller data sets, which is exactly what we see.</p>
<p>I&#8217;m definitely going to run a YourKit profile with as much emphasis placed on that class and related classes. I could do the same with Dynatrace, but it&#8217;s not necessarily the intended purpose of Dynatrace. The Dynatrace tool helps us narrow down where to investigate forensically. Not only would I do a deeper profile with YourKit, I would also do a deep code review to better understand what are we doing functionally.</p>
<p>At this point I&#8217;m focused on decomposing which anti-pattern is introduced plus what functional problem we are trying to solve. If I truly understand what we are doing from a code perspective, I would then begin a refactoring exercise. If I didn&#8217;t understand both functionally and technically what we were doing, I would bring the problem to my architect or development colleagues for their input.</p>
<p>With regards to the second optimization exercise, I would start by investigation more about the query in question. We kind of luck out because it&#8217;s a single query executing that consumes 4.2s of time. So it&#8217;s not like I have to look at DAO anti-patterns. I basically can focus my attention on query tuning exercise.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/374/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/374/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/374/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=374&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/06/28/using-galileo-and-dynatrace-for-forensic-purposes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_narrow1.png" medium="image">
			<media:title type="html">dynat_forensics_narrow1</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_narrow2.png" medium="image">
			<media:title type="html">dynat_forensics_narrow2</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_call.png" medium="image">
			<media:title type="html">dynat_forensics_call</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_api.png" medium="image">
			<media:title type="html">dynat_forensics_api</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_methods.png" medium="image">
			<media:title type="html">dynat_forensics_methods</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_database.png" medium="image">
			<media:title type="html">dynat_forensics_database</media:title>
		</media:content>

		<media:content url="http://sevenseconds.files.wordpress.com/2011/06/dynat_forensics_database_dig.png" medium="image">
			<media:title type="html">dynat_forensics_database_dig</media:title>
		</media:content>
	</item>
		<item>
		<title>To HTTP or Not To HTTP&#8230;That is the Question</title>
		<link>http://sevenseconds.wordpress.com/2011/06/28/to-http-or-not-to-http-that-is-the-question/</link>
		<comments>http://sevenseconds.wordpress.com/2011/06/28/to-http-or-not-to-http-that-is-the-question/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 13:50:04 +0000</pubDate>
		<dc:creator>babyshark13</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sevenseconds.wordpress.com/?p=370</guid>
		<description><![CDATA[Well maybe it&#8217;s Jeopardy and rather than the question&#8230;it&#8217;s the answer. I&#8217;ve been thinking about this question for quite some time now. It comes in the context of how we should simulate/execute or EoE during a sprint. There really are three core ways we simulate: JUnitPerf, Selenium or HTTP via LoadRunner. For quite some time I pushed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=370&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Well maybe it&#8217;s Jeopardy and rather than the question&#8230;it&#8217;s the answer. I&#8217;ve been thinking about this question for quite some time now. It comes in the context of how we should simulate/execute or <a href="http://sevenseconds.wordpress.com/2011/03/23/moving-from-e2e-to-eoe/">EoE </a>during a sprint. There really are three core ways we simulate: JUnitPerf, Selenium or HTTP via LoadRunner. For quite some time I pushed JUnitPerf as the primary way to test server side code. I&#8217;ve done this because JUnitPerf is one of the best testing tools used in an agile development environment.</p>
<p>JUnitPerf doesn&#8217;t complete the story. For one thing, JUnitPerf does not provide browser characteristics. Second, JUnitPerf only gives you part of the picture from an API execution. It doesn&#8217;t provide the layers of statistics that are inate to our MVC (Struts/Servlets). We really only see the lower level method execution. Third, in our own laboratory we don&#8217;t have the same maturity with JUnitPerf that we do per se with HTTP (LoadRunner) or even Selenium.</p>
<p>HTTP simulation isn&#8217;t always our best course of action. For similar reasons as JUnitPerf we do not see the browser characteristics as it&#8217;s one layer removed from the browser. Second, our agile development process doesn&#8217;t always leave us enough runway timewise to test over HTTP. Third, not all scenarios are run over HTTP. They could be command line oriented or service-oriented.</p>
<p>There is a key point about HTTP simulation that we can&#8217;t deny. That key point is it&#8217;s by far our greatest, most reliable and stable testing capability in our performance lab today.</p>
<h2><a name="ToHTTPorNotToHTTP...ThatistheQuestion-JUnitPerf%3AWhentoUseIt"></a>JUnitPerf: When to Use It</h2>
<p>Years ago a childhood friend of mine by the name of Andy Glover <a href="http://www.ibm.com/developerworks/java/library/j-cq11296/index.html" rel="nofollow">wrote this article about JUnitPerf</a>. In the article he calls out that JUnitPerf is a valid testing tool, but it&#8217;s not necessarily the most accurate tool. I agree with Andy whole heartedly. I&#8217;ve always seen JUnitPerf as an Agile SPE tool used to faciliate feedback, but not as the quintessential tool for performance feedback. SPEs should leverage JUnitPerf during the development lifecycle for cases when a critical scenario cannot be simulated in its final shape or form. If a scenario is HTTP driven, or even command-line or services-oriented, but is not entirely ready for showtime, JUnitPerf should be leveraged as a stop gap for giving feedback.</p>
<div>
<table>
<col width="24" />
<col />
<tbody>
<tr>
<td valign="top"><img src="http://silicon.pd.local/images/icons/emoticons/information.gif" alt="" width="16" height="16" align="absmiddle" border="0" /></td>
<td>&#8220;While JUnitPerf is a performance testing framework, the numbers you place around it should be considered rough estimates&#8230;&#8221;</td>
</tr>
</tbody>
</table>
</div>
<h2><a name="ToHTTPorNotToHTTP...ThatistheQuestion-Selenium%3AWhenToUseIt"></a>Selenium: When To Use It</h2>
<p>We might have become victims to our own performance goals. I&#8217;ve seen a lot of Selenium tests over the past 18 months. In many cases I&#8217;ve been promoting heavier use of Selenium to accomplish our testing goals. But why? Selenium is not the be-all&#8230;end-all of simulation tools. It has a purpose and we can&#8217;t lose sight of what that purpose is. Selenium executes the browser in the same intended manner a user would execute a browser. Therefore, you use Selenium as your test driver when you are predominately concerned with what is happening or executing inside the browser such as rich client-side interactions.</p>
<p>Justifying the use of Selenium because the scenario is executed via the front-end isn&#8217;t enough. We really have to breakdown the implementation from the perspective of which layer is executing code. If all that&#8217;s happening in the browser is rendering, then it doesn&#8217;t necessarily warrant a Selenium script. In a case like this, the code is predominately executing server side, whether that be in the container or in the database.</p>
<p>What happens when the browser is responsible for handling a voluminous amount of data to present from a DOM perspective? For example, maybe we aren&#8217;t executing code in the browser, but we return a 4mb data set to render. Isn&#8217;t that a problem? Absolutely and might require extra work to accomplish. It may make sense to simulate using two tools, with the emphasis being placed first on the server-side code and secondary emphasis placed on browser rendering.</p>
<h2><a name="ToHTTPorNotToHTTP...ThatistheQuestion-HTTPSimulation%3AWhentoUseIt"></a>HTTP Simulation: When to Use It</h2>
<p>In our world, we use LoadRunner for HTTP simulation. So for the context of this section, it makes sense to use LoadRunner in the first place if the ultimate method for the scenario is over HTTP. Second, when the state of the code is ready to be executed over HTTP. Third, when there are attributes of the simulation that are best tested using our HTTP testing infrastructure such as timed tests, conditional abandonment, concurrency, workload throttling, etc&#8230;</p>
<p>We might find that HTTP simulation ends up being the home for 99 out of 100 tests we do. That&#8217;s ok in the long run when http simulation is capable of providing server-side feedback in a timely manner that does not jeopardize the browser experience. The key is timely feedback with our application. As an agile SPE shop, we have to be able to provide instant feedback to our teams so that the transition or even the next sprint can be planned appropriately.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sevenseconds.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sevenseconds.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sevenseconds.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sevenseconds.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sevenseconds.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sevenseconds.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sevenseconds.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sevenseconds.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sevenseconds.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sevenseconds.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sevenseconds.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sevenseconds.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sevenseconds.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sevenseconds.wordpress.com/370/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sevenseconds.wordpress.com&amp;blog=3064656&amp;post=370&amp;subd=sevenseconds&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sevenseconds.wordpress.com/2011/06/28/to-http-or-not-to-http-that-is-the-question/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47584b066c223c9f09f9b34009cf26ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Steve</media:title>
		</media:content>

		<media:content url="http://silicon.pd.local/images/icons/emoticons/information.gif" medium="image" />
	</item>
	</channel>
</rss>
