<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Logging: Exploratory Tester&#8217;s Friend</title>
	<atom:link href="http://www.satisfice.com/blog/archives/401/feed" rel="self" type="application/rss+xml" />
	<link>http://www.satisfice.com/blog/archives/401</link>
	<description>The Consulting Software Tester</description>
	<lastBuildDate>Fri, 03 Feb 2012 10:21:43 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Oliver Erlewein</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-266261</link>
		<dc:creator>Oliver Erlewein</dc:creator>
		<pubDate>Mon, 30 Jan 2012 03:24:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-266261</guid>
		<description>Just wanted to say thanks again for this post!

I keep on coming back to it time &amp; time again. I give it to testers but usually I hand a copy to the developers. They complain at first and after they read it they go: &quot;Hey, this is really a good idea....&quot;.

Maybe you should re-work this into something more prominent &amp; permanent on your site. I think it adds a lot of value.

I also find logging especially interesting from an automation perspective. I can have watchers on a log, that alert me if certain conditions that I want to know about occur (i.e. see if a defect has actually been resolved if there is doubt about the fix).</description>
		<content:encoded><![CDATA[<p>Just wanted to say thanks again for this post!</p>
<p>I keep on coming back to it time &amp; time again. I give it to testers but usually I hand a copy to the developers. They complain at first and after they read it they go: &#8220;Hey, this is really a good idea&#8230;.&#8221;.</p>
<p>Maybe you should re-work this into something more prominent &amp; permanent on your site. I think it adds a lot of value.</p>
<p>I also find logging especially interesting from an automation perspective. I can have watchers on a log, that alert me if certain conditions that I want to know about occur (i.e. see if a defect has actually been resolved if there is doubt about the fix).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eugenia Yakhnin</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-266044</link>
		<dc:creator>Eugenia Yakhnin</dc:creator>
		<pubDate>Mon, 16 Jan 2012 03:24:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-266044</guid>
		<description>This post is 2 years old, but very relevant. Would you recommend up-to-date logging tool for manual Web testing of application that will record information about patient?

&lt;em&gt;[James&#039; Reply: Burp Proxy.]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>This post is 2 years old, but very relevant. Would you recommend up-to-date logging tool for manual Web testing of application that will record information about patient?</p>
<p><em>[James' Reply: Burp Proxy.]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eusebiu Blindu</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-261797</link>
		<dc:creator>Eusebiu Blindu</dc:creator>
		<pubDate>Thu, 10 Jun 2010 20:59:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-261797</guid>
		<description>This could be a wonderful way to show reports  to managers. Managers complain about &quot;visibility&quot; when doing exploratory testing. Logging everything and extract then the essential stuff looks like a way to me.

Sebi</description>
		<content:encoded><![CDATA[<p>This could be a wonderful way to show reports  to managers. Managers complain about &#8220;visibility&#8221; when doing exploratory testing. Logging everything and extract then the essential stuff looks like a way to me.</p>
<p>Sebi</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Gilbert</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-248020</link>
		<dc:creator>David Gilbert</dc:creator>
		<pubDate>Mon, 15 Mar 2010 12:38:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-248020</guid>
		<description>James -- we do this kind of logging in TestExplorer.  We don&#039;t cover all your points, although we likely will soon.  ;)  However, we have three levels of logging, which are easily selected in the user options;  the logs are written out to simple html, so anyone can view them;  and each entry is time/date stamped and nested, so you can follow the flow as functions call into functions call into functions, and then back out.  It has been one of the best decisions we ever made;  the ability to simply have a client turn logging onto super turbo mode, recreate a problem, and mail the log to us continuously helps us understand problems as they emerge.

David</description>
		<content:encoded><![CDATA[<p>James &#8212; we do this kind of logging in TestExplorer.  We don&#8217;t cover all your points, although we likely will soon.  <img src='http://www.satisfice.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   However, we have three levels of logging, which are easily selected in the user options;  the logs are written out to simple html, so anyone can view them;  and each entry is time/date stamped and nested, so you can follow the flow as functions call into functions call into functions, and then back out.  It has been one of the best decisions we ever made;  the ability to simply have a client turn logging onto super turbo mode, recreate a problem, and mail the log to us continuously helps us understand problems as they emerge.</p>
<p>David</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shmuel Gershon</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-247800</link>
		<dc:creator>Shmuel Gershon</dc:creator>
		<pubDate>Sun, 14 Mar 2010 20:19:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-247800</guid>
		<description>:) Right, that&#039;s a good way to put it.

The benefit is much bigger for progress/status reports (that are seen in the screen as actions happen), but it is the same for logs:
There are times where an application will crash, but all the data the users/testers have is what was done until now. The developer can (easily or not) deduce what the app was doing when it crashed because he knows the flow -- but the users are left with guessing.

Without this little aid, if function E crashes when called after D, but E is *not always* called, a log for crash would look like &quot;A, F, B, D, &quot; while a log without crash would look &quot;A, F, B, D, G, A&quot;. Hard to see the reason, right? Had the testers know that function E was starting, the &#039;sporadic&#039; issue would have been isolated much more easily.

Well, I guess the point is made, will stop repeating :).
Thanks!!</description>
		<content:encoded><![CDATA[<p> <img src='http://www.satisfice.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Right, that&#8217;s a good way to put it.</p>
<p>The benefit is much bigger for progress/status reports (that are seen in the screen as actions happen), but it is the same for logs:<br />
There are times where an application will crash, but all the data the users/testers have is what was done until now. The developer can (easily or not) deduce what the app was doing when it crashed because he knows the flow &#8212; but the users are left with guessing.</p>
<p>Without this little aid, if function E crashes when called after D, but E is *not always* called, a log for crash would look like &#8220;A, F, B, D, &#8221; while a log without crash would look &#8220;A, F, B, D, G, A&#8221;. Hard to see the reason, right? Had the testers know that function E was starting, the &#8216;sporadic&#8217; issue would have been isolated much more easily.</p>
<p>Well, I guess the point is made, will stop repeating <img src='http://www.satisfice.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
Thanks!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shmuel Gershon</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-247605</link>
		<dc:creator>Shmuel Gershon</dc:creator>
		<pubDate>Sat, 13 Mar 2010 16:52:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-247605</guid>
		<description>A reply to your reply (can&#039;t edit it inline):
Yes, logging each action as it starts instead of only its result when it ends it is a great way of doing that.

As you say, not only it is hard for one routine to know what will be the next routine called, but doing that would wreck modularity cohesion and low-coupling :).

But for most part (perceiving delays, or analyzing hangs for example) logging at the beginning of each routine would be enough.

&lt;em&gt;[James reply: Okay, so logging &quot;I&#039;m about to try this... if you don&#039;t hear from me, tell my wife I love her...&quot;]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>A reply to your reply (can&#8217;t edit it inline):<br />
Yes, logging each action as it starts instead of only its result when it ends it is a great way of doing that.</p>
<p>As you say, not only it is hard for one routine to know what will be the next routine called, but doing that would wreck modularity cohesion and low-coupling <img src='http://www.satisfice.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>But for most part (perceiving delays, or analyzing hangs for example) logging at the beginning of each routine would be enough.</p>
<p><em>[James reply: Okay, so logging "I'm about to try this... if you don't hear from me, tell my wife I love her..."]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shmuel Gershon</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-247486</link>
		<dc:creator>Shmuel Gershon</dc:creator>
		<pubDate>Fri, 12 Mar 2010 10:15:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-247486</guid>
		<description>Hi James, great list!

If I may, let me add a 14th point, an insight I learned from a tester in my team:
For functions the software does by itself, in addition to logging the result of each step after it happens (imported data; generated report; exported graph...) it is very useful to log *what the next step will be*. This way, when a failure occurs, it is easy to know what the software was trying to do.

Since I learned that, I am paying attention to it, and impressed by how much common logs or progress reports lack this.
It takes a lot of time for an operation to happen, but you need to wait until the end of it to know which it was.
Once my computer froze during Windows&#039; shutdown with the &quot;playing logoff sound&quot; screen. I&#039;m pretty sure the sound playing was over, and was left wondering what caused the OS freeze.

Hope you approve the addition :)

&lt;em&gt;[James&#039; Reply: Let&#039;s say I&#039;m a programmer. How would I actually implement this? Are you just saying you want me to log the start of events, instead of just logging when things end?

Obviously, I can&#039;t know, from within a specific routine, what the next thing will be.]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>Hi James, great list!</p>
<p>If I may, let me add a 14th point, an insight I learned from a tester in my team:<br />
For functions the software does by itself, in addition to logging the result of each step after it happens (imported data; generated report; exported graph&#8230;) it is very useful to log *what the next step will be*. This way, when a failure occurs, it is easy to know what the software was trying to do.</p>
<p>Since I learned that, I am paying attention to it, and impressed by how much common logs or progress reports lack this.<br />
It takes a lot of time for an operation to happen, but you need to wait until the end of it to know which it was.<br />
Once my computer froze during Windows&#8217; shutdown with the &#8220;playing logoff sound&#8221; screen. I&#8217;m pretty sure the sound playing was over, and was left wondering what caused the OS freeze.</p>
<p>Hope you approve the addition <img src='http://www.satisfice.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em>[James' Reply: Let's say I'm a programmer. How would I actually implement this? Are you just saying you want me to log the start of events, instead of just logging when things end?</p>
<p>Obviously, I can't know, from within a specific routine, what the next thing will be.]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chad Patrick</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-242284</link>
		<dc:creator>Chad Patrick</dc:creator>
		<pubDate>Mon, 08 Feb 2010 23:13:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-242284</guid>
		<description>I worked as a performance tester in an SOA environment for a middleware organization.  We had a system that was very similar to what you&#039;re describing.  It was a collection of Java web services and batch applications.  Their logging system was heaven to me as a test manager.  It maintained a consistent transaction ID throughout the system which made it much easier to get a better picture of what was going on as requests/responses were passed from service to service and across various message queues.

One thing that was nice was that the logs were not written to files, rather they were submitted via XML objects to a logging service which greatly enhanced the efficiency and was less of a drain on the system (as writing to disk is slower and more of a resource hog).  Also, there was a configuration file which allowed us to set different logging levels for each environment (info, error, debug, etc...).  The data/variable pairs would align with a global variable for whatever environment in which the code was deployed.

&lt;em&gt;[James&#039; Reply: Cool. I have also used SQL Server transaction logs as log files, and you get those for free in database apps.]
&lt;/em&gt;

I hesitate to say this, but we were a scripted organization :)  I hope we&#039;re allowed to post here.
&lt;em&gt;
[James&#039; Reply: You can post it. But what do you mean by it? Detailed procedural scripts? If so, why? You had logging, which is like having a GPS track of where you were patrolling, but you still felt that letting your drivers patrol as they saw fit was bad?]&lt;/em&gt;

While we may differ on certain aspects of testing, I agree wholeheartedly that logging (or the absence of) is one of the most overlooked gems for a tester.  Monitoring and rigid examination of logs is something I try to instill into each member of my testing team.  When engaged in a project in the planning and analysis phases, it&#039;s also something I urge the architects to consider.

&lt;em&gt;[James&#039; Reply: We don&#039;t yet know if we differ. I do plenty of planning in my testing, when the situation calls for it. To be exploratory means to not STOP planning once you have a &quot;plan.&quot;]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>I worked as a performance tester in an SOA environment for a middleware organization.  We had a system that was very similar to what you&#8217;re describing.  It was a collection of Java web services and batch applications.  Their logging system was heaven to me as a test manager.  It maintained a consistent transaction ID throughout the system which made it much easier to get a better picture of what was going on as requests/responses were passed from service to service and across various message queues.</p>
<p>One thing that was nice was that the logs were not written to files, rather they were submitted via XML objects to a logging service which greatly enhanced the efficiency and was less of a drain on the system (as writing to disk is slower and more of a resource hog).  Also, there was a configuration file which allowed us to set different logging levels for each environment (info, error, debug, etc&#8230;).  The data/variable pairs would align with a global variable for whatever environment in which the code was deployed.</p>
<p><em>[James' Reply: Cool. I have also used SQL Server transaction logs as log files, and you get those for free in database apps.]<br />
</em></p>
<p>I hesitate to say this, but we were a scripted organization <img src='http://www.satisfice.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   I hope we&#8217;re allowed to post here.<br />
<em><br />
[James' Reply: You can post it. But what do you mean by it? Detailed procedural scripts? If so, why? You had logging, which is like having a GPS track of where you were patrolling, but you still felt that letting your drivers patrol as they saw fit was bad?]</em></p>
<p>While we may differ on certain aspects of testing, I agree wholeheartedly that logging (or the absence of) is one of the most overlooked gems for a tester.  Monitoring and rigid examination of logs is something I try to instill into each member of my testing team.  When engaged in a project in the planning and analysis phases, it&#8217;s also something I urge the architects to consider.</p>
<p><em>[James' Reply: We don't yet know if we differ. I do plenty of planning in my testing, when the situation calls for it. To be exploratory means to not STOP planning once you have a "plan."]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tomasz Zdanowicz</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-241393</link>
		<dc:creator>Tomasz Zdanowicz</dc:creator>
		<pubDate>Thu, 04 Feb 2010 15:19:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-241393</guid>
		<description>I have been working for couple of years for company building real-time embedded systems. This was big challenge to find the equilibrium between logging (volume of it) and real-timing (performance of embedded application). The main problem was resource sharing (either they were used for performance or for logging). In that case &#039;logging&#039; does not seems to be so easy for implementation. Finally we find out that we need two levels of testing at least. One was &#039;functional not real-time related&#039; second was &#039;real-time related&#039; during which we didn&#039;t use much logging (only critical points).
After all we had ATP sessions that were run on non-debug version of software.

&lt;em&gt;[James&#039; Reply: Excellent point.]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>I have been working for couple of years for company building real-time embedded systems. This was big challenge to find the equilibrium between logging (volume of it) and real-timing (performance of embedded application). The main problem was resource sharing (either they were used for performance or for logging). In that case &#8216;logging&#8217; does not seems to be so easy for implementation. Finally we find out that we need two levels of testing at least. One was &#8216;functional not real-time related&#8217; second was &#8216;real-time related&#8217; during which we didn&#8217;t use much logging (only critical points).<br />
After all we had ATP sessions that were run on non-debug version of software.</p>
<p><em>[James' Reply: Excellent point.]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sigge</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-241021</link>
		<dc:creator>Sigge</dc:creator>
		<pubDate>Tue, 02 Feb 2010 19:35:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-241021</guid>
		<description>Hi James!
Please read my comment on your post at my blog: 
http://happytesting.wordpress.com/2010/02/02/logging-test-tool-and-system-under-test-in-one/

Tell me if something is unclear.=) 

/Sigge
&lt;em&gt;
[James&#039; Reply: I read your comment. What specific wording change would you suggest?]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>Hi James!<br />
Please read my comment on your post at my blog:<br />
<a href="http://happytesting.wordpress.com/2010/02/02/logging-test-tool-and-system-under-test-in-one/" rel="nofollow">http://happytesting.wordpress.com/2010/02/02/logging-test-tool-and-system-under-test-in-one/</a></p>
<p>Tell me if something is unclear.=) </p>
<p>/Sigge<br />
<em><br />
[James' Reply: I read your comment. What specific wording change would you suggest?]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carsten Feilberg</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-240887</link>
		<dc:creator>Carsten Feilberg</dc:creator>
		<pubDate>Tue, 02 Feb 2010 08:21:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-240887</guid>
		<description>James, I appreciate you for posting this. 

I especially like your initial discussion on how documentation gets to people, so they end up asking for something they often really doesn&#039;t have any use for. I&#039;ve seen it multiple times, and it&#039;s a sad waste of everybodys time.

This also reminds me of back some twelve-thirteen years ago, when I was programming heavy calculations in SQL. After each step I created a complete table as a copy of all the data I was working on, so I could debug step-by-step.  It made life so much easier. 

Thinking about it makes it seem pretty ridicolous that we have gotten ourselves used to saying: what happened ? and not questioning why it couldn&#039;t be answered... Just because it&#039;s our job to play detectives in order to reconstruct what lead to a particular failure, it doesn&#039;t mean that we should do it without the proper tools.

Logging is not only a friend - it&#039;s a great friend!</description>
		<content:encoded><![CDATA[<p>James, I appreciate you for posting this. </p>
<p>I especially like your initial discussion on how documentation gets to people, so they end up asking for something they often really doesn&#8217;t have any use for. I&#8217;ve seen it multiple times, and it&#8217;s a sad waste of everybodys time.</p>
<p>This also reminds me of back some twelve-thirteen years ago, when I was programming heavy calculations in SQL. After each step I created a complete table as a copy of all the data I was working on, so I could debug step-by-step.  It made life so much easier. </p>
<p>Thinking about it makes it seem pretty ridicolous that we have gotten ourselves used to saying: what happened ? and not questioning why it couldn&#8217;t be answered&#8230; Just because it&#8217;s our job to play detectives in order to reconstruct what lead to a particular failure, it doesn&#8217;t mean that we should do it without the proper tools.</p>
<p>Logging is not only a friend &#8211; it&#8217;s a great friend!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: abc</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-240452</link>
		<dc:creator>abc</dc:creator>
		<pubDate>Sun, 31 Jan 2010 04:22:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-240452</guid>
		<description>do you think the title of the post is aptly named ? &quot;logging : exploratory tester&#039;s friend &quot; ? 

are you trying to suggest that ET is better because only ET uses logging help ?

i would say logging is a damn good support tool ( i would even say it is sometimes necessary) for any sort of testing that you are doing ? whether it is scripted,exploratory,automated ? and even during debugging

&lt;em&gt;[James&#039; Reply: I quite agree. Logging is the friend of all.]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>do you think the title of the post is aptly named ? &#8220;logging : exploratory tester&#8217;s friend &#8221; ? </p>
<p>are you trying to suggest that ET is better because only ET uses logging help ?</p>
<p>i would say logging is a damn good support tool ( i would even say it is sometimes necessary) for any sort of testing that you are doing ? whether it is scripted,exploratory,automated ? and even during debugging</p>
<p><em>[James' Reply: I quite agree. Logging is the friend of all.]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marius Filip</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-240332</link>
		<dc:creator>Marius Filip</dc:creator>
		<pubDate>Sat, 30 Jan 2010 16:30:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-240332</guid>
		<description>What about using a recorder every time we do exploratory testing? We can always throw away the resulted scripts if the session turns out &quot;fruitless&quot;. This doesn&#039;t cover many points from the above list, indeed, but it doesn&#039;t require extra effort from the dev part and it works with existing applications.

&lt;em&gt;[James&#039; Reply: It depends what you mean by &quot;recorder.&quot; When I do web testing I routinely use Burp Proxy to record everything that goes from the browser to the server. (I have also tried using the Selenium recorder but found it disappointing. It doesn&#039;t record very much.) I use line sniffers when and where feasible. I have used screen recorders, key loggers, and even a little digital camera. There are pros and cons to each approach.

What rarely works, except in a stateless command-line environment, is record-playback automation. There are so many things that can mess that up, you end up fiddling with it all the time.]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>What about using a recorder every time we do exploratory testing? We can always throw away the resulted scripts if the session turns out &#8220;fruitless&#8221;. This doesn&#8217;t cover many points from the above list, indeed, but it doesn&#8217;t require extra effort from the dev part and it works with existing applications.</p>
<p><em>[James' Reply: It depends what you mean by "recorder." When I do web testing I routinely use Burp Proxy to record everything that goes from the browser to the server. (I have also tried using the Selenium recorder but found it disappointing. It doesn't record very much.) I use line sniffers when and where feasible. I have used screen recorders, key loggers, and even a little digital camera. There are pros and cons to each approach.</p>
<p>What rarely works, except in a stateless command-line environment, is record-playback automation. There are so many things that can mess that up, you end up fiddling with it all the time.]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-239903</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Thu, 28 Jan 2010 18:34:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-239903</guid>
		<description>I think this is a great idea that I&#039;m also pushing for on my project. I&#039;ve had mixed luck with logging in the past.

I just came off of a project that had logging that actually hurt the product. The project was on Windows and the ETW logging framework was what we used. It was supposed to just have &quot;2% overhead&quot; (yeah, I hear you &quot;2% of what?&quot;, I asked that too...). In practice the overhead was significantly more. Also, some logging statements had bugs in them that lead to program instability.  This isn&#039;t a counter-case against what you are arguing for, just a cautionary tale.

&lt;em&gt;[James&#039; Reply: Excellent point. The first time I tested very heavily with logging we spent a week chasing a bug whereby a process on the server started (as noted in the log) but never finished (the event end was not logged). Turns out it was a bug in the logging code triggered when events happened so quickly that the thread tried to open the log file while it was still in the process of being closed.]
&lt;/em&gt;

Are you using a logging framework, or just using built-in facilities in the language/platform you are developing for?

&lt;em&gt;[James&#039; Reply: I don&#039;t know how the developer will do it. I don&#039;t know much about logging libraries, but I suppose they must exist and have some cool features. All we need is a formatted print to a file. The challenge comes in when many processes are trying to write to the same log, or when speed is a big concern. Maybe an established logging library would help with that.]
&lt;/em&gt;

Do you think you are &quot;lucky&quot; to be working in a regulated environment where this type of proposal might have a better chance than with less safety critical software?

&lt;em&gt;[James&#039; Reply: Yes.]
&lt;/em&gt;
Was there any feedback from the devs on the proposal?

&lt;em&gt;[James&#039; Reply: Not yet.]
&lt;/em&gt;
Do you have any more to say about the level of detail in the logs?

&lt;em&gt;[James&#039; Reply: I love details. I want data about the events, not just the events themselves. In testing a search system I had the developers dump the SQL of for each search, and from this I built an automatic search test matrix. Of course, there has to be a way to deal with the huge size of the logs. That&#039;s why I like being able to set debug levels.]
&lt;/em&gt;

One conflict that came up between dev and test on my project was that some of the devs wanted a log that would be detailed enough to use to debug with. Testers just wanted &quot;important&quot; events. The &quot;debug&quot; level logs could be 100&#039;s of MB for just a few minutes of product use. It was a major discussion when I made a proposal to adjust what gets logged at what level later in the project.

&lt;em&gt;[James&#039; Reply: Yeah, that&#039;s an issue. Of course, you can just filter the log. So it&#039;s not that big a deal unless the log is super duper huge. I guess 100&#039;s of MB would qualify as that. At that point the issue is intrusiveness-- the log may actually reduce testability by causing a major performance problem in the product. Obviously, you&#039;d have to get smarter about logging or else build a special infrastructure to handle it. Seems to me that super detailed logging might be built on some sort of event trigger, so that it&#039;s not going all the time, but rather only when you hit a panic button or when certain warning events occur.]&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>I think this is a great idea that I&#8217;m also pushing for on my project. I&#8217;ve had mixed luck with logging in the past.</p>
<p>I just came off of a project that had logging that actually hurt the product. The project was on Windows and the ETW logging framework was what we used. It was supposed to just have &#8220;2% overhead&#8221; (yeah, I hear you &#8220;2% of what?&#8221;, I asked that too&#8230;). In practice the overhead was significantly more. Also, some logging statements had bugs in them that lead to program instability.  This isn&#8217;t a counter-case against what you are arguing for, just a cautionary tale.</p>
<p><em>[James' Reply: Excellent point. The first time I tested very heavily with logging we spent a week chasing a bug whereby a process on the server started (as noted in the log) but never finished (the event end was not logged). Turns out it was a bug in the logging code triggered when events happened so quickly that the thread tried to open the log file while it was still in the process of being closed.]<br />
</em></p>
<p>Are you using a logging framework, or just using built-in facilities in the language/platform you are developing for?</p>
<p><em>[James' Reply: I don't know how the developer will do it. I don't know much about logging libraries, but I suppose they must exist and have some cool features. All we need is a formatted print to a file. The challenge comes in when many processes are trying to write to the same log, or when speed is a big concern. Maybe an established logging library would help with that.]<br />
</em></p>
<p>Do you think you are &#8220;lucky&#8221; to be working in a regulated environment where this type of proposal might have a better chance than with less safety critical software?</p>
<p><em>[James' Reply: Yes.]<br />
</em><br />
Was there any feedback from the devs on the proposal?</p>
<p><em>[James' Reply: Not yet.]<br />
</em><br />
Do you have any more to say about the level of detail in the logs?</p>
<p><em>[James' Reply: I love details. I want data about the events, not just the events themselves. In testing a search system I had the developers dump the SQL of for each search, and from this I built an automatic search test matrix. Of course, there has to be a way to deal with the huge size of the logs. That's why I like being able to set debug levels.]<br />
</em></p>
<p>One conflict that came up between dev and test on my project was that some of the devs wanted a log that would be detailed enough to use to debug with. Testers just wanted &#8220;important&#8221; events. The &#8220;debug&#8221; level logs could be 100&#8242;s of MB for just a few minutes of product use. It was a major discussion when I made a proposal to adjust what gets logged at what level later in the project.</p>
<p><em>[James' Reply: Yeah, that's an issue. Of course, you can just filter the log. So it's not that big a deal unless the log is super duper huge. I guess 100's of MB would qualify as that. At that point the issue is intrusiveness-- the log may actually reduce testability by causing a major performance problem in the product. Obviously, you'd have to get smarter about logging or else build a special infrastructure to handle it. Seems to me that super detailed logging might be built on some sort of event trigger, so that it's not going all the time, but rather only when you hit a panic button or when certain warning events occur.]</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Erwin Van Trier</title>
		<link>http://www.satisfice.com/blog/archives/401/comment-page-1#comment-239820</link>
		<dc:creator>Erwin Van Trier</dc:creator>
		<pubDate>Thu, 28 Jan 2010 13:36:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.satisfice.com/blog/?p=401#comment-239820</guid>
		<description>When I worked as a tester in the Telecom industry we had a requirement that every error/warning message displayed to the user contained a unique error number. This number was composed of the ID of the module/component where the error was generated and a sequence number.

This was extremely powerful when investigating bugs and tracking the actual location in the code where this error/warning was generated. 

We actually came to an agreement with our development team that when a specific error number was used more than once in the source code, the full SW package to be tested was returned to development immediately.</description>
		<content:encoded><![CDATA[<p>When I worked as a tester in the Telecom industry we had a requirement that every error/warning message displayed to the user contained a unique error number. This number was composed of the ID of the module/component where the error was generated and a sequence number.</p>
<p>This was extremely powerful when investigating bugs and tracking the actual location in the code where this error/warning was generated. </p>
<p>We actually came to an agreement with our development team that when a specific error number was used more than once in the source code, the full SW package to be tested was returned to development immediately.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

