All posts by Nick Young

Nick is a resourceful and skilled test manager with 18 years of experience in software testing and currently working for a company dedicated to leveraging and extending the COBOL resources already in place in thousands of code shops around the globe. This has provided the opportunity to work on a large number of differing projects – from testing compilers to IDE’s across multiple platforms, to emerging technologies such as web 2.0, Cloud and .NET, through all phases of the development life cycle. Experienced in traditional waterfall development methodologies, as well as more modern development ideologies. Recent experience has included performing scrum master duties in an agile environment and managing the workload of cross-functional on-shore and off-shore development teams. Currently leading a small team devoted to improving and extending the development build and test infrastructure. The opinions and positions expressed on this website are my own and don’t necessarily reflect those of my employer.

The need for testing?

I was just reading an interesting article about the continuing need for testers (link below). If you disregard industries where regulatory issues pretty much define the requirement for testing (Defence, Aviation, Energy for instance) the nature of the role and the day to day activities have definitely changed over the years, with a much greater emphasis on streamlining the development process these days. This inevitably means that changes will always be prevalent throughout any development organisation. Big gains in efficiency can be made through initiatives such as #DevOps and #ContinuousDelivery but the quality of the end product is still the most important consideration. #QA continues to improve product quality by getting involved in the whole process from beginning to end and can act as a stabilising force through these periods of change. And from my own experience, having experienced QA professionals working on software almost never results in a reduction of product quality.

https://blog.gurock.com/do-we-still-need-dedicated-testers/

How to create good bug reports

Many people find it difficult to create a good bug report, so I’ve assembled a few tips to creating clear, concise bug reports that will not be rejected by the development team. Some of them may seem obvious but I’ve seen many bug reports over the years that do not contain the information required to reproduce the problem, so firstly, I’ll start with the basics

  • Before creating the bug report, talk to the developer responsible for the area in question – it could actually be intended behaviour, or that you were simply doing something wrong (in which case consider that there could be a usability bug).
  • Include the name, release, and if appropriate, specific build of the product you are reporting the bug against.
  • Make sure you are assigning the bug to the correct component – if the assignation is incorrect the bug could be delayed or even rejected.
  • Ensure you include the platform, platform version, and information about any third party software that may be applicable (for example, browsers, compilers, linkers).
  • If the bug is being reported as part of an existing regression test suite, include a link to the test case in your test management tool (in the case of a manual test), or source control location (automated tests)

Onto the bug report itself – always be sure to include a short descriptive summary, and then create a full description for how to recreate the problem. Most bug tracking tools demand this in any case. Create a step by step guide to recreating the bug. In the reproduction instructions:

  • Bear in mind that the developer looking at the bug may not be the original coder.
  • Also bear in mind that in some cases (particularly for low severity bugs)  it may be some weeks or months until a developer is able to prioritise and fix your bug.
  • The more relevant information you can include in the RPI, the more likely it is that the issue will be fixed.
  • Clearly state what the issue is and what the expected resolution is. Do not include information irrelevant to the RPI.
  • If there is more than one issue, create a separate bug report for each (even if they are related). Otherwise it’s possible one issue will be fixed and the other forgotten.
  • Identify and state the severity and impact of the issue. This may involve the developer who can suggest a workaround. Any workaround suggested may reduce the impact of the issue and therefore the severity.
  • Consider using screenshots and videos to demonstrate the issue. There are various tools available to do this, such as Wink and Jing.  Windows snipping tool (available from Windows Vista onwards) is useful for capturing a section of the screen to your clipboard. Windows problem recorder can record a series of steps and create an html file containing screenshots. If you are using automated test tools, such as @Borland SilkTest, you can automatically create screenshots in case of failing conditions (See here). When the developer is diagnosing the issue this can be vital in helping them identify the root cause.

 

What will happen in 100 years time?

There was a recent news article on the internet that discussed 100 year predictions made by the American civil engineer John Elfreth Watkins. Having read the interesting ideas he had that have come true, I thought I’d have a few guesses at what’s going to happen in another 100 years time.

