recent articles on software testing

This afternoon I was talking with a friend and colleague who asked me about my writing, more specifically about software testing articles I’ve written. He was surprised to learn that I had published six articles in the past couple of months – he hadn’t realized that I wrote so much or so often. I thought most certainly I had listed the articles on my blog as each article had been released but it doesn’t look like it. Here’s a list:

“A Heuristic for Regression Testing”
SearchSoftwareQuality, March 2010

“Women of Influence: A Diverse Group of the World’s Top Women Software Testers Share Career Highlights And Insights Into the Profession, Past, Present and Future”
Software Test & Performance Magazine, January 2010

“Testing SMS Texting Applications”
SearchSoftwareQuality, January 2010

“Manipulating Business Intelligence to solve dense data warehouse testing issues”
Understanding the testing challenges associated with data reconciliation on a Business Intelligence (BI) project. Part I.
SearchSoftwareQuality, January 2010

“Testing data fields in business Intelligence projects”
Testing data reconciliation on a Business Intelligence (BI) project. Part II.
SearchSoftwareQuality, January 2010

“Tips for Better User Acceptance Testing”
InformIT, December 2009

You can find a full list of articles I’ve published on the publications page of my website.

I have an article about working on virtual teams that will be coming out on InformIT soon – probably within the next two weeks. I have another article on user acceptance testing (UAT) to be released by SearchSoftwareQuality soon. So yes, I have actually been quietly writing quite a bit about testing in recent weeks/months.

Share
Posted in Uncategorized | No Comments »

Balance

Someone asked me recently why I don’t participate more in software testing forums. Why I don’t blog more often. Why they don’t find me “around” virtually as often as they used to. Balance was my answer.

My online life was becoming consuming. And it’s easy to get out of balance especially when you live in a climate like Chicago where its winter for eight months (or at least feels like it.)

But I’ve been pushing in my chair and walking away from my desk, focusing on other parts of my life. I’ve been exercising more. Reading novels. Writing short stories. Spending more time with friends. I decided this would be the winter I would learn to cook and wow, what a difference that has made. I’m gearing up for another furniture restoration project, a hobby of mine.

What does balance have to do with software testing? Plenty. Software testing is largely about being observant. If your eyes aren’t fresh, if you’re not rested, if you haven’t exercised or moved in hours (and perhaps days), then how alert or observant can you be?

I understand the long days in software testing. I’ve burned through many and I feel certain I will again.

James has blogged about using time to learn when business is slow. I admire that. I admire it for a couple of reasons: 1) it’s important to keep learning and 2) it’s true that as a consultant and business owner, there are lulls in business. I’ve seen the cycles myself a few times over now that I’ve been independent for a couple of years. I learn a lot in those quieter business stretches. Sometimes I learn a lot about myself.

I have gained a better sense of what my real interests are. When my energies are waxing and waning. I’ve gotten comfortable with my notable cycles of intense focus (whether reading or writing) and times that I feel like I have attention deficit disorder. I’ve identified activities I really don’t like to do but that I used to blame lack of time as the reason. Imagine removing time as your block to find (and admit) that you just never get to some activities (or magazines) because you just don’t enjoy them that much or perhaps not at all. It’s freeing to admit, I’m just not that interested in X (insert activity here) than using lack of time as a shield.

Sometimes when business is slow, I read books in software testing and explore new tools. Sometimes as in recent time while business has been quiet, I haven’t read anything in software testing – and that break – unexpected and unscheduled has been a good one. I find I’m hungry now to test again. I miss it and I think that’s a great thing. It means I’ve had a real break and when I’m back to working more, I’ll be ready. Rested and ready.

I use colors on the activities on my calendar. Client time, time to write, time to exercise, time to attend to activities related to having my own business, time to update my class materials … I have several ongoing categories in my life. Now a fairly quick glance at my calendar reveals days and weeks that are well balanced versus time or days that are heavily focused in one direction – which is perfectly fine as long as days heavily-loaded in one category don’t stack up to too many days in a row. Using a color-coded calendar has helped me more readily observe balance issues (it’s just another form of data visualization but I’m not going there today.)

So I could fine-tune this blog, fuss over it but it’s time to move on. When you balance your time well, there is actually time for everything you care about.

Share
Posted in Uncategorized | No Comments »

Explaining the other work we do

