Jun 6th, 2008
How to Quickly Test Your Software Before Final Release
This is a short and simple plan for quick testing final release of your software application before making it public. Just not to overlook something trivial but very important.
Texts
Spelling: Check all text labels, menu items, hints and messages for typos.
Version: If you don’t increment your version or build number automatically during compilation then don’t forget to change it manually before final compilation.
Copyright: Check if the copyright year is the same as the current year.
User Interface (GUI) appearance
Large fonts: Test your application with Large Fonts (120 DPI) set in Windows display settings. Are all controls properly aligned and visible?
Different screen resolutions: Try your software under different screen resolution. Start with 800×600.
Positions: Check if all controls on your forms are positioned properly.
Icons: Test your application icon in all common sizes and color depths: 16×16, 32×32, … 16 colors, high colors, …. Does it look clear and smooth?
Basic operations
Keyboard support: Many people prefer keyboard to mouse. Is your application keyboard-friendly?
Tab order: Recheck the tab order of your controls. You may break the right sequence during GUI redesign.
Hot-keys: Are all common hot-keys supported?
Hot-keys activity: If some operations in menu or toolbar are disabled, are the corresponding hot-keys disabled also?
Double clicks in lists: In some forms, if you ask users to select a list item then check if double click works like single click+OK.
Data entry and storage
Editable drop downs: If you ask users to select a predefined value from a drop down list (combo box) and you allow only options from that list then you must check if the drop down’s edit box is read only.
Spin box and sliders limits and steps: Recheck all spin controls and sliders for valid minimum, maximum, and increment step values.
Spin box arrows: Verify if Up arrow button in spin box increases the value and Down arrow button decreases it, not vice versa.
Data type mismatch control: Check what happens if you enter unexpected values in data input fields, for example, a character string in a numeric field or a negative number in a field for positive numbers only.
Long strings: Enter very long strings in data fields and test how your software will handle it.
Empty strings: What will happen if user leaves some important fields unfilled? Will your program continue working correctly?
Clipboard operations: Does pasting objects of different media types from clipboard work properly in all fields? What happens if an image or rich formatted text is pasted in edit field?
Weird characters: Test if your software works and data remains valid if there are unexpected characters in input strings or files, e.g. new line character, tab, diacritic symbol, copyright sign, non printable characters, etc…?
Unicode and multi-byte languages support: Will non-English people be able to enter data in national languages and encoding: Arabic, Hebrew, Hieroglyphs, Cyrillic, Greek, …?
Local formats: Check if your software works correctly if user has different date, time, currency or numeric format: e.g. dd-MMM-YYYY instead of mm/dd/yy, or nn,nnn.nn instead of nnnnn.nn.
Debug options
Debug mode: If you develop in MS Visual Studio, for example, then don’t forget to turn off the Debug mode before final compilation and test your application built in Release mode. Some bugs, like memory buffers overrun, may appear only in Release mode.
Debug logs and dumps: Don’t forget to turn off all debug log or trace files.
Debug messages and alerts: The same here. Turn off all debug message boxes and alerts.
Foo data: Change all “foo”, “John Smith”, “Preved medved”, or “Loren ipsum” data to blank or actual values.
If you have ideas about other important points to check then post them as comments please.


One of the purposes of continuous software improvement is finding and eliminating the barriers that get in the way of users when they’re working with your software. Let’s name the most typical barriers that make your software less user friendly.