1)      We will have solved the energy crisis – a combination of improved safety and management of nuclear waste, new technologies such as fusion, beamed microwave power transmission, hydrogen power and vast solar arrays will provide all our energy needs as older methods of generating power are made redundant.

2)      However, we will have massive infrastructure problems as cities become gridlocked, buildings get taller, and countryside is concreted over to cope with housing demand. We will probably have built cities in the sea.

3)      We will have a colony on the moon, and have travelled to Mars. The colony is likely to be mostly scientists rather than families.

4)      We will have discovered evidence of life on another planet, although probably only microscopic.

5)      Global population will be declining, having peaked at over 12 billion. Demands on our food networks will have forced us to farm the oceans more intensively.

6)      We will have discovered how to use matter transport, although it will not be commercially viable or particularly safe.

7)      There will have been at least one huge natural disaster, possibly a super volcano, killing tens if not hundreds of thousands of people and causing global climate cooling.

8)      Computing power will have increased exponentially. Computers will write their own programs as needed. Very few people will know how the technology inside future computers works as the computers will learn how to improve and manufacture new parts for themselves.

9)      The global influence of the middle-east will  not be diminished as oil resources become scarce. Deserts will be used as huge solar arrays, and energy produced will be sold to other countries.

10)   Computer gaming will have advanced hugely – it is unlikely however that we will view those games on television sets, which will be obsolete. Instead, we will wear a headset that allows us to control the game via mind control, and the images produced by the game will be transmitted directly to the brain.

Any other ideas?

Minced Beef Casserole

One of the things I’ve noticed about IT types over the years, is that people that work in the software development industry quite often have hobbies outside of work that are quite creative. Whether they are musicians or they do woodwork, gardening or something else, it seems hobbies that involve creating something with their hands are quite popular. I attribute this in part to the fact that creating software doesn’t actually create a tangible, tactile item at the end of development that you can hold in your hands and proudly state “I made that”.

I’m no exception to this, and one of my particular favourite hobbies is cookery. I found a version of this particular recipe on the internet. After adapting it to my needs and the foodstuffs in our cupboards, I came up with this recipe:

Ingredients

450g minced beef
2 large potatoes, cut into slices
1 large onion (diced)
2 carrots (diced)
1 tbsp tomato puree and 1 tbsp ketchup, or 2 tbsp ketchup
Worcestershire sauce
A few knobs of butter
Salt and pepper

Pre-heat the oven to 180c/350F.

Peel and slice the potatoes, but not too thinly, about half a centimetre thick. Put them in a saucepan with some water, bring to the boil and simmer for about 5 minutes. While they’re simmering peel and chop the onion and the carrots into small pieces and set aside. When the potatoes are done, drain them and set them aside too.

Brown the mince, cooking it on a high heat and set it aside.

Cook the onion and carrots for about 5 minutes (until the onion is soft, but before it burns) in the same pan, this time on a low heat, then add the whole thing back together.

Having re-added the meat, add a dash of  mustard, tomatoe puree and/or ketchup, a liberal splash of Worcestershire sauce, salt and pepper. Fry it for a couple more minutes, stirring well so that the flavour is evenly distributed throughout the meat.

Put the meat mixture into the oven proof casserole dish and top with the sliced potato, overlapping so that it’s evenly covered. Sprinkle with a pinch of salt and dot it evenly with butter. You don’t need loads, just enough to moisten the potato. However, do make sure the butter covers all the potatoes.

Put in the oven for about 30 minutes, or until the top of the potatoes has started to turn brown. If you feel like it, serve up with salad or you can just serve up by itself.

Logging onto a machine not on a domain

I discovered a neat trick today that was so obvious I can’t believe I haven’t ever tried it before. When you try to mount a network share from Windows Explorer, the operating system has a tendency to assume that the machine is operating under the same domain as your machine, and tries to log on using your current username/password combo.

This is all well and good, however if you are attempting to log onto a machine that is not a part of the same domain (or part of a domain at all!) you get a dialog box popup similar to this:

Network Share login dialog
Network share login dialog

Notice that the dialog is assuming I want to login via my corporate domain. I can specify an alternate login ID via the username entry, something I have done regularly for many years!:

Login with an alternate domain ID
Specify an alternate domain for login

