tag:blogger.com,1999:blog-36118108.post6913336188469738329..comments2023-12-06T00:17:28.519-08:00Comments on Creative Chaos: Beautiful Testing - IIMatthewhttp://www.blogger.com/profile/05956714498778698672noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-36118108.post-10791048420185568122009-07-16T08:31:19.807-07:002009-07-16T08:31:19.807-07:00Fair enough. I'm always interested in automat...Fair enough. I'm always interested in automating checking-work away. But I suspect the number of dev teams using tools like that are under 10%.Matthewhttps://www.blogger.com/profile/05956714498778698672noreply@blogger.comtag:blogger.com,1999:blog-36118108.post-57142174567184710862009-07-16T07:35:12.192-07:002009-07-16T07:35:12.192-07:00"Checking can not find those types of [memory..."Checking can not find those types of [memory leak] bugs." <br /><br />Not exactly true. I run my unit and integration tests in Valgrind, which detects the tiniest memory leak in my code. So, checking <i>can</i> detect these bugs. Better yet, some unit testing frameworks even have leak detection built into them.Remko Tronçonhttp://el-tramo.benoreply@blogger.comtag:blogger.com,1999:blog-36118108.post-92160574995878650362009-07-14T09:44:03.638-07:002009-07-14T09:44:03.638-07:00thank you, Kaleb. Yes, part of the point was that...thank you, Kaleb. Yes, part of the point was that the reason I learned Beauty was because of my /math/ degree. That it is absent in CS is, I believe, well ... sad.Matthewhttps://www.blogger.com/profile/05956714498778698672noreply@blogger.comtag:blogger.com,1999:blog-36118108.post-32376379110593541542009-07-14T08:16:32.487-07:002009-07-14T08:16:32.487-07:00First, my favorite proofs are the divisibility pro...First, my favorite proofs are the divisibility proofs from modern algebra. They proved:<br /><br />1) A number is divisible by three of the sum of the digits is divisible by three.<br />2) A number is divisible by nine if the sum of the digits is divisible by nine.<br />etc.<br /><br />They're dead simple when you understand all the concepts leading up to them... but that's what made them beautiful.<br /><br />Second, I think what you have is pretty correct but would argue that, in most schools at least, they teach nothing about beauty in computer science [1]. Rather, computer science is about understanding concepts and algorithms that are deemed important.<br /><br />Misko Hevery recently created a blog entry that compares <a href="http://misko.hevery.com/2009/07/11/computer-engineer-vs-computer-scientist/" rel="nofollow">computer scientists vs. computer engineers</a>. I believe his assertions are true. It takes engineering skill to understand and love the beauty of a simple extensible implementation (or one that can easily be refactored to be extensible if later needed).<br /><br />[1] Some schools probably make an effort to teach the students the difference between clean, beautiful code, and code that isn't... but I haven't yet found one.Kaleb Pedersonhttps://www.blogger.com/profile/12538951392851987835noreply@blogger.comtag:blogger.com,1999:blog-36118108.post-67968738499879519312009-07-13T19:48:53.491-07:002009-07-13T19:48:53.491-07:00So weird. I was just explaining to a tester on my...So weird. I was just explaining to a tester on my team how distilling good acceptance tests was similar to simplifying equations.<br /><br />On a technical note, I found a couple of typos. :)Alexhttps://www.blogger.com/profile/07298916960841993037noreply@blogger.comtag:blogger.com,1999:blog-36118108.post-20260854741058323922009-07-13T13:22:54.677-07:002009-07-13T13:22:54.677-07:00Matt,
Well said.
- JustinMatt,<br /><br />Well said. <br /><br />- JustinJustin Hunterhttps://www.blogger.com/profile/14017791190069949421noreply@blogger.comtag:blogger.com,1999:blog-36118108.post-9744108402876270132009-07-13T13:10:19.076-07:002009-07-13T13:10:19.076-07:00Matt,
I concur with your post. In its purest for...Matt,<br /><br />I concur with your post. In its purest form, testing is about truth. Following the scientific method we tend to:<br />1) Define the question - What can I look/test at and why do I want to?<br />2) Gather information and resources (observe) - via oracles such as our experience, requirements etc...<br />3) Form hypothesis - This is our test scenario, when we do x, we expect y<br />4) Perform experiment and collect data - Execute the test, noting all observations<br />5) Analyze data - both in isolation and with the bigger picture<br />6) Interpret data and draw conclusions that serve as a starting point for new hypothesis - Is this what I expected? Did I see something I wasn't testing for? This is where the ideation of defects begins to occur, but also suggestions for enhancements. Not to mention, questions begin to form of whether or not something else should be tested based on these observations. This is the power of rapid software testing. Allowing observations and oracles to guide the effort in a systematic way.<br />7) Publish results - via both defect reports and test results/findings<br />8) Retest (frequently done by other scientists) - While we may or may not retest to verify what we observed, and unless the software is never used, it most certainly will be retested by the end users.<br /><br />*I prefer the term observation to defects as it more accurately reflects notable observations that are not captured in expectations of a test result. (<a href="http://josephours.blogspot.com/2009/07/redefining-defects.html" rel="nofollow">See Here</a>)<br /><br />The beauty in testing is in the thinking, not the checking.Joseph Ourshttps://www.blogger.com/profile/02348622905292995836noreply@blogger.com