<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-408947659093558474</id><updated>2012-02-15T22:23:03.843-08:00</updated><title type='text'>Context-driven test thoughts</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-3688163669265143666</id><published>2011-03-24T13:13:00.000-07:00</published><updated>2011-03-24T14:02:45.293-07:00</updated><title type='text'>Writing your own test framework with a DSTL in java?</title><content type='html'>In my current assignment I´m working on writing a non-functional test framework.&lt;div&gt;I´ve been pushing very hard for implementing and supporting a DSTL (Domain Specific Test Language) since it´s my belief that in doing so we can have more testers focus on writing actual test cases without having to worry about the implementation. &lt;/div&gt;&lt;div&gt;Also I´ve been itching to get an excuse to implement my own DSTL for a while ;-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A test case could look something like the example below and can be written in either a text file or a spreadsheet (or anything else for that matter, wiki page etc etc as long as you convert it to a format the server understands).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Configure simulator&lt;/b&gt; | on sim1     | using traffic_type1&lt;/div&gt;&lt;div&gt;&lt;b&gt;Start simulator&lt;/b&gt;         | on sim1     | with 800 calls/second&lt;/div&gt;&lt;div&gt;&lt;b&gt;Start CPUProbe&lt;/b&gt;       | on $[sut1]&lt;/div&gt;&lt;div&gt;&lt;b&gt;wait&lt;/b&gt;                          | 20min&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first column/cell is the actual test command and the following columns/cells are parameters to the command. &lt;/div&gt;&lt;div&gt;In the text file we have currently chosen to use a pipe-sign for clarity.&lt;/div&gt;&lt;div&gt;Notice how the test commands reads out as almost normal human sentences.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A clear benefit of this approach is that the test cases have a higher chance of being:&lt;/div&gt;&lt;div&gt;- Clear and obvious, even to other stakeholders&lt;/div&gt;&lt;div&gt;- Robust and requiring less maintenance, since we separate test purpose from implementation&lt;/div&gt;&lt;div&gt;- Lends itself naturally to becoming data-driven&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see in the "Start CPUProbe" I have actually taken one of the parameters and indicated (with the dollarsign) that this should be replaced with data from some external source, like another data file, database or perhaps some wiki-page.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now when you send a test case like that into the test server you have to map the test command to some function/code that is going to be executed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This weekend I had some time to think on how I could solve this in an elegant way, and I really didn´t wan´t beeing stuck in an endless if/else or switch case story.&lt;/div&gt;&lt;div&gt;I wanted seomthing that would later be easy to use for dynamically adding new test commands/plugins in runtime.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The server is written in java and so what I came up with was defining a hash map with the test command as the key and then the fully qualified classname as the data.&lt;/div&gt;&lt;div&gt;Then I could use that hash map when a test command was sent to the server to use a dynamic class loader and instantiate a test command object.&lt;/div&gt;&lt;div&gt;The requirement for the test command class is that it is a child class of "TestCommand" which through an interface specifies that the Run()-method has to be implemented.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is an example of the code I used for the solution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;public class TestClass&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;   private Hashmap m_cmdClass;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;   public Testclass()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;   {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;        m_cmdClass = new Hashmap&lt;string,&gt;();&lt;/string,&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;        m_cmdClass.put("Start simulator", "my.server.testcommands.StartSimulatorCommand");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;   } &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;   public TestCommand getTestCommand(String aTestCmd, String aTestParamsBuffer)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;   {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;       TestCommand testcommand = null;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;       ClassLoader classLoader = Thisclass.class.getClassLoader();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;       String fullClassName =  m_commandAndClasses.get(aTestCmd);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;       Class aClass = classLoader.loadClass(fullClassName);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;       testcommand = (TestCommand)aClass.newInstance();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;       testCommand.loadParameters(aTestParamsBuffer);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;   }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;   return testcommand;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this code is just an example of how you can use a dynamic class loader and a hash map to connect a test command to an actual class.&lt;/div&gt;&lt;div&gt;This production code looks a bit different and there is error handling as well, but this should give you some ideas what you could do.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-3688163669265143666?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/3688163669265143666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2011/03/writing-your-own-test-framework-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/3688163669265143666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/3688163669265143666'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2011/03/writing-your-own-test-framework-with.html' title='Writing your own test framework with a DSTL in java?'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-2958701037302866572</id><published>2010-12-18T04:55:00.000-08:00</published><updated>2010-12-18T05:03:33.657-08:00</updated><title type='text'>Recomended reading: "The Effort Effect"</title><content type='html'>&lt;div&gt;Just read an article that made me remember reading James Bach:s (@jamesmarcusbach) book "Secrets of a Buccaneer-Scholar", and it´s really interesting.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The article is called "The effort effect" and goes into explaining the different kinds of people that either think that you are born with a natural talent and you don´t need to put in more effort (or it´s just not worth it) as opposed to those that realize that we can learn and be better at stuff if we apply effort into that area (grossly simplified).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well worth the read.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.stanfordalumni.org/news/magazine/2007/marapr/features/dweck.html"&gt;http://www.stanfordalumni.org/news/magazine/2007/marapr/features/dweck.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-2958701037302866572?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/2958701037302866572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2010/12/recomended-reading-effort-effect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/2958701037302866572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/2958701037302866572'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2010/12/recomended-reading-effort-effect.html' title='Recomended reading: &quot;The Effort Effect&quot;'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-5307882966659929328</id><published>2010-12-18T03:22:00.000-08:00</published><updated>2010-12-18T04:26:55.818-08:00</updated><title type='text'>Positive feedback in mail, negativ face-to-face</title><content type='html'>&lt;div&gt;Yesterday I made a mistake, and yes it happens for me as well sometimes...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I got to emotionally invested in a retrospective that I had just conducted with my new team.&lt;/div&gt;&lt;div&gt;Since I was "the scrum guy" I was asked to explain how I usually do my retrospectives.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I layed down some basic ground rules.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- I always divide my retrospectives into a couple of phases.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;1. What worked less well?&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;2. What worked well?&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;3. What can we improve in the next sprint?&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;- Also every phase is started with ~5 minutes of solitary thinking and writing on post-its&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;This is because some people are more inclined to taking "the back-seat" and let others do the talking when the others start. &lt;/div&gt;&lt;div&gt;Also I might have some stray thoughts on some matter but when others start to talk about something else it´s easy to forget that line of thought and start thinking about what the others are currently talking about.&lt;/div&gt;&lt;div&gt;Finally it´s a very nice indicator of the importance of something if several people thought about it independently of each other.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- The retrospective is a way for us to improve in the comming sprints&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;This is not something new, we continously inspect, adapt and improve, and thats one of the basis for having a retrospective.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;- It also serves as a "venting point", a place were we can "cleanse ourselfs" or just let of some steam&lt;/div&gt;&lt;div&gt;Sometimes people just needs to talk a bit about the problems/people they´ve encountered during this sprint, but we don´t always need to act upon it.&lt;/div&gt;&lt;div&gt;For me its a very cleansing feeling, a catarsis (greek word meening "cleansing" or "purging"), where I can say what I want in that room and then leave that behind as I walk out the doors &lt;/div&gt;&lt;div&gt;of that meeting room.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;- Anything can be said, and if we want some comment or note to stay in the room thats ok, we don´t always have to communicate everything we say.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the reason why I divide my retrospective into the phases is because it´s easier to focus on the negative stuff at one time and the positive at another time.&lt;/div&gt;&lt;div&gt;Kind of like going into a certain mind-set, the most popular theory about this is the "DeBono:s Six thinking Hats".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As this was a new project and we made some great progress, and since the mission and requirements were really unclear we had a lot of stuff to vent and write down.&lt;/div&gt;&lt;div&gt;Some we chose not to write down, most we wrote down and then we decided upon 2 things to improve for the next sprint.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However since we were "in that mode" and didn´t quite think things through I missed upon one thing.&lt;/div&gt;&lt;div&gt;This project is a central project that covers multiple nodes/departments and we have designated representatives for all of departments, they are supposed to talk for the departments and take &lt;/div&gt;&lt;div&gt;stuff home to discuss with other people.&lt;/div&gt;&lt;div&gt;Since this project is new and has been a bit unclear from the start the representatives haven´t always had time to invest in this.&lt;/div&gt;&lt;div&gt;One of the representative is a colluege of mine that I´ve been working with for some time.&lt;/div&gt;&lt;div&gt;It´s one of the persons that I have the highest respect for.&lt;/div&gt;&lt;div&gt;The reason I have this respect for him is that he is enthusiastic, driven, experienced, lots and lots of technical and testing knowledge, and also thinks a lot like me (the best indicator for a great person ;-) ).&lt;/div&gt;&lt;div&gt;As you might have guessed a person like this has a lot of other commitments at the same time and therefore the attention for this project has slipped a bit.&lt;/div&gt;&lt;div&gt;He is not the only representative where this has happened, and since we felt that this project is important and that we really cn make a difference we wanted to point out this out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We mentioned that the representatvies from certain nodes were really well suited becuse of the background and experience for this task and that we´d prefer to continue working with them, &lt;/div&gt;&lt;div&gt;but if it was hard to find time and focus for this project perhaps some other person could take the job instead.&lt;/div&gt;&lt;div&gt;We sent our all our feedback out in mail summarising all our findings and went on our business feeling very relaxed after a succesfull retrospective.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However the person I have mentioned above became very upset when he received this feedback in an email and felt very afronted by this public critisism.&lt;/div&gt;&lt;div&gt;He confronted me afterwards and had a talk with some very heated emotions eminating from him and I quickly realised exactly what we had done.&lt;/div&gt;&lt;div&gt;We had confused the role and the individual behind the role. &lt;/div&gt;&lt;div&gt;We felt unconsiouslty that we only critisised the role and not the individual. However anyone can see that that´s not how it is going to be received.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The even stranger thing is that I have on previous scrum teams where I have been a scrum master said that we give positive feedback in emails (preferably CC the persons manager as well).&lt;/div&gt;&lt;div&gt;But negative feedback we should take face-to-face ot avoid confusion and also avoid exposing the person to other people.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have apoligised to this person and explained the situation to him and he has said that in the future he wants this kind of feedback feedback but delivered in person instead.&lt;/div&gt;&lt;div&gt;Also we have agreed to put this behind us and forget it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Still ... I feel a bit ashamed since I should have known better, but I got to emotionaly invested in the project and the current team, and didn´t quite think through what and how we &lt;/div&gt;&lt;div&gt;communicated our retorspective findings.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So a lesson to be remembered is: Positive feedback in email (and in person), negative feedback face-to-face.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-5307882966659929328?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/5307882966659929328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2010/12/positive-feedback-in-mail-negativ-face.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/5307882966659929328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/5307882966659929328'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2010/12/positive-feedback-in-mail-negativ-face.html' title='Positive feedback in mail, negativ face-to-face'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-4530785470046318974</id><published>2010-12-16T07:04:00.000-08:00</published><updated>2010-12-16T07:08:49.459-08:00</updated><title type='text'>Recomended reading: "Time To Look Seriously At Software Developer Apprenticeships"</title><content type='html'>I just saw a tip at twitter from Markus Gärtner (@mgaertne) about an absolutly fantastic blog-entry.&lt;div&gt;Well worth your time to read and should be equally applicable towards software testing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Time To Look Seriously At Software Developer Apprenticeships"&lt;/div&gt;&lt;div&gt;&lt;a href="http://parlezuml.com/blog/?postid=977"&gt;http://parlezuml.com/blog/?postid=977&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-4530785470046318974?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/4530785470046318974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2010/12/recomended-reading-time-to-look.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/4530785470046318974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/4530785470046318974'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2010/12/recomended-reading-time-to-look.html' title='Recomended reading: &quot;Time To Look Seriously At Software Developer Apprenticeships&quot;'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-5033870750257518668</id><published>2010-12-12T11:04:00.000-08:00</published><updated>2010-12-12T13:55:46.899-08:00</updated><title type='text'>Trinity Testing - The power of 3</title><content type='html'>&lt;div&gt;Last year at Eurostar (2009) I saw a really fascinating presentation done by Julian Harty from Google (since then he has moved on to ebay) about something called "Trinity testing".&lt;/div&gt;&lt;div&gt;These are the kind of ideas that I really like, where the focus is to put the right people together and make them start talking while the information is fresh and relevant.&lt;/div&gt;&lt;div&gt;Some of the material in this post is drawn from material that Julian was kind enough to send me after last years Eurostar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let me explain about trinity testing...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The motivation behind this idea is that even great requirements don´t communicate all that we need.&lt;/div&gt;&lt;div&gt;- There are few great requirements... and usually there are few requirements at that.&lt;/div&gt;&lt;div&gt;- So people have to guess the desired behaviour of features and fixes.&lt;/div&gt;&lt;div&gt;- This leads to software that is flawed in ways that we don´t even know! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also there is the problem of latency.&lt;/div&gt;&lt;div&gt;- Features are bundled into releases &lt;/div&gt;&lt;div&gt;- Developers finish code in between releases&lt;/div&gt;&lt;div&gt;- Testers are expected to test releases&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the meantime the developer has moved on to the next feature.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When someone is working an idea, in this case developer working on a new feature, the knowledge or focus on that particular area is high.&lt;/div&gt;&lt;div&gt;Therefor if you were to ask her something about that code it would be easy for her to remember the correct details and explain them for you.&lt;/div&gt;&lt;div&gt;However ... as time progress and that developer starts to work on other features/bug fixes etc. and that knowledge is put further back in the mind and the attention of the developer is &lt;/div&gt;&lt;div&gt;on the new things that she is working on, she also has an incentive and interrest to work on the new thing currently occupying her mind (this being planned for the next release) and it takes time to remember the details.&lt;/div&gt;&lt;div&gt;Also during this time the needs might have changed and more changes might be required.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To often the normal scenario is just this. &lt;/div&gt;&lt;div&gt;A developer finishes with the code and submits it, and after the feature has been packaged into a release  a tester normally picks up the release for testing.&lt;/div&gt;&lt;div&gt;Hopefully the tester has had time to do some preparations beforehand at their desk, separate from developers and the people writing the requirements of couse, and some time elapses, bugs &lt;/div&gt;&lt;div&gt;are most often found.&lt;/div&gt;&lt;div&gt;Now during this time the developer in question has started the work on a new feature/bug and has her mind, focus and attention on this new work.&lt;/div&gt;&lt;div&gt;When a new defect arrives this forces her to do a context switch and also affects her current work.&lt;/div&gt;&lt;div&gt;The longer the time that has elapsed since the developer left her work behind, the bigger the impact when she does this switch.&lt;/div&gt;&lt;div&gt;Also a not uncommon scenario arises here and the defect that has been found is not clearly breaking any requirements, but it has enough characteristics for the tester to be classified as a bug. &lt;/div&gt;&lt;div&gt;Now a discussion starts between the two parties regarding the intended behaviour of the software and sometimes a third party has to be consulted, usually a system specialist, requirement analyst or system architect.&lt;/div&gt;&lt;div&gt;This increases the overhead required for all parties to start communicating.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the general idea of trinity testing is that when the work is being started, a developer, a tester and a "domain expert/analyst" sits down on a brief session (30-90 minutes) and talks the feature through, and this is when the concept is being concrete. &lt;/div&gt;&lt;div&gt;The participants can vary from session to session depending on the information needed.&lt;/div&gt;&lt;div&gt;All the parties have different roles, responsibilities and things to prepare up-front.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- The developer explains the features implementation details and will learn during this session the intention of the app, how it is going to be tested, how it might be broken and test automation ideas&lt;/div&gt;&lt;div&gt;- The tester explains about fault models, concerns that he might have, how he intend to test and if there are test automation ideas and learns about the intentions of the app (what it should do) and the implementation details (what it is actually doing)&lt;/div&gt;&lt;div&gt;- The domain expert understands the application in depth and what the application should do and learns about the implementation details&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The idea here is that the session should not be a long painful meeting with lots of stakeholders, just a representative of the people that are going to do the job.&lt;/div&gt;&lt;div&gt;Sometimes the developer isn´t the sole person that is going to do the work and likewise for the tester, in this case that person acts as a representative for the group in order to decrease the number of people. &lt;/div&gt;&lt;div&gt;Also the domain expert can be different people depending on the area that needs to be covered.&lt;/div&gt;&lt;div&gt;The three persons exchange information, asks questions, communicate and then go home and do the work. &lt;/div&gt;&lt;div&gt;People can even do pair work afterwards (pair exploratory testing with the developer for instance) if they feel brave and adventurous.&lt;/div&gt;&lt;div&gt;Everything is fresh in their mind and this is the current task at hand.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- The analyst/domain expert works at home with the customer, defines features etc.&lt;/div&gt;&lt;div&gt;- The developer fixes issues found at the session, implements the feature etc.&lt;/div&gt;&lt;div&gt;- The tester tests in more depth and decides what should be automated if appropriate, finds defects etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After everyone is finished with their work they get together again and exchange information in a new session.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- How did the developer implement the code?&lt;/div&gt;&lt;div&gt;- Did the analyst uncover new information from the customer?&lt;/div&gt;&lt;div&gt;- What did the tester find during his test sessions?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sometimes if the work that is being done is of the larger magnitude it can be necessary to have sessions in the middle as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what are your thoughts on this concept, anything you already tried at your work or feel like trying out, or just don´t agree?&lt;/div&gt;&lt;div&gt;Post a comment if so.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-5033870750257518668?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/5033870750257518668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2010/12/trinity-testing-power-of-3.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/5033870750257518668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/5033870750257518668'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2010/12/trinity-testing-power-of-3.html' title='Trinity Testing - The power of 3'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-6141704472632529292</id><published>2010-10-12T12:36:00.000-07:00</published><updated>2010-10-12T12:48:48.471-07:00</updated><title type='text'>New inspiration</title><content type='html'>Today I saw a webinar (&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;‘&lt;strong&gt;&lt;span&gt;Do we need Labels? Are we all not ‘Testers’?) &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;at work presented by Henrik Andersson.&lt;div&gt;He talked about the tendency for testers to label themselfs and put themselfs into boxes (agile testers, exploratory testers, telecom testers, senior tester etc etc.)&lt;/div&gt;&lt;div&gt;In his view, the tendency to label yourself is amongst other things often based on the need to cover up your lack of testing skills by showing of a fancy title.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;His wishes are that we instead of labeling ourselfs let our work and reputation become what recruiters look at when hiring instead of what title you have.&lt;/div&gt;&lt;div&gt;The means to that end is to take control over your own test career and do things that let you grow as a tester (blog, be active in forums, read articles, &lt;a href="http://weekendtesting.com/"&gt;weekend testing&lt;/a&gt; etc.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As that was my intention when I started my blog here it got me inspired to continue with it.&lt;/div&gt;&lt;div&gt;Since the last time I wrote in this blog I have been on paternity leave and wonderful as that has been it kind of distracts you and let you think of other stuff than testing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But since I´m back at work and currently at a very stimulating assignement at a systems test department getting to do all kinds of fun stuff like non-functional test automation, version handling of our test data etc. I felt it was time to get back to the blog.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So welcome back and enjoy your reading.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-6141704472632529292?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/6141704472632529292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2010/10/new-inspiration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/6141704472632529292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/6141704472632529292'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2010/10/new-inspiration.html' title='New inspiration'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-7973086871963602186</id><published>2010-01-02T04:53:00.000-08:00</published><updated>2010-01-02T05:13:01.386-08:00</updated><title type='text'>Just fininshed reading "Weinberg: Perfect Software..."</title><content type='html'>As the title says I just finished reading Weinbergs book "Perfect Software and other illusions about testing".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The book was easy to read and had lots of examples and anecdotes from his and other persons life making it interesting and rich and not dry as these kind of books easily can be .&lt;/div&gt;&lt;div&gt;He stated in the introduction that this book was written to enlighten people about testing (managers,developers, testers and more) and that a good tester would recognize and know about a lot of the things described in the chapters.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first chapters did indeed contain lots of material that was familiar and that I have experienced over the years, but this just got me more inspired to recommend this book to all developers/managers that I know of (test enlightenment crusade). &lt;/div&gt;&lt;div&gt;It really addresses a lot of the questions that typically arises in a development organisation (why can´t we test everything?, Why bother testing?) and answers them in a very clear manner (answers you wished you had when sitting in that meeting with a developer or manager that just did not understand).&lt;/div&gt;&lt;div&gt;Another interesting aspect of the book is that Weinberg goes into the psyche of people and how we react to information (Information immunity, defensive reactions etc).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The last chapters really got interesting when discussing making meaning of information and determining the significance of it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I can really recommend this book to anyone who´s interested in software testing or just wants to get a better insight into the subject.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now which book to read next, J.Bach:s "Secrets of a buccaneer scholar" or another Weinberg book "Becoming a technical leader"?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-7973086871963602186?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/7973086871963602186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2010/01/just-fininshed-reading-weinberg-perfect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/7973086871963602186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/7973086871963602186'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2010/01/just-fininshed-reading-weinberg-perfect.html' title='Just fininshed reading &quot;Weinberg: Perfect Software...&quot;'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-504397327504537385</id><published>2009-12-28T14:01:00.000-08:00</published><updated>2009-12-28T14:38:51.555-08:00</updated><title type='text'>New assignement - going native?</title><content type='html'>Come January I´m taking a break from my normal assignment for parental leave.&lt;div&gt;I´ll be gone for half a year together with my son and it will be most interesting to put it mildly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But for two weeks in January I got a quick assignment doing a job for a large mobile operator.&lt;/div&gt;&lt;div&gt;The work will consist of me doing an analysis of their current test situation in an business area and possible recomendations.&lt;/div&gt;&lt;div&gt;I will mostly be looking on the testing done by the developers and test engineers situated in the development teams. &lt;/div&gt;&lt;div&gt;In other words the unit, functional and regression testing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I still wonder how my company managed to get me this assignment but I am very enthusiastic going into this, but also very nervous.&lt;/div&gt;&lt;div&gt;I´ve never done this kind of assignment before so I will have to find how I should approach the problem at hand.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One tip I´ve got is from my wife is: "Living with the natives" or "Going native"&lt;/div&gt;&lt;div&gt;She´s an  academic in the social sciences and the approach mentioned above is used in &lt;a href="http://en.wikipedia.org/wiki/Ethnography"&gt;ethnography&lt;/a&gt; when gathering material for research.&lt;/div&gt;&lt;div&gt;Basically one goes into the organisation and does the same work as the employees (a.k.a "The natives"). &lt;/div&gt;&lt;div&gt;The idea being that it will be giving me a better insight into their work, daily lives and problems.&lt;/div&gt;&lt;div&gt;This approach is very suitable for me since I have worked as a tester, developer, test lead etc.&lt;/div&gt;&lt;div&gt;The question is if there will be enough time to do this over the course of only two weeks... ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This assignment has really gotten me excited as it will give me the opportunity to use all my experience from testing to development and further on seeing the "whole picture" and how the organisation works, but most importantly to work with testing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just hope I don't bite of more than I can chew.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-504397327504537385?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/504397327504537385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2009/12/new-assignement-going-native.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/504397327504537385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/504397327504537385'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2009/12/new-assignement-going-native.html' title='New assignement - going native?'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-6510714839252496497</id><published>2009-12-18T12:28:00.001-08:00</published><updated>2009-12-18T12:52:56.367-08:00</updated><title type='text'>My very own book account</title><content type='html'>At my company I have some good benfits, but one I praise especially high is my very own personal book account.&lt;div&gt;Yes you read it right ... my own book acount.&lt;br /&gt;&lt;div&gt;I can order books for 2000 swedish crowns (around 275$) of my liking every year.&lt;/div&gt;&lt;div&gt;The only attachement is that it has to be somehow related to mywork/career (software development, testing, personal development etc.).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The other day I got the latest batch of books I ordered. &lt;/div&gt;&lt;div&gt;After all a new year is approaching and I had money left to spend on my account ;-)&lt;/div&gt;&lt;div&gt;I ordered &lt;a href="http://www.satisfice.com/blog"&gt;J. Bach's&lt;/a&gt; new book "&lt;a href="http://www.amazon.com/Secrets-Buccaneer-Scholar-Self-Education-Pursuit-Lifetime/dp/1439109087/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1261169173&amp;amp;sr=1-1"&gt;Secrets of a buccaneer-scholar"&lt;/a&gt;, G M. Weinberg's "&lt;a href="http://www.amazon.com/Becoming-Technical-Leader-Problem-Solving-Approach/dp/0932633021/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1261169211&amp;amp;sr=1-1"&gt;Becoming a technical leader"&lt;/a&gt; and &lt;a href="http://www.amazon.com/Perfect-Software-Other-Illusions-Testing/dp/0932633692/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1261169236&amp;amp;sr=1-1"&gt;"Perfect Software, and other illusions about testing"&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I´ve especially been wanting to read the last one (Perfect Software...) for quite a while now and started reading it tonight.&lt;/div&gt;&lt;div&gt;I have high expectations for it since I´ve heard lots of good feedback on it.&lt;/div&gt;&lt;div&gt;Anyone that have read it and care to share their thoughts on it or any of the other books?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also as a note i think that the concept of your very own book account is something that every company should adopt if they want to encourage their employees to evolve and feel appreciated at work.&lt;/div&gt;&lt;div&gt;Just think about it, my company has ~50 employees and the total cost per year will be ~13.750$ (plus I´m sure lots of tax rules etc that makes it deductible and what not).&lt;/div&gt;&lt;div&gt;This is practically nothing when we are talking about company budgets of that size.&lt;/div&gt;&lt;div&gt;On the other hand it is a very luxurious privilege and something that makes me feel very appreciated and important.  &lt;/div&gt;&lt;div&gt;The company on the other hand gets motivated people who hopefully will become better more well informed engineers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh and by the way, I´m hoping that I will get back on my thoughts on "Perfect Software" and possible ideas and inspiration I might get from it.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-6510714839252496497?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/6510714839252496497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2009/12/my-very-own-book-account.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/6510714839252496497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/6510714839252496497'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2009/12/my-very-own-book-account.html' title='My very own book account'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-1887651042670711377</id><published>2009-12-12T02:59:00.001-08:00</published><updated>2009-12-18T13:24:45.673-08:00</updated><title type='text'>Mind the gap - and how we bridge it</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QHTI5cbV2to/SyvzCZ6Y2SI/AAAAAAAAAAM/jS2atGl-tEk/s1600-h/mind-the-gap-logo.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 161px;" src="http://3.bp.blogspot.com/_QHTI5cbV2to/SyvzCZ6Y2SI/AAAAAAAAAAM/jS2atGl-tEk/s200/mind-the-gap-logo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5416690199484225826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This post is growing into a large one and I will divide it in two parts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One thing that has struck me through the years are how divided we are.&lt;/div&gt;&lt;div&gt;Testers Vs. Developers ... and all the prejudices that exists between the two groups.&lt;/div&gt;&lt;div&gt;This was an issue that was raised several times at Eurostars by several speakers and also on the panel session in the last day of the conference.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This has been especially clear to me since I routinenly move between the two camps being a so called "test developer".&lt;/div&gt;&lt;div&gt;On one hand I love coding and the craftmanship involved and on the other hand I love testing and the whole intellectual challenge in that process.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This text will be a bit stereotypical and exagerated, but all in order to show my point.&lt;/div&gt;&lt;div&gt;But on the whole I´ll bet you will have seen the things I mention here more or less in your daily work regardless if you´re a tester, developer or something in between.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;But is it really as black and white as testers vs. developers?&lt;/div&gt;&lt;div&gt;No in between we actually have a few other groups that can bridge the gap and act as ambassadors between the two groups.&lt;/div&gt;&lt;div&gt;I´ve already mentioned test developers and theres also testers who have coded in the past.&lt;/div&gt;&lt;div&gt;Of course there also exists the group of developers who have tested in the beginning of their career, although these tend to have seen testing only as a necessary evil in order for them to get a foothold into the company to do "real coding" instead.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The other day I thought of another group that exists, the so called Design&amp;amp;Maintenance developers, in other word when you're on permanent defect fixing duty.&lt;/div&gt;&lt;div&gt;The work involed in defect fixing actually has lots of elements that resembles exploratory testing.&lt;/div&gt;&lt;div&gt;The developer looks for the reported fault, gathers data/information, learns about the product/feature, tests theories, gathers more information and so on, all in a continuous feedback cycle with the aim of learning enough of the problem to be able to fix it properly.&lt;/div&gt;&lt;div&gt;Also when we fix a defect we have to be on the lookout for other sideeffects or symptoms of this defect that we might not have considered and that also have to be taken care of.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Kaner decribes testing like CSI in that we have tools and procedures, but they don't define the investigation, that there is to much information to process everything and the investigator must select what to investigate and what not to.&lt;/div&gt;&lt;div&gt;This is also very applicable to the process of fixing a defect for a developer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It would be very interesting to see if D&amp;amp;M developers would benefit from a class in exploratory testing (or a class aimed towards developers: "Exploratory Defect Fixing") and what their thoughts would be on it.&lt;/div&gt;&lt;div&gt;I might be tempted in the future to give a presentation at my company (which is heavily developer-centric, I´m the only one with a testing background) and see what the developers think of exploratory testing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the next part of this post I will try to discuss different ways that can be used to make the gap smaller between testers and developers.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-1887651042670711377?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/1887651042670711377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2009/12/mind-gap-and-how-we-bridge-it.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/1887651042670711377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/1887651042670711377'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2009/12/mind-gap-and-how-we-bridge-it.html' title='Mind the gap - and how we bridge it'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QHTI5cbV2to/SyvzCZ6Y2SI/AAAAAAAAAAM/jS2atGl-tEk/s72-c/mind-the-gap-logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-5328915513147836616</id><published>2009-12-08T23:49:00.000-08:00</published><updated>2009-12-08T23:53:37.909-08:00</updated><title type='text'>Upcoming webinar with James Whittaker</title><content type='html'>Tomorrow 10/12 there will be a open webinar held by James Whittaker.&lt;br /&gt;The topic will cover Exploratory testing done at Google.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"I'll be giving a talk about how we do testing at Google, specifically related to an update on our use of exploratory testing that I introduced at STAR East."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;http://www.testingreflections.com/node/view/8386&lt;br /&gt;&lt;br /&gt;Could be interresting and I'll try to catch tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-5328915513147836616?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/5328915513147836616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2009/12/upcoming-webinar-with-james-whittaker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/5328915513147836616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/5328915513147836616'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2009/12/upcoming-webinar-with-james-whittaker.html' title='Upcoming webinar with James Whittaker'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-8192363925067849345</id><published>2009-12-08T04:45:00.001-08:00</published><updated>2009-12-09T22:59:56.441-08:00</updated><title type='text'>Regroup - Rethink</title><content type='html'>When you work on a problem, sometimes you become stuck in a rut.&lt;br /&gt;Sounds familiar?&lt;br /&gt;You sit with the same problem trying the same approach over and over again, hopefully with small variations (read: banging your forehead at the monitor from slightly different angles).&lt;br /&gt;&lt;br /&gt;This is when you can be greatly helped by taking a step back and rethink your approach.&lt;div&gt;You can for instance change the scope of your focus for the current problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Perhaps you have been visualising the problem on a too low-level to see the full picture properly. &lt;/div&gt;&lt;div&gt;Or perhaps you have had a too wide approach and not quite gotten started at all because of the sheer size of it all. If so it is perhaps time to categorize and take a closer look at the different parts of the problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can also change the technique you are using altogether: &lt;/div&gt;&lt;div&gt;"Ok, so I can´t break the product using boundary testing, perhaps if I use special characters instead that will reveal some new information for me". Or:&lt;/div&gt;&lt;div&gt;"I´ve been debugging this code from the end of the system and what comes out of it, lets take a look at the beginning and what input is sent into the system".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is something &lt;a href="http://www.satisfice.com/"&gt;James Bach&lt;/a&gt; calls "Focusing and De-focusing", in other words changing the way we are looking at the problem at hand. &lt;/div&gt;&lt;div&gt;He teaches this technique in his class for "&lt;a href="http://www.satisfice.com/seminars.shtml"&gt;Rapid software testing&lt;/a&gt;" and I can full heartedly recommend you take the class if you get the opportunity to. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This technique might sound easy enough, but the real trick lies in practising this often enough so that it becomes a habit and we don´t even have to think about it when we get stuck with a problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the beginning I found myself (and still do at quite a lot of times) working on a problem like debugging code hours on end using the same technique (read: banging my head on the monitor) and suddenly realised I got nowhere and had to stop to change my approach, very oftenly this quickly lead to pleasant results.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sometimes it isn´t even very important what change you do, just that you take a new approach and through that process get new ideas and information for the problem at hand.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This might not sound like much new under the sun, but you´d be suprised how often you find yourself stuck with a problem using the same approach over and over again, leading to frustration and draining of energy and attention.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-8192363925067849345?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/8192363925067849345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2009/12/regroup-rethink.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/8192363925067849345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/8192363925067849345'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2009/12/regroup-rethink.html' title='Regroup - Rethink'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-7257484528026585291</id><published>2009-12-06T13:19:00.001-08:00</published><updated>2009-12-06T14:15:33.018-08:00</updated><title type='text'>The importance of communication skills for a tester</title><content type='html'>Why is it of any importance how I communicate in my role as a tester?&lt;div&gt;I just publish the latest defect I found and its off for fixing or rejection ... ???&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wrong!&lt;/div&gt;&lt;div&gt;It is my belief that the first and foremost important mission for us testers is providing information to the project.&lt;/div&gt;&lt;div&gt;This information will contain details such as, what defects we found, what potential threats and risks we see, how much of the product have we covered with our testing and a number other factors.&lt;/div&gt;&lt;div&gt;If we do this with confidence and integrity we may even over time gain the status of "trusted advisor" to the project leader, but in order for us to achieve that it is a requirement (among others) that we have the skills necessary to communicate our message.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Coming into the office of the project leader screaming and shouting about the latest defect that got rejected at the review board will most often not get us much and it will definitely not work in our favor in the long run. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Communcation skills (or even &lt;a href="http://en.wikipedia.org/wiki/Social_skill"&gt;Social skills&lt;/a&gt;) is not limited to verbal communication face to face but also communication through different mediums such as email, telephone etc.&lt;/div&gt;&lt;div&gt;All different forms of communication has its own strengths and weaknesses and it is important to choose the one suitable for the current context.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sometimes it will be necessary walk over to the developer and sweet talk him into looking at your defect and giving it a second thought.&lt;/div&gt;&lt;div&gt;Other times you might have to email the developer and also cc her team leader for that extra punch (don't misuse this though ...)&lt;/div&gt;&lt;div&gt;Other times yet speed will be of the essence and you just have to pick up the phone and talk to the project leader for escalation of your defect (it can be a show-stopper after all).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All these examples call for different kinds of communication and it is up to you to be able to master them all.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When posting a defect it represents different things for different stakeholders.&lt;/div&gt;&lt;div&gt;The project leader might see a risk in delaying the project, the developer might see critique of his or her code (aka. their "baby").&lt;/div&gt;&lt;div&gt;Just simply posting the defect will not do.&lt;/div&gt;&lt;div&gt;We must first document and post the defect in a clear manner that is easily understood by different parties. &lt;/div&gt;&lt;div&gt;It must be general enough for non-developer to estimate its severeness.&lt;/div&gt;&lt;div&gt;It must also be technical enough for the developer to easily dig into it and reproduce it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After this the defect might come into question in the review board and we might have to either defend it ourselfs in front of the board or we might have had to prepare our test lead with the necessary details so they can do that on our behalf.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally the developer might question our defect (when has that ever happened?) and we will have to walk over there and discuss it with them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All this above is part of something called "bug advocacy" ("&lt;a href="http://www.amazon.com/Lessons-Learned-Software-Testing-Kaner/dp/0471081124"&gt;Lessons learned in Software Testing&lt;/a&gt;", Kaner/Bach/Petichord) and its a vital skill for all testers in my opinion and is helped by good communication skills.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To summarize I beleive it is our duty for the project and the stakeholders to learn how to communicate our message or we will not be doing our job to our fullest potential.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-7257484528026585291?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/7257484528026585291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2009/12/importance-of-communication-skills-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/7257484528026585291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/7257484528026585291'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2009/12/importance-of-communication-skills-for.html' title='The importance of communication skills for a tester'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-408947659093558474.post-8130728905571592724</id><published>2009-12-06T12:21:00.000-08:00</published><updated>2009-12-06T13:19:10.344-08:00</updated><title type='text'>Home from conference - fresh start</title><content type='html'>Earlier this week I got back from Eurostar 2009, tired but happy and so so inspired.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let me introduce myself first.&lt;/div&gt;&lt;div&gt;I´m a so called test developer that got introduced to testing in 2005 something, and I love testing, coding and above all combining the two.&lt;/div&gt;&lt;div&gt;During the years I've been working with development, agile coaching, testing, test automation and so on.&lt;/div&gt;&lt;div&gt;I discovered pretty soon the joy of testing and all things around it and first and foremost the challenge for the mind that it introduces.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;During the last year or so I have worked as a developer consultant and been in kind of a rut, this due to the fact that the former company where I was employed went into bankrupcy. &lt;/div&gt;&lt;div&gt;Don´t get me wrong I like coding as much as the next guy, but what really reminded me of how much I miss the testing community was getting the opportunity to go to Eurostar again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There I had the great pleasure of seeing such big personalties as Michael Bolton, Lee Copeland, Susan Windsor, Thomas Graham and many many more.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Afterwards when I was on my way home from the conference I started thinking about what I should do with all this newfound energy and inspiration? &lt;/div&gt;&lt;div&gt;One of the things I decided upon was to start a test-blog to start getting my thoughts and ideas down into printing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The concept of writing down my thoughts and speculation is a bit scary for me as I have always seen myself as a person who is more at home with a perl-script than putting down stuff into writing for my peers to scrutinize and potentially criticize.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So with that I declare the blog "Context-driven thoughts" open.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh and if you are wondering I'm a big believer in the &lt;a href="http://www.context-driven-testing.com/"&gt;Context-Driven School of Software Testing&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/408947659093558474-8130728905571592724?l=contextdriven.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://contextdriven.blogspot.com/feeds/8130728905571592724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://contextdriven.blogspot.com/2009/12/home-from-conference-fresh-start.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/8130728905571592724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/408947659093558474/posts/default/8130728905571592724'/><link rel='alternate' type='text/html' href='http://contextdriven.blogspot.com/2009/12/home-from-conference-fresh-start.html' title='Home from conference - fresh start'/><author><name>AzidStar</name><uri>http://www.blogger.com/profile/09324802597293654009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
