Wedding

21 09 2009

I am now a married man. I married my darling wife, Jenna a few weeks ago and went off on a well-deserved honeymoon.

I’ll look to putting some pictures up on the Jenna And I page as and when I can.

Thanks to all our families, friends and other supporters for their love and support.

Kind Regards
Glenn





Code Camp SA

16 06 2009

Code Camp SA is a weekend of .NET. Details are at http://www.codecampsa.com/

Kind Regards

Glenn





Quality Under Stress

12 05 2009

Hey

A few years ago, I would hang out in C++ and C# channels on IRC. I went there to learn from other people’s questions or from my own questions. Sometimes, I could even answer people’s questions. The culture of the channel meant that answers would normally be just enough to set people on the right track rather than postulating one’s own knowledge. So for instance, if someone wanted to know what the name of the function first called is, we’d say, take a look at “main” rather than giving them the whole rundown; of course, my illustration is for C++.

One thing I’d often find is people coming in tired and stressed. Very often, people would beg for answers saying, “Please help me, I’ve been working on this problem for 6 hours! It’s 2 AM and I need to get to sleep!” The answers were consistent from the IRC channel: “No. Go to sleep and work on it in the morning. If you still can’t get it working then we’ll help you.” This was the best possible answer the channel could ever provide; people eventually got the message and went to bed. Invariably, the next day the same people would come back in to the IRC channel and say, “Guess what! This morning I figured it out in 20 minutes!”

The interesting thing in all of this is that somehow, the channel knew people would find the solution themselves the next morning. You see, they understood a fundimental rule in software development:

People solve more problems and create less new problems when they get their sleep and feel comfortable with their workload.

This is an important thing to remember: software is an intellectual pursuit. Without sleep and rest, people will not perform anywhere near as well as what they would normally!

So, how does this affect quality? Well, as you would imagine, you get more defects, more defects are intermittant, and the general quality of builds goes down.

When testing, we need to be aware of these factors. They have an impact on the quality we should expect.

Kind Regards
Glenn





Automated Testing

1 04 2009

Hey there

Lately, I’ve been looking at automated testing. I went through a whole gaggle of tools, mostly FOS (Free/Open Source). Automated testing has been something that interested me for a while.

The project I’m currently working on involves an AJAX web app written in .NET 3.5. As such, I’ve had to contend with the difficulties of background activity after the page has loaded. Today, I want to share with you some of the lessons I’ve learned.

Firstly, you should know I’ve been working a lot on a tool called Selenium IDE. It’s a plugin for FireFox and is free and open source. You can take a look at it here if you’d like.

Hunting Wascally Controls

AJAX introduces a whole new fun. When your page loads, depending on the control, it will be displayed and available immediately or later as things are downloaded and executed in the background. Other times, it may be that a control is unhidden because of a user-selection, or because of some other event. In general, the page loading has no immediate bairing on the availability and visibility of controls! Yay!

Don’t get depressed. Selenium has many commands. Where a command acts on a control, there is likely a “waitFor” command available as well. So, for instance, if I trigger an event, I can “waitForElementPresent” before I inspect it, or “waitForTextPresent”. These commands are specifically intended for an AJAX web app.

Held Up In Traffic

Often, AJAX web apps download so many things in the background, executing scripts and so forth, that the page has not finished loading in the background. Sometimes, this just means a faster user experience not having to wait for things to download but other times it can mean being held up by background traffic.

Selenium often uses the “clickAndWait” command when navigating. This command is generally intended to click, i.e. instigate the navigation, and then wait for the page to load. Selenium, however, is not intending to wait forever and by default will only wait 30 seconds. With the project I’m looking at especially, 30 seconds is no where near enough time. As such, I use the “setTimeout” command to increase the duration that Selenium will wait for; I set it at 5 minutes or 300000 milliseconds when passed to the command. This tells Selenium that things will likely take longer and you get less timeouts.

Starting From The Beginning