I had a technical issue I needed to research for a client. Nothing surprising, I research different bits of information frequently. At the end of my research I realized I wanted to explain what I’d done, I wanted to clarify and present what avenues I had pursued, what information I’d learned, what issues remained and what possible other solutions we might look into. I realized I wanted to share these bits of information with the project team so I set out to write an email.

I hadn’t thought much about what I had done. I figured it would be a short email and nothing more. Once I got writing, I realized how many avenues I had in fact pursued. In writing I realized I didn’t want to be vague so I added the references I’d used whether those references were people, forums or online articles. From a political perspective, this team is low on politics so it wasn’t that I was trying to cover anything. I had done the solid digging on the subject. I wrote what I did. I sent the email.

I received unexpected positive feedback from the team. One person thanked me and this from a person who doesn’t use extra words on any topic. It was flattering, it felt nice and I appreciated them taking the time to give me the feedback. Later that same day, I happened to go for a walk. Reflecting on this situation I realized – this is a small bit of work that I do as a matter of course but by typically not thinking to share it and detail what I had done – it would normally disappear.

How often might we do that as testers? How often do we perform small bits of work and don’t think to share it?

If we don’t at times share what we do, our coworkers and clients won’t know. It’s not that we need credit for every bit of work that we do but it is important for people to know that at times, if not frequently, we do bits of work they might not realize. We might consider more frequently explaining the research we do as well as other quiet background tasks.

If people don’t know what we do at times, they won’t know what they might lose when they consider replacing us with a cheaper resource. They won’t understand all of the skills we bring to the table if chunks of our work take place without ever being spoken of.

I’ve taken to a new habit or at least I’m trying to make it a new habit, I ask myself at the end of the week: what have I done? I’m trying to get past the obvious and instant answers. I’m trying to ask myself, what else? What did I learn this week? What work might I have done that no one may be aware of?

Last week, I spent no less than 9 hours updating software in my test lab, another task that I handled quietly because I’ve managed test labs for years and now own a small test lab of my own. I don’t think to talk about it, because it’s “just something” that I do.

So ask yourself: Do you do tasks that no one is aware of? Should you explain more of your work to your team?

Share
Posted in talking to management | No Comments »

Here be dragons

I like maps. I wasn’t sure why maps appealed to me until it dawned on me one day that maps are a form of data visualization. The phrase “here be dragons” was used by mapmakers many years ago in reference to uncharted or unexplored areas. I like the phrase. Maps were marked with dragons and in some cases, other animals were drawn to signify danger or unknown, uncharted territories. I find the concept and the phrase kind of cool in a geeky sort of way. You can read more about this old mapmaker’s phrase here.

I also like SQL. I like being able to access a database and spend time with data. I teach a couple of different SQL classes and one thing I’ve found repeatedly has been people’s intimidation by having to write a join in SQL. It’s amazing how far people will go to avoid the dreaded join – it’s a bit like “here be dragons” – a territory marked with fear and uncertainty.

In learning SQL or taking time to practice SQL, you can stall out when you don’t have a safe environment to play in. You can’t just muck about in a production database and sometimes even the test environment isn’t a good place to explore and learn. When I’m teaching SQL, I’ve found working with a fairly small data set is a good way to practice SQL, especially joins. If the data set is small, you can review the data to confirm that the SQL you wrote retrieved the data you wanted.

I decided to build a small database and to share it with the testing community so testers could have a small safe SQL sandbox to play in. Following is an explanation of where to find the files and how to use them to create the database and load the data.

A short disclaimer: I make no promises or claims to update the database files or to be liable for potential flaws or to be liable for what anyone may run off and chose to do with the files. I’m not offering tech support. If you don’t know how to use a create or insert script, you probably should not jump into this terrain – perhaps your database administrator could help. I recommend reviewing the files to understand conceptually what the scripts do before proceeding.

In a future post, I’ll think about posting joins and queries for practice. In many cases, once people have a small database they can work with, they’re happy to go and play. And our work hopefully includes some element of play, creativity and joy. And as testers, exploring unfamiliar terrain holds an immediate appeal.

In choosing what tables and data to build, I decided (which is similar to what I do in my classes) to reference a few authors and books. Both the authors and the books listed in this little test database, not surprisingly, are five SQL books (and authors) whose work I admire. This test data also answers the question: if I had to buy a SQL book, what would you recommend? So even if you don’t want to create a database, you can review the insert data file and find a short list of great SQL books.

