Archive for 2007

Beachcombing

Here’s a quote from a book on beachcombing that ties perfectly with software testing: “a beachcomber’s life is a demanding one that calls for discipline and zeal… it’s the endless seeing that causes the psychic strain. It’s the richness of life in the tidal zone.” After working through numerous internal builds there is a psychic strain in keeping my eyes open to something I’ve seen what feels like (and may be) dozens of times.

I am literally getting close to the final round of testing on a project. I can’t write projects specifics but I can write about how it feels at the end of testing and tactics I use late in the game.

The end requires more discipline than creativity – my opinion. The bugs I find in the final cycles tend to be less interesting, less exciting but necessary to find and deliver.

I like the comparison to beach combing because I collect sea glass – ok here goes a digression (I didn’t really know I digress so often until I’ve been working with Mike Kelly who gracefully has pointed it out to me). I grew up in Boston and spent many summers on Cape Cod – being near water is important to me – now years later I live in a ‘burb of Chicago, a mile from Lake Michigan near a beautiful beach. I beach comb and collect sea glass even here in the Midwest. If you don’t know what sea glass is you can learn about here. I happen to have what I would consider a pretty decent collection that’s taken years to accumulate. Yes, years. Collecting sea glass takes patience. So does collecting the final round of bugs.

Software bugs are like sea glass – interesting small broken bits that we scavenge for. Consider this phrase from Wikipedia on beachcombing: “Sophisticated recreational beachcombers use knowledge of how storms, geography, ocean currents, and seasonal events determine the arrival and exposure of rare finds.” Certainly compares to what an experienced tester can have up their sleeve compared to someone new in the field. Knowledge of how bugs breed and cluster, how moving a build to a different environment (testing to production or preproduction) can uncover configuration issues and each release can expose rare finds.

I want to point out some distinct WIFFMs and be less abstract:

Recognize some testing requires raw discipline. Even sophisticated combers deal with the grueling aspect of many hours hunched before finding the final bits and sometimes without a find at all. I use the term raw discipline because in all honesty, the final rounds of testing can require more discipline and focus than earlier rounds (at least for me). I’m tired right? The big splashy bug finds are gone and now all that remains all the small shards. And here we go again with yet another build.

So what’s going on during these final rounds of testing? Like sea glass – when I think I’ve found a broken bit, I turn it over slowly and evaluate. Always be willing to discard a find.

Each build provides opportunity for new finds. I feel it is my obligation to stay focused and disciplined at the end of release cycle. But I am human and I get bored, I fidget, I long for the great finds from the early builds, I miss the gotcha bugs while I’m left combing through an application looking about for a small paltry bucket of low priority defects – these little low bugs are not as joyful to find. But then again, I remind myself that I’m part of a team that fine-tunes a product before it releases. I can part of what makes a product – shippable.

I would consider this combing process another element of what I introduced as sweep testing. For as broad as the strokes of testing are at the beginning, the strokes at the end are subtle, a fine filtering. It takes ingenuity in the beginning to feel like I’m outwitting the coders to think of conditions and permutations that make an application twist. But at the end, it’s about finding comfort for the team that product will stand well in production.

And my tactics are different too. I have to force myself to stay seated – yikes, do I want to admit this? But yes, I do because there is – or at least for me the reality that at the end of product build, it is simply a hard hoe. I have to stay focused and alert – after all late introduced bugs are possible and can destroy a release.

I have small personal tactics that work for me. And I will distinctly explain them. (I would have thought this might be dull but email tells me that people want specifics so here goes …)

I barter with myself– can I finish this cycle within X period of time? When I’m done this cycle, I’ll take a stretch. Late in the day, I’ll step out – buy a coffee and since I have the good fortune to work from home often and live near the beach I’ll head over to the Starbucks by the lake. Take 15 minutes, drink expresso, stare the water, and refresh my mind. And then it’s time to get back and go another round. I remind myself of my obligation to deliver, that sometimes it’s discipline which isn’t the brilliant or exciting part of testing but the commitment.

I use my notes. I’ve kept my notes all along the way and now I use them. I go back and I read. What were my first questions about the product? Sometimes I am amused to see how much I didn’t know in the beginning and how much more I know about an application after months or weeks of testing. But the basic questions from the beginning help me at the end – how? – because they’re centering questions – usually the high level questions are guidance to remember what’s important.