Another thing I’ve learned is to always assume the script is not starting in the right place within the application or website. As such, I always have the first few steps navigate back to the beginning or starting point for all scripts. This means I don’t have to worry about where one script ends ready for the next script.

Absolutely!

The last point I’d like to share is to always use an absolute URL for the “open” command. The “open” command simply sends the browser to the correct location to begin testing. By using an absolute URL, it means I can just open a browser window and hit Start. Even if the browser is displaying the Quality in Software blog, the “open” command will take the browser to the right server ready to begin testing.

A Few More Comments

Just to finish, I’d like to make a few comments as to why I like Selenium IDE. Firstly, it is free and open source. There are a lot of arguments both for and against FOS software but the best argument for is that it’s accessible to more people; I like that. The second thing is that it uses a real browser to perform the testing; none of this pretend stuff where it simulates accessing the website or uses its own rendering engine. Although its recording is confined to FireFox, it is possible to execute using all the popular browsers. That makes sense since it means testing the scripting and functionality on the platforms they will be deployed to!

Anyway, I’ll leave it at that. Let me know of your experiences with Selenium or with automated testing in general.

Kind Regards
Glenn





Update

18 03 2009

Hey

I realise I haven’t blogged much recently; not surprising really. Lately I’ve been working very hard as test lead on a project here at DWS. This has left me without much time to blog or pretty much have a life; still, I’ve managed to continue planning my up-coming wedding and building a new house! I’ve had lots of ideas for Quality in Software, too.

Coming soon, I’ll be introducing a new series called Q-Ticks. These feature posts will contain tips and hints on how to get the most quality out of your projects.

Other things I’m looking towards are getting in to my study for the ISTQB (International Software Testing Quality Board) certification, blogging more about some of the basic principles of testing, and continuing on with my plan for Quality in Software this year.

Currently, Quality in Software gets its traffic from search queries and word of mouth. This year I’ll be making this site more publicly known. Some ways I’m considering are publishing on a blog listing web site as well as being a guest blogger on other sites.

Kind Regards
Glenn





The Conference

18 03 2009

Hey

Earlier this year, I was away for a Christian conference. A regular of Quality in Software, Scott, asked that I talk some more about it. I don’t want to go in to too much detail as this forum is really focused on software quality but there is always some margin to escape that, so here goes…

I don’t know if you’ve ever been to a Christian conference before. They are essentially opportunities for people around the nation and beyond to learn and mingle.

The conference was about being the change within the community. Focusing on immersions and lectures, it sought to give delegates a good idea of how people struggle around the world; it was intended delegates would take the story back home with them.

I personally didn’t get a lot out of it. I wanted to attend the conference so that I would have a better understanding of some of the struggles people face in the world and a better understanding of how the Bible was understood back when it was written; I didn’t feel I came away with either of those. What I did get out of it was a better understanding of myself and who I am. I think that is of some value to me.

Kind Regards
Glenn





Self Expression

9 02 2009

Hi

I was just watching a Channel 9 session about Open Space, an idea where attendees to a conference come together to discuss topics they find interesting. The thing about this is that it’s about the audience providing the content rather than the key speakers and that means the audience get to express their selves.

It reminds me of how important it is to people to have an avenue of self expression. Whether it is the colours we wear, the music we listen to, or what we say, pretty much every part of our lives is impacted by this almost primal desire to express ourselves. The same is true within software.

In software, many people are influenced. Whether it be the development team, the business people who fund it, the customer, or the end user. Hey, even the people who have nothing to do with the software but are affected by the business processes the software supports, everyone is affected in some way by software. But this is where these two ideas come together.

How are people expressing themselves through this software? Thinking about how people will express themselves while using the software is so very helpful in making great software. Why? Because it allows people to do things their way, to demonstrate their understanding, and to allow others to know who they are.

How does your software allow your customers to express themselves? Does your software allow your company and the people within it to express themselves? Human beings are relational and expressive. Keep this in mind when designing your next user experience.

Kind Regards
Glenn





Test Case Prose

19 01 2009

Hey readers