Creating the test SQL sandbox:
There are two files: one file creates the database and the second file inserts data into the database. Go to my website; the files and directions are located at the bottom of my publications page.

I am, as always happy to hear feedback.

Share
Posted in SQL | No Comments »

experiencing a bug as an end user

It’s been a long time since a software bug agitated me – one that I was hit with as a user not a tester. But I’ve had one I’ve been dealing with this past week.

In some ways it’s been interesting to feel like a user. To get whacked unexpectedly with a software bug that impacted my day and took time to resolve. Mostly it’s left me agitated and thinking less of the company.

Blackberry released an upgrade to their software and I took the release. I didn’t notice straightaway that the update stomped out my Google sync settings. Wiped out Google sync entirely, I had to reinstall. And impacted my Gmail, calendar and maps.

I keep my calendar in Google. My calendar is probably the most important, certainly most frequently used software I depend on. It took some time and effort to get things back on track.

I haven’t stopped asking myself – really? RIM didn’t think to test a cell phone software upgrade with Google calendar?

I could perhaps understand if it was some small unheard of company calendar software – but Google calendar. Really?

So a graceful solution might have been a warning message to users – hey, heads up any software you’re using that isn’t ours could be impacted – especially contact and calendar information.

A more graceful solution would be for one large vendor (RIM) to acknowledge what other software their user base is likely to have installed and done some testing.

Once I got through the calendar sync issues, I encountered issues with syncing my gmail. And previous locations were wiped off Google maps too. Obviously I’m a heavy Google user. And obviously RIM doesn’t feel the need to test their software with Google software.

One thing that I expect as a user is for software to play reasonably well with other software. RIM not working with Google software? An upgrade wiping out calendar, Gmail, maps and sync settings is not an upgrade, it’s an inconvenience.

I won’t want to upgrade my Blackberry the next time a release comes out. This is one way laggards get created – experiencing software not working well – this is what leaves people clinging to the old because some applications are tools that we use and not our primary focus of the day.

I think about users who might not have drawn the correlation of an upgrade from one company impacting software from another company – plenty of users would not. And it was more than a day from the upgrade until I noticed the first issue – a long enough time gap for an end user not to draw a correlation. This is all stuff to ponder when I think about end users and their reactions to bugs.

Once I realized one issue with non-Blackberry software, I started checking for other negative impacts. I mentally did not trust my phone software for several days until I tested a few sync settings and could see things working again.

I’m just about over the bug – but it’s been a week – that’s an impact. I had been a pretty happy Blackberry user but this loses major points.

Share
Posted in usability | No Comments »

debriefing alone

I often test alone. But then testing is a rather solitary activity much of the time. So is writing. Not surprising, introverts have a way of finding activities that leave them alone.

When I teach, I talk about using debriefs. I’m frequently surprised at how few people use debriefs.

If you’re unfamiliar with the term debrief , then I’d suggest begin by looking at the basic definition. I like returning to definitions, I find wrapping my head around a core term and definition is a more comfortable way to start learning something. Then expand on from there. James Bach has a great checklist for debriefs, here.

I don’t personally look at debriefs like an interrogation, a word you’ll see come up when you look at its basic definition. Instead, I prefer a more gentle approach. I think of a debrief as a time to be reflective. And I like having lots of time to reflect, I seem to need it.

So people ask me how I debrief if I’m testing alone. After all, debriefing is a joint activity. A conversation with someone else gently (or perhaps not so gently) prodding you with questions can help us realize new things or pay attention to things we may have missed during a testing session.

But you have to work with what you have – not what books or other people espouse about what you’re supposed to do. You have to find your own way. Since I work alone frequently, I’ve had to learn how to talk to myself. I’ve adapted. And yes, I do answer my own questions.

Some things I do have become such built in activities that it’s almost hard to distinguish them and write about them, stuff just is.

Debriefing is one of those activities.

So I’ve spent some time reflecting on what I ask myself, how do I reflect on my testing sessions – what questions do I ask myself to help me reflect, regroup and then go on.