I look through my notes, where did I find issues? What areas was I confused about before, because confusion holds opportunity. I use my old Excel files where I’ve captured details. I use worksheets in Excel files to separate ideas by testing areas or categories and now I have those notes, thoughts, tests, bugs – it’s just a method of being organized and not that I’m advocating one method over another – it’s about returning to my notes, not what my notes look like or how I write them. When I’m highly organized I have notes from every release I touched, I know what tests found what bugs. It’s not a documentation heavy process, I write without effort.

I often re-run a short risk analysis in my head. I ask myself continually: what would be awful if it happened in production? I find this to be the single most centering sobering thought to focus my energies. The thought of a possible slip to production is what pulls me through the end.

Share
Posted in storytelling | Comments Off

CAST 2008: The Call for Papers

The official Call for Papers has been posted for the Conference for the Association of Software Testing – see the full CFP.

The theme is Beyond the Boundaries: Interdisciplinary Approaches to Software Testing. I’m excited about the theme – I’m looking forward to discussions and papers surrounding how we learn from different fields and bring that knowledge into the practice of software testing. As one of the program co-chairs for the conference, I’ll be able to review paper submissions and help ensure that the theme means something in terms of the overall spirit of the conference.

The entry on interdisciplinary is worth a read as refresher for what the term truly means. I especially like this phrase: “Interdisciplinary approaches typically focus on problems felt by the investigators to be too complex or wide-ranging to be dealt with using the knowledge and methodology of a single discipline…”

If you have any questions re: paper submissions please use the email address CFP@associationforsoftwaretesting.org . This way my program co-chairs (Doug Hoffman, Christelle Sharff, Morven Gentlemen) and I will see all questions and comments that come in.

Submissions deadline is February 4th.

Share
Posted in conferences | Comments Off

Dining philosophers and semaphores

Multi-user testing has been on my mind recently. I’ve tested three different applications within the last two months for MU issues and in all three applications I’ve found defects. One book I’m currently reading is The Little Book of Semaphores . I just discovered the book although its been around awhile. Its helping me generate ideas about MU testing. The book holds a collection of stories created over the years to describe concurrency issues and related problems and possible solutions.

Edsger Dijkstra created the first story in the series. He used the story format to explain and teach in a tale widely known as the dining philosophers problem. This story works well for me because concurrency is a topic of interest and I enjoy a good story. I like the dining philosophers problem because it’s so accessible. And I admire how Dijkstra stepped outside of any specific programming language and computer terms to build a story that illustrates a problem and possible solutions. Deadlocks, race conditions, and starvation of resources are makings for a good testing story.

I first learned about MU testing from a previous boss of mine, (thanks again Bob). And I continue to learn about MU testing. These are some of my unrelated thoughts about MU testing.

I don’t hear deadlocks or concurrency testing discussed very often even thought as recently as within the last two months, I’ve found issues in this category. How odd because I would think any category of testing that reaps bugs would be discussed more often.

I suspect, although I have no proof is when the word concurrency is raised, we leap to thinking about performance testing and volumes of users. In my mind and in my MU testing, it’s not about volume. It’s about timing. After all in the dining philosophers problem, there are only five philosophers mentioned – not a dozen or hundreds of philosophers and yet it’s enough resources to cause problems.

Another thought that comes to mind is how easy this form of testing is. Forget scripting, two keyboards and solo testing can cover a cycle of MU testing. I guess that’s my opinion but I think it’s a short fairly easy cycle to cover.

Very specifically the testing I do in this category can be reflected as 3-2-2. There are three operations I focus on: add, update, delete. There are two timings I focus on: same time and staggered timing. And two users because that’s all the users I need to simulate in order to find a problem.

Another reason the topic is on my mind is that I’ve written an article about MU testing which should be out early in ’08 as long as my editor is ok with what I’ve written.

Something I don’t know but would like to figure out is – are deadlocks more likely or less likely to take place with faster processing PCs and servers? My first inclination is no because the speed of grabbing and releasing a lock on an object might be faster. But then the more I think about it, perhaps with faster processing, collusion is more likely. I just don’t know. All I do know is when I grab two keyboards and test with frequently used objects in the applications I’m testing, I can usually hit some type of error. Good enough for me.

Share
Posted in SQL | Comments Off