I haven’t blogged much recently. With Christmas, a week long break and my very busy work schedule, it’s understandable why I haven’t had much to say of late.

Today, I have an interesting situation. I’ve been in this situation before but it’s important yet again so I thought I’d share.

Normally, test cases are written to be reproducible, unambiguous, and properly cover the appropriate requirements. All fair enough. Today, I’m looking at branching.

What’s branching? Well, it’s a word that I just decided well describes where test cases explore different execution paths from the same point.

Here’s an example of what I’m talking about. If for instance, you want to test functionality to save a record when the window is closed. Say your application displays this record as a popup window and has both a Close button on the canvas and a X button in the top-right corner. Branching would be to test for both the Close button and the X button.

So, now you know what I’m talking about, let me put the problem to you. How do you feel about branching inside a test case? What’s more, the branching is at the discretion of the tester? This is the issue that is facing me again today.

Here’s the instructions for the step exercising the scenario I put above…

Close the window using either the Close button or the X button

This is what I’m facing as part of a review. I did look on Google for an answer to this but after little success, I thought I’d talk to all of you.

For my part, I have always felt this discretionary branching within a test case fails the reproducible requirement of every test case, so I always avoid it. Tell me what you think, leave a comment and we can have a discussion or use the poll below.

I look forward to hearing from you!

Kind Regards
Glenn





Code

18 12 2008

Well, lately, I’ve been developing. One of the things I enjoy about being in a consultancy is that I don’t have to do just one role.

Of late, my work has found me doing all sorts of things. At one stage, I was contributing to a test spreadsheet that is used to calculate given figures; and who says you don’t need Calculus when you leave school! I’ve also been using a scripting language called Jelly.

All this work has kept me very busy, hence the lack of posts. I’m still around but I don’t have as much time as I once did.

So, Christmas is coming; I won’t have any holidays over the break. I do have a conference I’m going to in early January that I have time off for but it’ll be pretty full-on; i.e., not a break!

So, with the new year, what will happen within the Quality In Software blog?

  • Investigations in to quality topics
  • More on test cases, including examples and approaches for SharePoint, UAT, as well as System Testing and Performance Testing
  • More on software patterns, including examples and detailed descriptions

Also next year is the year I get married to my sweetheart Jenna!

Next year will be big for me and for Quality In Software.

Stay tuned!

Kind Regards
Glenn





Scope

4 11 2008

Hey

One thing important in software is scope. Scope can be the difference between success and failure in some circumstances. Often though, scope can be a little confusing when testing.

In software, we often have two sources of expectations. The first is the explicit requirements as documented. The second is the implicit understanding of usability that we have learned throughout life. Sometimes, these two sources can compete and that’s when decisions need to be made. Today, I want to discuss how I approach navigating this stretch of water.

Scope is defined by the requirements of the software product; that’s a given. Anything outside of those requirements is outside of scope: however, much of the time, requirements are deliberately or otherwise written in such a way as to provide room for our experiences to shape the usability of the product. Herein lies the line between scope creep and usability. Often, these are the little things that would make requirements documents too long if all were documented.

We need to return to the first note we discussed: scope is defined by the explicit requirements of the product. This is the first test as to whether it is in scope or not. Really, there is anything to discuss on this point. If a customer pays 1 million googaflops for an application with red polka dots, then the client gets red polka dots; end of story! So if the requirements say the product behaves in a certain way, that’s the way it must work.

The next thing to consider is whether it is whether there is industry convention or standard that everyone else conforms to. This means you’re applying familiarity to the product as a method of usability. This is the second test.

Now, if you don’t find yourself being motivated by either of those two above tests, you probably are compelled only by your personal preference and it’s not likely to be what the client wants. This is important. We can sometimes feel like we have a vested interest because of how many hours we spend with these products but really, it’s up to the client.

So, next time you find yourself at a loss for what you should do, just think about these two rules: is it in the spec and is it convention. If your answer is No to both of these, then it’s out of scope.

Kind Regards
Glenn