In the quiet of my own mind without having to worry about the ramifications of time estimates altering the project or any other impact my answers might have, I ask myself these questions. And I often ask myself lots of why questions to my own answers because I’ve learned that underneath the why questions – a lot of good information can hide.

  1. Have I skipped anything?
  2. I find that on occasion a new feature will have some complication that I haven’t understood yet and when I’m slow to approach something, it means I have a block somewhere that I need to overcome. So I ask myself, have I skipped past something? Why?

  3. Do I have any hunches?
  4. Often where I suspect there are issues, there are. Sometimes I haven’t found what the issue is or what works “clunky” but my early hunches usually result in bugs. These hunches are hard for me to share with anyone because I might not yet be able to quantify, replicate or prove it. This is where I like my solo debrief sessions, I don’t have to worry about ramifications of my gut thoughts. My thoughts are inklings for me to explore at this point.

  5. Did I observe anything that made me hesitate?
  6. Along the path to testing something, issues pop up. Sometimes I’ll push past a smaller issue to move on, to get to some other state, condition or idea I have. Now might be the time to go back and make sure I’ve tracked down anything that I’ve hesitated over. Did I miss noting down any of those hunches? This is a good time to take the time to write up more notes. I remind myself that my notes can be private so I don’t have to worry about having “silly” ideas.

  7. Where do I feel I need to spend more time?
  8. I like asking myself this question because I use it to force myself to be brief and list. List making can be telling. It often reveals an area I haven’t tested in awhile or an area that I have some hunch. This is another tactic, another question that I prod myself with. And then – I ask myself why?

      Why do I feel I need to spend more time?

    1. Do I have doubts about the functionality working? Have I seen something to make me feel this way? Or have I not seen enough in an area to give me comfort that is working?
    2. Regression. Is this an area that needs some regression testing? Why – what specifically? I realize sometimes by asking myself this – I can specifically identify what I need to regression test.
    3. Need more confirmation. Sometimes I’ll test something and it will work fine. I’ll test and not find an issue and yet for some reason, I haven’t developed a sense that everything is ok. This is a hunch of some sort. There is some permutation or data or something I haven’t seen or tried yet. What, what is it? I prod myself along to see if I can distinctly figure out what feels undone.
  9. If the product were to ship now, what would make me uncomfortable?
  10. I like this question a lot. Not what haven’t I tested, not what work remains – instead this is another way for me to find out my gut feel about what isn’t ready yet either because testing has been light or I don’t have enough belief assurance that something is working.

  11. What feels done?
  12. After thinking about what feels undone, it is a source of comfort to me – to help me from feeling overwhelmed about what remains to become clear about what does feel done. And it is telling when something doesn’t end up on this list and yet it didn’t show up on my list of what was skipped or what hunches I have.

I trust my instincts so I don’t dismiss anything I find when I reflect this way. And I believe that over time, this is a way we can learn to trust our gut, to develop our instincts. I tend to be a pretty reflective person. I need space around activities to think.

With so much information coming at us during the day, when and how can we find our way through information that get shared with us as well as information we gain from our test sessions to know where to go next? Testing well done, is strategic. Strategic thinking requires that we reflect on information gained to plan next steps. So perhaps ask yourself, if you don’t use debriefs, when do you reflect, regroup and potentially redirect or reconfirm what your next testing activities will be – whether for yourself or for someone on your team?

Share
Posted in Uncategorized | No Comments »

A heuristic for regression testing

I’ve been doing a fair amount of regression testing. I gained clarity into how I think through regression testing as I explained my thought process to a client. And I’ve devised a mnemonic: RCRCRC.

Recent: new features, new areas of code are more vulnerable
Core: essential functions must continue to work
Risk: some areas of an application pose more risk
Configuration sensitive: code that’s dependent on environment settings can be vulnerable
Repaired: bug fixes can introduce new issues
Chronic: some areas in an application may be perpetually sensitive to breaking

I’ve previously shied away from creating mnemonics. I guess because I often forget them. How embarrassing, isn’t a mnemonic supposed to help me remember? I haven’t been able to explain my struggle but this post from Jonathan Kohl sums up how I’ve felt and has helped me.

Share
Posted in regression testing | No Comments »

NLP techniques: anchor & swish. What can be applied to software testing?