In the back of the house

Someone asked me recently if I knew anything about data dictionaries and since I wrote one some years ago it started a trail of reminiscing. In fact, the more I thought about it the more I knew I likely had a copy of my work from the mid 90’s. I reassembled my oldest computer, the only computer that still has a floppy drive, dug in my attic and found a handful of floppies discarded in a box. I went hunting.

I found a stack of memories buried in test plans and assorted artifacts. It was an interesting experience reading my old work and being able to recall how I felt, read the ideas I had. I could hear my own voice in my head; watch my own thinking from the outside.

And for reasons, these old memories tie to a very recent experience. Let me explain – I’ve worked a short contract as a tester over the past couple of months. I’ve been someone’s virtual tester. I don’t know the team, they don’t know me. I don’t know the product that well either which was an unusual but interesting request. I was brought in at the finale in hopes that I could find bugs with little to no preamble. And I have completely enjoyed this contract. Why? And why would looking through old floppies make me think about this recent experience. From the outside these experiences have nothing in common. And yet on the inside these experiences tie perfectly together.

What did I find? I loved testing software. I loved being left alone to think, to ponder, to examine, and to try out ideas. I’d spend hours of planning and testing; working alone in the test lab. This was years ago, years before I would become a manager and begin fighting for resources, fighting for budget. I used to spend my time with equally quiet thoughtful developers who liked building products. And who, once I could show that I was trying to help, would seek my work and then I was a member of building something. I wasn’t yet a member of managers who spent their time fighting and in meetings. I was in the back of the house. I was considered a geek, typically considered as part of the Dev team not apart from the Dev team. This was a perfect fit for the INTJ of me, far from the maddening crowd.

And the recent project work gave me the same charge. Working from home in the quiet, hired for my brain not my politics. I want to find more clients like this. People, who will hire me as their virtual tester, let me stay in the back of the house. It was the quiet contemplative aspects of software testing that drew me in and fed me intellectually. And these are the aspects I miss when I get thrown into different fires. I work best for people who value what a tester finds which oddly is not every client.

I’m not as shy or as quiet as I used to be. I have more E than I ever did but at my core, I am still an I. (I, E and INTJ are references to Myers-Briggs testing.) And actual hands-on software testing affords me intellectual work that absorbs me.

If you went digging what would you find? It matters. It matters to you personally and without a doubt, it will show up in your work. Your aspects may be very different than mine but when we can find the elements we enjoy we’re in a better position to find those elements again. Do you know what elements of your work feed you?

Share
Posted in self-motivation | Comments Off

Sweep Testing

I have my own style of exploratory testing (ET) I’ve been using for years. I thought I’d use this blog entry to outline how I test.

I find it interesting that no one has asked me how I test when people email me and ask me all sorts of other questions. Perhaps people assume I execute exploratory testing as James has defined and honed ET for the past decade.

Perhaps my nature of testing and exploring an application isn’t different from ET – from a mentality point of view. I make this statement based on the concepts of testing an application by use of exploring versus following prescriptive test scripts. But my test ideas are often not recorded in charters.

Historically when I’ve had an application to test, I start building my ideas in Excel. I don’t use any of the Excel functions per se, I just like the grid view for organizing my thoughts and in all reality, creating tables in Word is too much of a pain. I like that Excel forces me to be brief; I could create longer entries in cells but I generally don’t.

I create a separate worksheet for each area I’m going to test. And this, I think is important. I see each worksheet as a blank canvas. I might list ideas, build a chart, I might cut and paste key requirements that I want to test (not too many because I don’t like duplicating efforts – so if I have many requirements I want to work around, I might reference the pages of a requirements doc etc.) Each worksheet can have its own format because each worksheet and area to test has its own story.

When I sit back and think, I often can’t restrict my test ideas to forming only in one area at a time. Nor would I try. My ideas roam and this is why I like the workbook format of Excel. I move from worksheet to worksheet to capture test ideas. I record ideas before, during, and after testing. I also keep a notebook when I test. I record different things in my workbook and different things in my notebook – I’ll blog about note-taking another time.

To get ideas, I generally do three things: I pass through any documentation I have, I talk to people on the team asking questions and I stare out the window sometimes muttering to myself looking crazy I’m sure. I don’t care. I get ideas from all three avenues.