Here’s the bit that I’ve never thought of doing before. It is possible I may want to log into a machine that isn’t on any domain (in a workgroup for instance). Doing this requires logging in via a local username on the machine. When I’ve needed to do this I’ve always reverted back to my favourite dos prompt and created a ‘net use’ for the share. It had never occurred to me that I can use a ‘\’ at the start of my username login – this removes the Domain field and allows me to enter the local user and password for the machine.

Logging in as a local user on a non-domain machine

Thanks to Paul Kelly for doing this in front of me so that I realised this is possible!

 

Mounting a drive as a directory

Many people may know Windows has a subst.exe command which allows you to temporarily substitute a folder on your computer for another drive letter.

Windows 7 (may be available on other operating systems too, it’s probably alway been there but I’ve not noticed it before!) has an additional interesting feature that lets you map a complete hard drive to a virtual folder on another drive. Assuming you have two drives in your computer, To enable this, first go to Control Panel > System and Security > Create and format Disk Partitions. This loads up the disk management console:

Disk Management Console

From here, right click on the drive you want to mount as a virtual directory, and select ‘Change Drive letter and paths”:

Right-Click menu

To mount a partition as a virtual directory first the existing drive assignment must be removed. Click on the existing drive letter and select the Remove button. Assuming you’ve read the warning about removing a drive letter assignment and clicked yes to remove, enter the drive letter assignment menu again, and this time select the ‘Add’ button. (Tip: you must create a directory first, click the New Folder button under the Browse for directory dialog to create one.)

Assigning a directory

Click ok and open Windows explorer. It is now possible to see this directory as a linked folder:

This is especially useful to extend the space on an existing machine while not requiring operating system upgrades, re-installs and so on.

Installing Samba – the most minimalist install possible!

Samba makes it easier to access your files from Windows and other operating systems. It can also be very complicated to install and configure! As with most things on Linux there are several ways of doing this. A Samba client is installed by default with Redhat. However to allow a Windows machine to connect to your Redhat shares a Samba Server is required.

A binary distribution for redhat is available that makes it much easier to install and configure. You can download this from http://www.enterprisesamba.com. A direct link for the redhat version is http://ftp.sernet.de/pub/samba/3.5/rhel/5/i386

Like most software on Linux, the piece of software you want to install (Samba Server) depends on some other modules that are not installed. To get Samba installed you must first install these other modules.
In this case, fortunately they are all available at the same location. Save the
required files to your desktop before double clicking on them in turn to
install the rpm. You can ignore warnings about unsigned RPM’s and install
anyway.

In this configuration, the modules you must download and install (in order) are:

            libwbclient0-3.5.11-44.el5.i386.rpm

libsmbclient0-3.5.11-44.el5.i386.rpm

samba3-client-3.5.11-44.el5.i386.rpm

samba3-3.5.11-44.el5.i386.rpm

This completes the installation of Samba. The next step is to configure it so that it can be used. Using a root user terminal window, navigate to /etc/samba.

Using gedit, modify the smb.conf file. This is the global configuration file for Samba. There are a bewildering number of options here that may or may not be relevant to a particular installation. Refer to the Samba documentation for more details. In this example a simple share will be created. Enter the data into the file listed in image smb.conf.

Contents of smb.conf

Save and close the editor.

The next step is to add a user to the samba database.
The login and samba user databases are different, and so alternative logins can
be used.  However, to keep things simple
the same username and password will be added into the Samba database.

Samba password entry

At this point Samba is installed and configured but is
still not running. It’s best to ensure that Samba is started on bootup – that
way you don’t have to start it every time you start the machine.

You can do this by running a command ‘chkconfig’ at the terminal prompt:

chkconfig configuration

Restarting the virtual machine will now start the Samba
service. However, if you want to start it immediately you can do this by issuing the command manually. You can also check that it’s running afterwards by using the ‘ps’ command:

Checking if a process is running with the 'ps' command

That’s it, Samba is installed configured and running!

You can check your installation is available by finding
your ip adress and connecting to it from your Windows machine. To do this, first find out your ip address by running the command /sbin/ifconfig