I’ve missed blogging. I’ve missed writing. Well, writing what I feel like when the mood strikes which I cannot predict – either the topic or the timing which doesn’t work so well for editors. I’ve been on another one of my productivity kicks where I cut out lots of activities, burrow in and produce stuff. Stuff like articles, classes and assorted matters. But today I woke up super early today (super early is before 5am) before 7am is just early. It happens often enough. Sometimes I’m just very awake. I’ll get up thinking I’ll add an hour or two to my day and that will be great because I can get more done (my productivity-obsession runs deep) but as is often the case, that isn’t how I spent the “bonus” time. Instead I found my mind wandering about. Reading and then looking up related concepts and somehow found myself reading about neuro-linguistic programming (NLP) at 5:30am. Things like that happen.

In 2006 when I started blogging, I vowed I would not let my blog became what I ate for breakfast and that my posts would have a WIFFM that was testing focused. So where’s the WIFFM in this?

Here’s one concept: If you never give your mind permission to wander and wonder to learn new things how do you expect to introduce new possibilities to your life or work?

Two of the techniques cited as part of NLP are anchoring and swish. I like this phrase on anchoring that I picked up on Wikipedia: “recalling past resourceful states.” What I find interesting about this is that I have long sensed certain feelings of being very awake and yet calm at times when I believe I am executing my best testing or writing. Perhaps the combination of wakefulness and calmness is just the right blend to achieve an ideal mental flow. A question to ponder: are there techniques I can adopt to get myself in that state more readily?

I want to investigate swish more to see what I can do with my procrastination problem which I’ve been slow to confess to. Swish is a technique to break or reduce bad habits. I wonder if the concept of swish might be applied to software testing – thinking about the concept from a more positive view. When I think about how to push my thinking in different directions, how to move out of one gear and into another – perhaps a swish technique could help.

James Bach talks about focusing and defocusing and that has helped me. Julian Harty has talked about applying DeBono’s six thinking hats and the concept physical representation of a hat has helped me. Mike Kelly who runs IWST(among many other activities) has a workshop coming up in November on focusing while doing exploratory testing. (I want to see if I can make it to that one.) Mike’s also blogged about NLP and so has Alan Richardson. But I’ve needed more or something else at times.

I get impatient with myself and frustrated when I feel the well is empty on one mental pathway and I’m trying to shift gears so that I can find alternate ideas and issues.

There is a precarious balance between giving myself permission to let my mind wander to discover new ideas or how to incorporate ideas (like NLP) into my own use and practice versus falling into the pit of procrastination.

A swish technique might work. I want to investigate these two techniques closer to see what I can learn and how I can fold those ideas into my work. And I wouldn’t have had those new ideas to explore if I wasn’t up super early. But now I have to get going – not physically thankfully but it is time for me to shift gears (swish). Today I have cell phone testing to tackle and I want to see what new ideas I can invent to detect issues (hoping to get into an anchored stated) before a product release launches (so incredibly soon).

Share
Posted in software testing | No Comments »

PNSQC 2009

At PNSQC 2009, I’ll be talking about “Building Alliances.” For a long while, I have avoided discussing assorted topics especially at conferences that might be viewed as “soft” topics. As a software tester without a developer’s background and being raised in small development companies, I didn’t feel I could take the risk of being viewed as “fluffy.” But now some years later, I want to talk about some of the topics that aren’t technical but are just as essential in getting the job done. I want to share ideas about how to build solid working relationships.

I want to talk about ideas on how to build working relationships and ways to collaborate with other people and other teams. I’m fortunate to have had experiences working with some really great people and teams over the years. But people dynamics aren’t always happy path just like software isn’t always functional in the early build stages, so I also want to talk about adversarial relationships and share some stories and ideas on how to re-route and realign relationships. People issues, politics and team dynamics are factors in how well or even whether some products evolve, not to mention how fulfilling or frustrating work time can be.

One of the principles from the context-driven school of testing states: “People, working together, are the most important part of any project’s context.” I want to share ideas for how to make that happen.

Share
Posted in conferences | No Comments »

Storied Careers, a book about storytelling and practitioners

Kathy Hansen, published author and storyteller, has released a new book called: A Storied Career, 40+ Story Practitioners Talk about Applied Storytelling. I’m one of several people Kathy interviewed for her chapter on unexpected applications of storytelling. The book features interviews with people from a variety of professions. Kathy’s book is a good read.

Share
Posted in storytelling | No Comments »

Switch to our mobile site