The next thing I do that I believe is different from ET is what I would call “sweep testing.” When I test, I test in one area at a time and explore. But I never expect that I’ll hit all my ideas on one session. In fact, I expect my first and second sessions in each area will be the most beneficial – the best bug finds. I sweep through an area. I look for bugs. I expect to return to each area for another sweep. The second sweep is helpful because by then I have a feel for the build and a feel for different areas of the application.

A benefit of sweep testing is I find that sometimes I’m distracted by my first test ideas, so I test those ideas first to get them out of my head and see what I can find. I add thoughts to my worksheets. I don’t capture ideas that turned out fruitless. I don’t write test doc to cover my assets, I write what I want to recall. I write what I learn. I write notes. My worksheets seem to be pretty readable by other testers but there are few full sentences and my test ideas are far from test scripts.

By executing testing in rounds or sweeps it helps me to test wide (meaning many areas) and then move back to each area to go deep (meaning more detailed test ideas). I focus on one area at a time, unlike when I’m collecting ideas – and this sense of focus and digging in, exploring and learning is the value of ET and I believe is essential to thoughtful testing.

I’ve used the Excel workbook for years, it’s been effective. It works for me. Sometimes, I write charters but I have to say, I like the workbook because it allows me to have one file to capture many ideas. I roll the version of the workbook when I get a new build or make a significant update to the file. It depends if I’m working alone as to how meticulous I am about file versioning – if I’m alone, then I don’t worry about file versions as much. And I have often worked alone preferring small software companies where the value of what I bring to the product team isn’t measured by metrics or detailed test documents.

Is this ET or not, I have never worried. I have listened to and known James for years, I have deep respect for what he has brought to our field. The value of ET in my mind is the thinking not the documentation. After all why replace prescriptive test scripts only to fret about a different format of documentation? I’ve given myself permission to be logical and practical and not fret over form. I’ve been sharing more and more of what I do and how I do it so that I can help other testers. So these are thoughts around how I test. I have sincere hopes this helps testers learn. More to come –

Share
Posted in Uncategorized | Comments Off

Scrounging through Artifacts

Yesterday I was looking at a project plan for testing ideas when it occurred to me to share this tip with other testers. I use project plans as a tester which is different than how I use project plans when I’m building, contributing or reviewing estimates.

I’m not sure if other testers do this …

I look through project plans to note any bits of code that are called out distinctly. If a piece of code is large enough to be a line item on a plan, it’s large enough to be complex which increases the likelihood of bugs. I suppose I could do a more sophisticated method of complexity analysis but scanning project plans tells me other things. Here’s a couple more …

I look for what developers are coding what components. If I work with a team long enough, I start to know the types of defects individual developers tend to make. (And yes at an appropriate setting and time, I share this information with developers to help get issues addressed upstream.)

I look where different developers might be coding similar items and look to find the gaps between how they code. For example if one developer is coding search and another is coding reports, will they build the queries the same? Would a search in the application and a report using the same criteria give me the same result set? I have an increased chance of a bug if two different people code those two areas or other areas that should be compatible.

And I note the chunks of code built later in the cycle because in my experience, the end of the project is nearly always crammed for time despite the type of SDLC the project is using and code built fast is more likely to be flawed.

Anywhere I can gain an idea or insight is worth scrounging through. This isn’t a huge tip or a large effort to take on but a 10-15 minute read usually gives me something. I’ve never articulated this thought-path anywhere else but I’ve been doing this for years on all sorts of projects. And I wouldn’t keep doing something unless it brought me some value. 

Share
Posted in Uncategorized | Comments Off

Personal drivel

Recently I’ve been asked to share some personal details about myself and while I vowed when I started blogging that I would keep personal drivel out of my blog, I decided the best way to respond was to write a 5 things you didn’t know about me piece– so here goes.

First, I wrote six things because I don’t like false limitations.

1. I lead an intentionally quiet life.

2. I think some of life’s simplest treats are crispy bacon, vine ripe tomatoes, cheese, and cold Asian noodles. I like fancier foods but not on ordinary days.

3. My daughter is the most fascinating person I know. In comparison everything else is somewhat interesting.

4. I wish I could spend more of my life writing. My best days are writing days, best writing hours are 6am-9am and best writing sprints are accomplished if no one talks to me.