Now, open Windows explorer on your desktop and navigate to \\<ipaddress> e.g \\10.120.10.10. When prompted for username and password enter the same username and password as you entered when adding them to the Samba
database earlier.

Entering samba user password

Now connected, you can browse create and delete directories in your home directory.

Installing Linux

Brought up on Windows, most people think of Linux as an alien platform. As such, they tend to think it must be really difficult to work with Linux. Over some forthcoming posts, I will show just how easy it can be to install and setup Linux. That’s not to say that there aren’t some complicated configuration options available – indeed these options can be very powerful, but there are complicated configuration options available on Windows too! Here I am going through a basic OS configuration and will enable a couple of other things as well to show how straight forward it can be to administer your own Linux machine. I will use Redhat Enterprise for this demo, but the same principles apply whatever your Linux distribution. I am using a virtual machine technology from Oracle called Virtualbox for this demo. As a tester, this means I can set up multiple machine configurations and environments that suit my needs accordingly.

VirtualBox is an operating system virtualisation program that allows you to emulate a full computer system on your desktop.  There are other virtualisation technologies available, including VMWare and Hyper-V, and the process is quite similar with all of these. Virtual Disks created in VirtualBox can be imported into any of these programs. To get started, download the latest version and install it.  Once installed, start the program from the Start menu.

In our example we will install Redhat from an .iso image that we have previously obtained.

      Create a new Virtual Machine

From the front end of Virtualbox, click the ‘New’ button. This will start the new
virtual machine wizard. Select Next, then enter the OS type and the name you want to call the machine. Be sure to select 64 bit if you have a 64 bit OS image/CD.

Select the memory that the Virtual machine will use. 512mb is probably sufficient for a basic install of Linux, but you can give the machine more memory if you wish – it will certainly help performance!

VirtualBox Settings

The default options for the ‘add hard disk’ wizard should be fine. Click Next after ensuring ‘Create new hard disk’ is selected. In this Wizard, select the default options. The only thing you may wish to change is the size of the hard disk. If you have the space it is recommended to create a 30-40 gb drive as this will give your new system room to grow. Click ‘ Finish’ to close the wizard.

One more change you should make is in the networking settings. Select ‘Settings’ for the Virtual Machine and find the networking section. Change the adapter type from ‘NAT’ to ‘Bridged’.
This will ensure you can get a real IP address from your DHCP server.

Network Options

   Installing Linux (Redhat)

Select the Machine you have just created and press the ‘Start’ button on the toolbar. This will start the ‘first run’ wizard.

On the installation media page select the browse button and navigate to your ISO image. If you have a DVD image you can select the drive here instead.

Installation Media

Close the wizard by selecting Next, then Finish. This will start the machine, booting from the CD image.

Once the installer starts, press Enter to begin the installation. You can generally skip the media test section and proceed straight to the installation section. To do this press tab until ‘Skip’ is highlighted and press Enter.

Once the graphical mode installer starts, you can mostly go straight through the wizard clicking Next – the menus are fairly self-explanatory.

If you do not have a Redhat installation number to hand, you can select skip and enter it later.

You will see a message about unreadable data – this is because the virtual hard disk has not yet been formatted. Clicking ‘Yes’ will do this for you.

Preparing the virtual hard drive

For the network settings page, you can leave all the options at their default and click next.

The next page asks for a root password. Enter something you can remember. This is equivalent to adding a user to the system administrators group on Windows.

When the option is offered to include extra software for Software development, ensure you tick the option before clicking next.

Optional but useful stuff!

Go and make a cup of your favourite beverage (tea/coffee/gin etc) – the system
will then install, taking a while so an ideal opportunity to catch up on some reading or make some lunch. After a little while you should see a screen which signifies that you have finished installing the operating system.

Installation Complete!

Once the system has rebooted there are just a couple more settings and personal preferences still to complete.  You can mostly just click ‘Next’, but you may wish to either disable the firewall on the appropriate page if you are on an internal network. If you keep the firewall and SeLinux enabled, you will need to open any ports you intend to use – and be sure to add Samba as a trusted service.

When you advance to the ‘Create User’ page, be sure to add a user:

That’s it! – once the wizard is finished you can log in as the user you just created.

Log in as the user you just created