5. I’m used to hours of conference calls but otherwise I hate the phone. I generally will not take an unscheduled call – if I can avoid it. Voice mail agitates me more than nearly anything else.

6. I drink more coffee than I should.

Meanwhile multi-user testing, deadlocks scenarios, concurrency issues, stem searching, space trimming and searching with wildcards fill my head as remnants of the past two weeks.

I wrote this piece but didn’t want to post it. Couldn’t figure out why and waited realizing that unless I had content that was on topic, I didn’t want to clog the forum. Since I’ve written about database schemas as well today – then I decided to post both at the same time. I don’t mean to be rude or abrupt, I just think in most cases, time is tight and personal drivel has limited interest.

Share
Posted in Uncategorized | Comments Off

Reading Schemas

Often the first request I make when starting work on a new application, is to request the database schema. I thought (somehow) that this was a fairly typical tester’s first step but recently working with other testers I came to realize this might not be the case.

I thought I would quickly outline some of the things I learn from reading a database schema from a tester’s perspective.

Spread
I can gain a quick sense of how complex an application is just by seeing the model. In turn, knowing an app’s complexity helps me realize how intense SQL queries might become behind the scenes when I conduct searching testing from the front of the application.

Audit trails
I look around for tables with columns like created by, updated by, etc. Multiple timestamp entries on a table help me to watch for what (if any) objects have an audit trail. In turn, I view the objects as more sensitive for some reason and I look at those objects more closely.

Sensitive data
I look for encrypted fields. Will I be working with SSL pages? And if the password field isn’t encrypted, I’ve probably already found a bug.

Data types
I’ve written about data types before but in general, I like to know the types of data I’m working with. I especially look for large data types like blobs and texts. There’s opportunity (bug finds) in filling large objects and then running searches that tax the database.

Fat tables
I look around for tables that I think will grow in volume as the application ages. And I wonder what will happen to performance if when there’s more volume in those tables. I make arrangements for fattening up tables especially if I’m working in a pristine test environment where the data load is small and life for the application is too easy.

I could keep going, there is so much more to be said in being able to read schemas. In my view, database schemas are roadmaps and plenty can be picked up by reviewing one. In all reality what I’d like to do is build a class and offer teaching in this specific area. Maybe I will…

Share
Posted in Uncategorized | Comments Off

Testing Software in Regulated Environments

I had been testing computer software for six years and had worked at three different companies before I walked into my first regulated test environment. I had seen variances in environments, but nothing like this. Regulated environments such as pharma companies and banking and a whole list of other domains that require regulation are very different from some of the fast-moving software development companies I had more experience with. The challenges are quite different.

John McConda and I are building a new peer workshop with help from good friends. The workshop will be called WREST: the workshop on regulated software testing. Our hope is to build and foster a community and forum to openly discuss the challenges (mindful of course of our confidentiality agreements) and to help each other with solutions that can be applied specifically in regulated environments.

The Call for Papers/Presentations has been posted and the website is now up.

Our first workshop will be held in Indianapolis and we plan to host the second workshop in Chicago next spring.

If you’ve never been to a peer workshop before and you’re curious about what they are or how they function let me briefly explain (and please see the WREST website for more details.) Peer workshops are wonderful. There is an instant sharing atmosphere. Peer workshops are where I continue to learn. There’s no glitz, no marketing, and no fluff. Peer workshop attendees like me go to exchange and share openly. The energy level can be amazing. It took me about a week to settle down after my last WOPR. And when I returned from WTST, friends listened to me talk about the workshop for a month. The relationships created are more meaningful because the conversations get down to the very specifics of what works, what doesn’t, why and all the gory fun details. The peer workshops I attend are the highlights of my year – ok this is sounding corny but it’s true. Peer workshops are the best way to get down to conversations that count.

Regulated environments have unique challenges and we’re hoping this new workshop will build and foster a community of software testers who face those demands.

Share
Posted in regulated software testing | Comments Off

Excel Podcast

If you’re interested in data analysis and/or want to improve your Excel skills, check out this podcast. Bill Jelen, the self-proclaimed, MrExcel, offers a free daily 2 minute podcast. His podcasts are well-labeled so you can locate the topics you’re interested in. The opening music is so awful I’m not sure if he’s trying to be amusing but hang past the music because the tips are highly usable.

Share
Posted in Uncategorized | Comments Off

Switch to our mobile site