Showing posts with label Test Data. Show all posts
Showing posts with label Test Data. Show all posts

June 23, 2011

When You A Need Bunch Of Test Email Addresses

Sometimes, you need a bunch of email addresses for testing purposes.  Perhaps you need to test a login or registration page, or perhaps your application sends emails to many different people.

You could create many real email accounts for your tests.  But sometimes there's an easier way. Sometimes you can use a single email account instead, and just use variants of a single email address.

In many email systems, anything after the plus sign in the local part of the email address is ignored.  So, all of these are delivered to the same mailbox:
  • foo.bar@gmail.com
  • foo.bar+123@gmail.com
  • foo.bar+234@gmail.com
  • foo.bar+test1@gmail.com
  • foo.bar+regression.test.11.29.2011@gmail.com
In gmail, periods within your gmail address are ignored.  So, all of these are delivered to the same mailbox:
  • foobar@gmail.com
  • foo.bar@gmail.com
  • f.o.o.b.a.r@gmail.com
Note that consecutive periods like foo..bar@gmail.com are fine for gmail, but are generally considered invalid and hence undeliverable by most email sending systems. copyrightjoestrazzere

Only in gmail, both of these are delivered to the same address:
  • foo.bar@gmail.com
  • foo.bar@googlemail.com
These methods will usually allow you to register many times on your system-under-test with emails that will be considered different, but will actually deliver to the same account.  And you can usually filter these incoming emails to keep them separate from your other emails if needed.

see also:


This article originally appeared in my blog: All Things Quality
My name is Joe Strazzere and I'm currently a Director of Quality Assurance.
I like to lead, to test, and occasionally to write about leading and testing.
Find me at http://strazzere.blogspot.com/.

May 25, 2010

General Input Tests for URL Characters



Sometimes, you need to accept data, then use it as part of a URL.  Your test data should probably include both valid and invalid characters.


From RFC 1738:
"Only alphanumerics [0-9a-zA-Z], the special characters $-_.+!*'(), and reserved characters used for their reserved purposes may be used unencoded within a URL."

Here are some routine tests to try for a URL value.  Decide which of the following are relevant for your input field and use them.  If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script.

Unreserved Characters
(Normally don't need to encode these characters)

ASCII Characters A-Z, a-z, 0-9
$ Dollar
- Dash
_ Underscore
. Period
! Exclamation
* Asterisk
' Single quote
( Left parenthesis
) Right parenthesis
, Comma


Reserved Characters
(Should generally not be included as part a query parameter without being encoded)

Semi colon
/ Forward slash 
? Question mark
: Colon
@ At symbol
= Equals
& Ampersand
+ Plus


Unsafe Characters
(Gateways are known to sometimes modify these characters, so they should be encoded)

{ Left curly brace
} Right curly brace
| Pipe
\ Backslash
^ Caret
~ Tilde
[ Left square bracket
] Right square bracket
` Grave accent

Excluded Characters
(Should always be encoded)

all ASCII control characters
the space character
< Less than
> Greater than
# Pound (hash) sign
% Percent
" Double quotes


I'm Joe Strazzere and I'm currently a Director of Quality Assurance.
I like to lead, to test, and occasionally to write about leading and testing.

February 21, 2009

WinTask - Test Data Generator



This is a handy collection of WinTask test data generation functions



'
' Test Data Generator
'
' Author: Joe Strazzere

Dim FirstM$(1000)
Dim FirstF$(1000)
Dim FirstA$(1000)
Dim LastA$(1000)
Dim States$(1000)
Dim StateAs$(1000)
Dim Provinces$(1000)
Dim Cities$(1000)
Dim Lipsum$(1000)

' Returns a random string based on the picture supplied.
'
' This can be useful for generating large amounts of psuedo-random data for testing.
'
' picture is a string with special characters interpreted as follows:
'
' 9 = generate a random number (0-9) in its place
' A = generate a random alphabetic character (A-Z, a-z) in its place
' U = generate a random uppercase alphabetic character (A-Z) in its place
' L = generate a random lowercase alphabetic character (a-z) in its place
' N = generate a random alphanumeric character (A-Z, a-z, 0-9) in its place
' X = generate any character in its place
' = an escape character.  Anything following this character is placed in the result string,
'     even if it is a picture character.  Two backslashes () cause a single backslash to be
'     placed into the result string.
' any other character is simply copied into the result string
Function RandStr$(test$)
    Local i
    Local a
    Local new$
    Local work$
    work$=""
    i=1
    While i<= len(test$)
        Select Case Mid$(test$,i,1)
            Case ""
                 i=i+1
                 new$=Mid$(test$,i,1)
            Case "9"
                 new$=str$(Random(9))
            Case "X"
                 new$=Chr$(Random(93)+33)
            Case "U"
                 new$=Chr$(Random(25)+65)
            Case "L"
                 new$=Chr$(Random(25)+97)
            Case "A"
                 Repeat
                     a = Random(57)+65
                 Until a < 91 Or a >96
                 new$=Chr$(a)
            Case "N"
                 Repeat
                     a = Random(74)+48
                 Until a < 58 Or (a >64 And a <91) Or a > 96
                 new$=Chr$(a)
            Case Else
                 new$=Mid$(test$,i,1)
        EndSelect
        work$=work$+new$
        i=i+1
    Wend
    RandStr$=work$
EndFunction

'Zip Code
Function ZipCode$()
    ZipCode$=RandStr$("99999")
EndFunction

'Zip+4 Code
Function ZipPlus4$()
    ZipPlus4$=RandStr$("99999-9999")
EndFunction

'Canadian Postal Code
Function CAPostalCode$()
    CAPostalCode$=RandStr$("U9U 9U9")
EndFunction

'Social Security Number
Function SocSec$()
    SocSec$=RandStr$("999-99-9999")
EndFunction

'Phone Number
Function Phone$()
    Phone$=RandStr$("(999) 999-9999")
EndFunction

'Random Date - between two dates
Function RandomDate$(FromDate$,ToDate$)
    Local days
    Local rand
    days=DateBetween("d",FromDate$,ToDate$)
    rand=Random(Days)
    RandomDate$=DateToDate$("d",rand,FromDate$)
EndFunction

'Male First Name
Function MaleFirst$()
    MaleFirst$=FirstM$(Random(FirstMCount))
EndFunction

'Female First Name
Function FemaleFirst$()
    FemaleFirst$=FirstF$(Random(FirstFCount))
EndFunction

'First Name (Male or Female)
Function FirstName$()
    FirstName$=FirstA$(Random(FirstACount))
EndFunction

'Last Name
Function LastName$()
    LastName$=LastA$(Random(LastACount))
EndFunction

'First then Last name
Function FirstLastName$()
    FirstLastName$=FirstA$(Random(FirstACount))+" "+LastA$(Random(LastACount))
EndFunction

'First, Middle Initial, Last name
Function FirstMLastName$()
    FirstMLastName$=FirstA$(Random(FirstACount))+" "+RandStr$("U")+". "+LastA$(Random(LastACount))
EndFunction

'Last, comma, First name
Function LastFirstName$()
    LastFirstName$=LastA$(Random(LastACount))+", "+FirstA$(Random(FirstACount))
EndFunction

'State Name
Function StateName$()
    StateName$=States$(Random(StateCount))
EndFunction

'State Abbreviation
Function StateAbbr$()
    StateAbbr$=StateAs$(Random(StateACount))
EndFunction

'Canadian Province Name
Function ProvinceName$()
    ProvinceName$=Provinces$(Random(ProvinceCount))
EndFunction

'City Name
Function CityName$()
    CityName$=Cities$(Random(CityCount))
EndFunction

'Lorem Ipsum Word
Function LipsumWord$()
    LipsumWord$=Lipsum$(Random(LipsumCount))
EndFunction

'Lorem Ipsum Sentence - average 14 words in a sentence
Function LipsumSentence$(MaxLen)
    Local sentencelen
    Local sentence$
    Local separator$
    Local i

    sentencelen=Random(MaxLen)+1
    sentence$=""
    i=0

    While i < sentencelen
        If Random(50) < 1 Then
            separator$="; "
        Else
            If Random(10) < 1 Then
                separator$=", "
            Else
                separator$=" "
            EndIf
        EndIf
        sentence$=sentence$+Lipsum$(Random(LipsumCount))+separator$
        i=i+1
    Wend
    ' Capitalize the first letter
    sentence$=Ucase$(Left$(sentence$,1))+Right$(sentence$,(Len(sentence$)-1))
    ' Remove extra whitespace and add a period
    If (Right$(sentence$,2)="; " OR Right$(sentence$,2)=", ")Then
        LipsumSentence$=Left$(sentence$,Len(sentence$)-2)+"."
    Else
        LipsumSentence$=Left$(sentence$,Len(sentence$)-1)+"."   
    EndIf
EndFunction
' You can add or remove names as desired
Male$="Aaron,Barry,Carl,Daniel,Edward,Frank,George,Harold,Ike,Joseph,Kareem,Lawrence,Michael,Nicolas,Oliver,Patrick,Quinton,Richard,Salvatore,Thomas,Umesh,Vincent,William,Xerxes,Yves,Zeus" Female$="Abby,Barbara,Caitlin,Donna,Ellen,Faye,Gail,Hannah,Ilene,Jenna,Kate,Laura,Maggie,Nadine,Odella,Paige,Queenie,Rachael,Samantha,Tamara,Uma,Valerie,Wendy,Xera,Yvonne,Zoe"
Last$="Al-Hussein,Bacon,Carter,Dennis,Edwards,Fowler,Grant,Hadley,Irving,Josephson,Keith,Landon,Michaels,Ng,O'Brien,Paulson,Quigley,Richardson,St. Pierre,Thompson,Unger,Van Kempen,Williamson,Xeronson,Young,Zachary"
' You can add or remove territories as required
State$="Alabama,Alaska,Arkansas,Arizona,California,Colorado,Connecticut,Delaware,District of Columbia,Florida,Georgia,Hawaii,Idaho,Illinois,Indiana,Iowa,Kansas,Kentucky,Louisisana,Maine,Maryland,Massachusetts,Michigan,Minnesota,Mississippi,Missouri,Montana,Nebraska,Nevada,New Hampshire,New Jersey,New Mexico,New York,North Carolina,North Dakota,Ohio,Oklahoma,Oregon,Pennsylvania,Puerto Rico,Rhode Island,South Carolina,South Dakota,Tennessee,Texas,Utah,Vermont,Virginia,Washington,West Virginia,Wisconsin,Wyoming"
StateA$="AK,AL,AR,AZ,CA,CO,CT,DC,DE,FL,GA,HI,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,NH,NJ,NM,NV,NY,OH,OK,OR,PA,PR,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY"
Province$="Alberta,British Columbia,Manitoba,New Brunswick,Newfoundland,Nova Scotia,Northwest Territories,Ontario,Prince Edward Island,Quebec,Saskatchewan,Yukon Territory"
City$="Albany,Boston,Carson City,Denver,East Point,Fairfax,Georgetown,Harts Landing,Indianapolis,Johnstown,Kansas City,Lower Mills,Middletown,North Hills,Oakland,Philadelphia,Quincy,Ridgeview,South Orange,Teaneck,Upsilanti,vienna,West Haven,Xavier,Youngstown,Zanzibar"
LoremIpsum$="lorem,ipsum,dolor,sit,amet,consectetur,adipisicing,elit,sed,do,eiusmod,tempor,incididunt,ut,labore,et,dolore,magna,aliqua,ut,enim,ad,minim,veniam,quis,nostrud,exercitation,ullamco,laboris,nisi,ut,aliquip,ex,ea,commodo,consequat,duis,aute,irure,dolor,in,reprehenderit,in,voluptate,velit,esse,cillum,dolore,eu,fugiat,nulla,pariatur,excepteur,sint,occaecat,cupidatat,non,proident,sunt,in,culpa,qui,officia,deserunt,mollit,anim,id,est,laborum"

FirstMCount=SplitIntoArray(Male$,FirstM$(),",") 'Count of Male first names
FirstFCount=SplitIntoArray(Female$,FirstF$(),",") ' Count of Female first names
FirstACount=SplitIntoArray(Male$+","+Female$,FirstA$(),",")' Count of All first names
LastACount=SplitIntoArray(Last$,LastA$(),",") ' Count of All last names
StateCount=SplitIntoArray(State$,States$(),",") ' Count of All States
StateACount=SplitIntoArray(StateA$,StateAs$(),",") ' Count of All State Abbreviations
ProvinceCount=SplitIntoArray(Province$,Provinces$(),",") ' Count of All Canadian Provinces
CityCount=SplitIntoArray(City$,Cities$(),",") ' Count of All Cities
LipsumCount=SplitIntoArray(LoremIpsum$,Lipsum$(),",") ' Count of All Lorem Ipsum words

'MsgBox(ZipCode$())
'MsgBox(ZipPlus4$())
'MsgBox(CAPostalCode$())
'MsgBox(SocSec$())
'MsgBox(Phone$())
'MsgBox(RandomDate$("01/01/2000", Date$()))
'MsgBox(MaleFirst$())
'MsgBox(FemaleFirst$())
'MsgBox(FirstName$())
'MsgBox(FirstLastName$())
'MsgBox(FirstMLastName$())
'MsgBox(LastFirstName$())
'MsgBox(StateName$())
'MsgBox(StateAbbr$())
'MsgBox(ProvinceName$())
'MsgBox(CityName$())
'MsgBox(LipsumWord$())
'MsgBox(LipsumSentence$(20))

June 13, 2006

Some Strings for Pasting


Often, I want to enter strings into input fields of particular lengths or contents.

I use handy strings like these to copy to the clipboard and paste into the fields:


10 Characters

1234567890
123456789+
1234567.89
12345.6789
$123456.78
$12,345.67
12,345,678
123,456.78

abcdefghi+
abcdefghiX
ABCDEFGHI+
ABCDEFGHIx

Lorem ipsu
WWWWWWWWWZ

*3*5*7*10*

---------+
~!@#$%^&*X



100 Characters

123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789+
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstu+
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuZ

ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTU+
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUz

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore

WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWZ

*3*5*7*9*12*15*18*21*24*27*30*33*36*39*42*45*48*51*54*57*60*63*66*69*72*75*78*81*84*87*90*93*96*100*
---------------------------------------------------------------------------------------------------+

~!@#$%^&*()_+{}|:"<>?`-=[];',./~!@#$%^&*()_+{}|:"<>?`-=[];',./~!@#$%^&*()_+{}|:"<>?`-=[];',./~!@#$%X



1000 Characters

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ac consequat dui. Quisque erat turpis, rhoncus ut imperdiet euismod, iaculis a quam. Quisque malesuada, velit quis viverra gravida, nunc leo tempor arcu, vitae pulvinar sapien dui ut neque. Suspendisse potenti. Vestibulum arcu mauris, varius et egestas ut, fringilla quis lorem. Integer ullamcorper gravida varius. Nam eget mauris justo. Nullam in risus mauris, ac elementum libero. Morbi molestie elit quis tellus tempor in lobortis nibh tempus. Quisque dapibus, dolor facilisis varius bibendum, nunc dui adipiscing leo, eget imperdiet arcu lectus et velit. Nulla cursus dictum elit dapibus laoreet. Nullam sagittis enim id risus eleifend ornare. In porttitor quam ac ante interdum in dictum urna pretium. Aliquam consectetur eleifend erat, sed rhoncus urna condimentum quis. Sed porta rhoncus justo, ut varius arcu pellentesque a. Fusce cursus dolor eu leo iaculis non dapibus erat sodales. Sed quis purus orci. Sed eget mauris amet

*3*5*7*9*12*15*18*21*24*27*30*33*36*39*42*45*48*51*54*57*60*63*66*69*72*75*78*81*84*87*90*93*96*99*103*107*111*115*119*123*127*131*135*139*143*147*151*155*159*163*167*171*175*179*183*187*191*195*199*203*207*211*215*219*223*227*231*235*239*243*247*251*255*259*263*267*271*275*279*283*287*291*295*299*303*307*311*315*319*323*327*331*335*339*343*347*351*355*359*363*367*371*375*379*383*387*391*395*399*403*407*411*415*419*423*427*431*435*439*443*447*451*455*459*463*467*471*475*479*483*487*491*495*499*503*507*511*515*519*523*527*531*535*539*543*547*551*555*559*563*567*571*575*579*583*587*591*595*599*603*607*611*615*619*623*627*631*635*639*643*647*651*655*659*663*667*671*675*679*683*687*691*695*699*703*707*711*715*719*723*727*731*735*739*743*747*751*755*759*763*767*771*775*779*783*787*791*795*799*803*807*811*815*819*823*827*831*835*839*843*847*851*855*859*863*867*871*875*879*883*887*891*895*899*903*907*911*915*919*923*927*931*935*939*943*947*951*955*959*963*967*971*975*979*983*987*991*995*1000*




All Alpha Characters

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ



All Special Characters

~!@#$%^&*()_+{}|:"<>?`-=[];',./



Others

1
12
123
1,234
12,345
123,456
1,234,567
12,345,678
123,456,789
1,234,567,890

1.23
12.34
123.45
1,234.56
12,345.67
123,456.78
1,234,567.89
12,345,678.90

$1.23
$12.34
$123.45
$1,234.56
$12,345.67
$123,456.78
$1,234,567.89
$12,345,678.90

April 15, 2006

General Input Tests for Time Fields

Here are some routine tests to try for a time field.

Decide which of the following are relevant for your input field and use them.
If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script:
  • 00:00:00
  • 00:00:01
  • 01:01:01
  • 11:59:59
  • 12:00:00
  • 12:01:01
  • 23:59:59
  • (now)
  • (1 second ago)
  • (1 second from now)
  • (1 minute ago)
  • (1 mnute from now)
  • (1 hour ago)
  • (1 hour from now)
  • 25:01:01
  • 01:60:01
  • 01:01:60
  • 01:01:61
  • 01::01
  • 01::
  • 01:01:xx
  • 01:xx:01
  • xx:01:01

General Input Tests for Listbox Fields



Here are some routine tests to try for a listbox field.
Decide which of the following are relevant for your input field and use them.

If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script:
  • None selected
  • Top item selected
  • Second item selected
  • Middle item selected
  • Next to bottom item selected
  • Bottom item selected
  • Top and bottom items selected
  • Several adjoining items selected
  • Several non-adjoining items selected
  • All items selected
  • All items except the top item selected
  • All items except the bottom item selected
  • All items except one middle item selected

General Input Tests for Radiobutton Fields



Here are some routine tests to try for a radiobutton field.

Decide which of the following are relevant for your input field and use them.

If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script:
  • On
  • Off
  • (All buttons in a group Off)
  • (One button in a group On)
  • (More than one button in a group On)
  • (One button in a group Off)
  • (All buttons in a group On)

General Input Tests for Checkbox Fields



Here are some routine tests to try for a checkbox field.

Decide which of the following are relevant for your input field and use them.

If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script:
  • Checked
  • Unchecked
  • 3rd State (if applicable)

General Input Tests for Date Fields




Here are some routine tests to try for a date field.

Decide which of the following are relevant for your input field and use them.

If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script:
  • 0/0/0000
  • (yesterday)
  • (today)
  • (today with all leading zeros, like 01/01/2006) 
  • (tomorrow)
  • (same day last week)
  • (same day next week)
  • (same day last month)
  • (same day next month)
  • (same day last year)
  • (same day next year)
  • (Jan 1 this year)
  • (Dec 31 this year) 
  • (Jan 1 last year)
  • (Dec 31 last year) 
  • (Jan 1 next year)
  • (Dec 31 next year) 
  • 1/1/1999
  • 12/31/1999
  • 1/1/2000
  • 2/28/2000
  • 2/29/2000
  • 2/30/2000
  • 2/31/2000 
  • 3/1/2000
  • 12/31/2000
  • 1/1/2001
  • 1/1/202 
  • 2/28/2004
  • 2/29/2004
  • 3/1/2004
  • 12/31/2004
  • 9/9/9999
  • 2/29/2001 
  • 4/31/2001
  • 9/31/2001 
  • 2/29/2100
  • 13/1/2006
  • 00/1/2006
  • 01/32/2006
  • 01/00/2006

  • June 5, 2001
  • 06/05/2001
  • 6/5/2001
  • 06/05/01
  • 6/5/01
  • 06-05-01
  • 06-05-2001
  • 6-5-01
  • 6-5-2001

April 14, 2006

General Input Tests for Strings


Here are some routine tests to try for a simple string field.

To use these values, you should first know the Minimum and Maximum number of characters required.

Then decide which of the following are relevant for your input field and use them.

If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script:
  • Nothing
  • Empty field (clear any defaults)
  • More than the maximum number of characters
  • Much more than the maximum number of characters
  • Any valid string
  • A single leading space
  • Many leading spaces
  • A single trailing space
  • Many trailing spaces
  • Leading and trailing spaces
  • A single embedded space
  • Many embedded spaces
  • Nonprinting character (e.g., Ctrl+char)
  • Operating system filename reserved characters (e.g., "*.:")
  • Language-specific reserved characters
  • Upper ASCII (128-254) (a.k.a. ANSI) characters
  • ASCII 255 (often interpreted as end of file)
  • Uppercase characters
  • Lowercase characters
  • Mixed case characters
  • Modifiers (e.g., Ctrl, Alt, Shift-Ctrl, and so on)
  • Function key (F2, F3, F5, and so on)
  • Characters special to sprintf (like or %d)
  • Keyboard special characters (~!@...)

Character Input Testing

The following is a list of characters that are, or may be, special to some portion of the processing chain for many web applications.

A robust input and display testing strategy will verify that these characters are
  • correctly rendered on input
  • if persisted in some way, correctly rendered after being persisted and retrieved from the persistent store
  • work correctly when placed in different parts of an input string (beginning, middle, end)
Note that some of these collections overlap -- the intent is for each list to be complete in and of itself.
  • Characters that are special to file system paths   
    • . \ / : ;
  • Characters that are illegal in file system paths     
    • unknown, TBD
  • Characters that are special to XML                   
    • < > & " '
  • Characters that are illegal in XML
    • The following BNF rule describes valid characters in XML (from XML specification):
      • Char ::= #x9
        #xA
        #xD
        [#x20-#xD7FF]
        [#xE000-#xFFFD]
        [#x10000-#x10FFFF]
  • Any character not in these ranges (for example #xC) is not allowed to appear anywhere in an XML document. (We still may need to handle these values correctly in some places.  Even if the user may not be able to enter them, other services sometimes return them to us. For example, some SNMP object discoveries return strings containing #x0.)
  • Characters that are special in Javascript 
    • TBD, includes " ' \ and some character combinations beginning with \, like \u \n.
  • Characters that are illegal in Javascript
    • TBD
  • Characters that are special in URLs
    • See RFC 2396, sections 2.2-2.4. The following characters are special:
      • reserved = ";" "/" "?" ":" "@" "&" "=" "+" "$" ","
  • Characters that are illegal in URLs
    • See RFC 2396, sections 2.2-2.4. The following characters (the "unreserved" rules) are legal in URLs:
      • unreserved = alphanum | mark
      • mark = "-" "_" "." "!" "~" "*" "'" "(" ")"
      • alphanum = A-Z a-z 0-9
    • Any characters not in this set (for example 16-bit characters, 8-bit non-US-ASCII characters, and punctuation marks not in this list, except reserved characters being used in their official capacity) must be hex-encoded to be included in a URL.
    • The following rules describe characters that are explicitly disallowed (this set is NOT exhaustive, as the previous paragraph is):
      • control =
      • space =
      • delims = "<" ">" "#" "%" "<" ">"
      • unwise = "{" "}" "" "\" "^" "[" "]" "`"
    • Characters that are 8-bit (e.g. European characters from ISO-8859-1,2,3): a with umlaut, e with accent, o with slash
    • Characters that are 16-bit: Korean, Japanese characters

April 10, 2006

General Input Tests for an Integer Field with Negative Numbers



Here are some routine tests to try for a simple integer field, which permits negative values.

To use these values, you should first know the Minimum and Maximum values required for this field, and the number of characters in each.

Then decide which of the following are relevant for your input field and use them.

If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script:
  • Nothing
  • Empty field (clear any defaults)
  • More than the maximum number of digits or characters
  • 0
  • +0
  • -0 
  • Any valid positive value
  • Any valid negative value
  • Minimum - 1
  • Minimum
  • Maximum
  • Maximum + 1
  • Much less than the Minimum
  • Much more than the Maximum
  • Minimum number of digits or characters
  • Minimum - 1 number of digits or characters
  • Maximum number of digits or characters
  • Maximum + 1 number of digits or characters
  • Much more than the Maximum number of digits or characters
  • Nondigits, expecially / (ASCII character 47) and : (ASCII character 58)
  • Wrong data type (e.g., decimal into integer)
  • Expressions
  • A single leading space
  • Many leading spaces
  • A single trailing space
  • Many trailing spaces
  • Lead and trailing spaces
  • Leading 0
  • Many leading zeros
  • Leading + sign
  • Many leading + signs
  • Leading - sign
  • Many leading - signs
  • Nonprinting character (e.g., Ctrl+char)
  • Operating system filename reserved characters (e.g., "*.:")
  • Language-specific reserved characters
  • Upper ASCII (128-254) (a.k.a. ANSI) characters
  • ASCII 255 (often interpreted as end of file)
  • Uppercase characters
  • Lowercase characters
  • Modifiers (e.g., Ctrl, Alt, Shift-Ctrl, and so on)
  • Function key (F2, F3, F5, and so on)
  • -127
  • -128
  • -126
  • 126
  • 127
  • 128
  • 254
  • 255 (1-byte, tinyint) 
  • 256
  • -256
  • -257
  • -255 
  • 32766
  • 32767 (2-byte, smallint) 
  • 32768
  • -32768
  • -32769
  • -32767 
  • 65534
  • 65535 (2-byte unsigned, smallint) 
  • 65536
  • 2147483646
  • 2147483647 (4 byte, int) 
  • 2147483648
  • - 2147483648
  • - 2147483649
  • - 2147483647 
  • 4294967294
  • 4294967295 (4-byte unsigned, int) 
  • 4294967296
  • 9223372036854775806
  • 9223372036854775807 (8 byte, bigint) 
  • 9223372036854775808
  • -9223372036854775808
  • -9223372036854775809
  • -9223372036854775807
  • 18446744073709551614
  • 18446744073709551615 (8 byte unsigned, bigint) 
  • 18446744073709551616
(adapted from "Lessons Learned in Software Testing", and other sources)

April 8, 2006

General Input Tests for an Integer Field

 

Here are some routine tests to try for a simple integer field, which doesn't permit negative values.

To use these values, you should first know the Minimum and Maximum values required for this field, and the number of characters in each.

Then decide which of the following are relevant for your input field and use them.

If you are using an automated test tool, these values can easily be used exhaustively, or randomly, by a test script:
  • Nothing
  • Empty field (clear any defaults)
  • More than the maximum number of digits or characters
  • 0
  • Any valid value
  • Minimum - 1
  • Minimum
  • Maximum
  • Maximum + 1
  • Much less than the Minimum
  • Much more than the Maximum
  • Minimum number of digits or characters
  • Minimum - 1 number of digits or characters
  • Maximum number of digits or characters
  • Maximum + 1 number of digits or characters
  • Much more than the Maximum number of digits or characters
  • A negative value
  • Nondigits, expecially / (ASCII character 47) and : (ASCII character 58)
  • Wrong data type (e.g., decimal into integer)
  • Expressions
  • A single leading space
  • Many leading spaces
  • A single trailing space
  • Many trailing spaces
  • Lead and trailing spaces
  • Leading 0
  • Many leading zeros
  • Leading + sign
  • Many leading + signs
  • Nonprinting character (e.g., Ctrl+char)
  • Operating system filename reserved characters (e.g., "*.:")
  • Language-specific reserved characters
  • Upper ASCII (128-254) (a.k.a. ANSI) characters
  • ASCII 255 (often interpreted as end of file)
  • Uppercase characters
  • Lowercase characters
  • Modifiers (e.g., Ctrl, Alt, Shift-Ctrl, and so on)
  • Function key (F2, F3, F5, and so on)
  • 254
  • 255 (1-byte, tinyint)
  • 256
  • 32766
  • 32767 (2-byte, smallint)
  • 32768
  • 65534
  • 65535 (2-byte unsigned, smallint)
  • 65536
  • 2147483646
  • 2147483647 (4 byte, int)
  • 2147483648
  • 4294967294
  • 4294967295 (4-byte unsigned, int)
  • 4294967296
  • 9223372036854775806
  • 9223372036854775807 (8 byte, bigint)
  • 9223372036854775808
  • 18446744073709551614
  • 18446744073709551615 (8 byte unsigned, bigint)
  • 18446744073709551616
(adapted from "Lessons Learned in Software Testing", and other sources)

January 1, 2006

Test Data - CA Province Abbreviations

AB
BC
MB
NB
NF
NS
NT
ON
PE
PQ
SK
YT

Test Data - CA Province Names

Alberta
British Columbia
Manitoba
New Brunswick
Newfoundland
Nova Scotia
Northwest Territories
Ontario
Prince Edward Island
Quebec
Saskatchewan
Yukon Territory

Test Data - Simpson Quotes

Homer Simpson


If you really want something in this life you have to work for it. Now quiet, they're about to announce the lottery numbers.
You don't quit your job just because it's hard. you go in there everyday and do it really half assed. That's the American way.


If something is hard to do, it's not worth doing. You just stick the electric guitar in the closet next to your short-wave radio, your karate outfit, and your unicycle, and we'll go watch TV.


It's the code of the schoolyard Marge! The rules that teach a boy to be a man. Lets see. Don't tattle, always make fun of those different from you, oh and never say anything unless you're sure everyone feels exactly the same way you do.


I saw this in a movie about a bus that had to speed around a city, keeping its speed over fifty and if its speed dropped, it would explode! I think it was called ... "The Bus That Couldnt Slow Down."


Operator! Give me the number for 911!


I am so smart! I am so smart! S-M-R-T! I mean S-M-A-R-T...


Oh, so they have internet on computers now!


Bart Simpson

Dad, thanks to TV, I can't remember what happened 8 minutes ago. No, really, it's a serious problem. Ha, ha, ha! What're we laughing about?


Aren't we forgetting the true meaning of Christmas? You know, the birth of Santa.


Remember, you can always find East by staring directly at the sun.


Grampa Abe Simpson

We can't bust heads like we used to, but we have our ways...

One trick is to tell 'em stories that don't go anywhere - like the time I caught the ferry over to Shelbyville. I needed a new heel for my shoe, so, I decided to go to Morganville, which is what they called Shelbyville in those days. So I tied an onion to my belt, which was the style at the time. Now, to take the ferry cost a nickel, and in those days, nickels had pictures of bumblebees on 'em. "Give me five bees for a quarter," you'd say.

Now where were we? Oh yeah - the important thing was I had an onion on my belt, which was the style at the time. They didn't have white onions because of the war. The only thing you could get was those big yellow ones...


I leave these: a box of mint-condition 1918 liberty-head silver dollars. You see, back in those days, rich men would ride around in Zeppelins, dropping coins on people, and one day I seen J. D. Rockefeller flying by. So I run out of the house with a big washtub and - hey! Where are you going?

... Anyway, about my washtub. I'd just used it that morning to wash my turkey, which in those days was known as a walking bird. We'd always have walking bird on Thanksgiving with all the trimmings: cranberries, injun eyes, yams stuffed with gunpowder. Then we'd all watch football, which in those days was called "baseball"...

... Eh, why didn't you get something useful, like storm windows, or a nice pipe organ? I'm thirsty! Ew, what smells like mustard? There're sure a lot of ugly people in your neighborhood. Oh! Look at that one. Ow, my glaucoma just got worse. The president isn't Democrat! Hello? I can't unbuckle my seat belt. Hello? There are too many leaves in your walkway...


My story begins in nineteen-dickity-two. We had to say "dickity" cause the Kaiser had stolen our word for "twenty".  I chased that rascal to get it back, but gave up after dickity-six miles.


Kent Brockman

Ladies and gentlemen, uh, we've just lost the picture, but what we've seen speaks for itself.

The Corvair spacecraft has apparently been taken over-'conquered,' if you will-by a master race of giant space ants. It's difficult to tell from this vantage point whether they will consume the captive Earthmen or merely enslave them. One thing is for certain; there is no stopping them; the ants will soon be here. And I, for one welcome our new insect overlords. I'd like to remind them that as a trusted TV personality, I can be helpful in rounding up others to toil in their underground sugar caves


Sideshow Bob

Well, you see Birch, I'm presently incarcerated. Convicted of a crime I didn't even commit. Attempted murder? Now honestly what is that? Do they give out a Nobel prize for attempted chemistry?


Groundskeeper Willie

Get yer haggis, right here! Chopped heart and lungs, boiled in a wee sheep's stomach! Tastes as good as it sounds. Good for what ails ya!


Chief Wiggum

All right. Come out with your hands up, two cups of coffee, an auto freshener that says Capricorn, and something with coconut on it!


Uh, no, you got the wrong number. This is 9-1... 2.


Ralph Wiggum

Me fail English? That's unpossible!


The doctor said I wouldn't have so many nosebleeds if I kept my finger outta there!


...And when the doctor said I didn't have worms anymore, that was the happiest day of my life!


Then, the doctor told me that BOTH my eyes were lazy! And that's why it was the best summer ever.


Professor Frink

Oh my great good God! Gentlemen, your attention please. I am detecting a gigiantic amphibious life-form, it's 80 meters long and it's heading this way. Oh good glayven it's on my shoe. It's a small frog, just get off, just get off there, just get out of it, get out of it. Stupid machine, oh wait a minute, this isn't the Monsterometer, it's the Frog-Exaggerator Mm-hai.

Oh Dear, I've been RE-DORKULATED!


Lenny

Late night swimming and alcohol: it's a winning combination!


Milhouse

Not only am I not learning, I'm forgetting stuff I used to know.


Remember the time he ate my goldfish? And you lied and said I never had goldfish. Then why did I have the bowl Bart? Why did I have the bowl?


We started out like Romeo and Juliet, but it ended up in tragedy.


Hans Moleman

A poem, by Hans Moleman. I think that I shall never see, my cataracts are blinding me.


Today, part four of our series on the agonizing pain in which I live every day.


Comic Book Guy

Ooh, your powers of deduction are exceptional. I can't allow you to waste them here when there are so many crimes going unsolved at this very moment. Go, go, for the good of the city.


But, Aquaman, you cannot marry a woman without gills. You're from two different worlds... Oh, I've wasted my life.


Last night's 'Itchy and Scratchy Show' was, without a doubt, the worst episode ever. Rest assured, I was on the internet within minutes, registering my disgust throughout the world.


Barney Gumble

Hey, Homer, I'm worried about the beer supply. After this case, and the other case, there's only one case left.


Test Data - Country Names

Afghanistan
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua And Barbuda
APO/FPO
Argentina
Armenia
Aruba
Australia
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia And Herzegowina
Botswana
Bouvet Island
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
East Timor
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands
Faroe Islands
Fiji
Finland
France
France, Metropolitan
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Germany
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guinea
Guinea-Bissau
Guyana
Haiti
Heard And Mc Donald Islands
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran
Iraq
Ireland
Israel
Italy
Jamaica
Japan
Jordan
Kazakhstan
Kenya
Kiribati
Kuwait
Kyrgyzstan
Lao People's Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macau
Macedonia
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia
Moldova
Monaco
Mongolia
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Korea (People's Republic Of Korea)
Northern Mariana Islands
Norway
Oman
Other
Pakistan
Palau
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Kitts And Nevis
Saint Lucia
Saint Vincent And The Grenadines
Samoa
San Marino
Sao Tome And Principe
Saudi Arabia
Senegal
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia And The South Sandwich Islands
South Korea (Republic Of Korea)
Spain
Sri Lanka
St Helena
St Pierre and Miquelon
Sudan
Suriname
Svalbard And Jan Mayen Islands
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan
Tajikistan
Tanzania
Thailand
Togo
Tokelau
Tonga
Trinidad And Tobago
Tunisia
Turkey
Turkmenistan
Turks And Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United Kingdom
United States
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Vatican City State
Venezuela
Viet Nam
Virgin Islands (British)
Virgin Islands (U.S.)
Wallis And Futuna Islands
Western Sahara
Yemen
Zaire
Zambia
Zimbabwe

Test Data - State Abbreviations

AK
AL
AR
AZ
CA
CO
CT
DC
DE
FL
GA
HI
IA
ID
IL
IN
KS
KY
LA
MA
MD
ME
MI
MN
MO
MS
MT
NC
ND
NE
NH
NJ
NM
NV
NY
OH
OK
OR
PA
PR
RI
SC
SD
TN
TX
UT
VA
VT
WA
WI
WV
WY

Test Data - Last Names

Some good sources of Last Names (surnames, family names)
http://www.last-names.net/
http://www.census.gov/genealogy/names/names_files.html  (from 1990 census)
http://en.wikipedia.org/wiki/List_of_most_common_surnames
http://resources.rootsweb.com/surnames/
http://www.nfl.com/players
http://mlb.mlb.com/mlb/players/index.jsp
http://www.fakenamegenerator.com/
Information about last names:

Notes

Use apostrophes:
O'Brien
O'Connor
O'Dowd
D'Angelo
D'Artagnan
N'Dour
Use hypens
Al-Hussein
Al-Kurd
Smith-Klein

Use multiple words
Van Kempen
van Campen
Az-Zahir Hakim
Use Long Names
Featherstonehaugh
MacGhilleseatheanaich
Wolfeschlegelsteinhausenbergerdorff

Use Short Names

Ji
Li
Ng

Test Data - Simpson Characters

Homer Simpson
Marge Simpson
Bart Simpson
Lisa Simpson
Maggie Simpson
Abraham "Grampa" Simpson
Mona Simpson
Herbert Powell
Amber Pigal-Simpson
Jacqueline Bouvier
Clancy Bouvier
Gladys Bouvier
Patty Bouvier
Selma Bouvier Terwilliger Hutz McClure Stu Simpson
Ling Bouvier
Hugo Simpson
Ned Flanders
Maude Flanders
Rod Flanders
Todd Flanders
Mr Flanders Sr.
Mona Flanders
Ginger Flanders
Grandma Flanders
Lord Thistlewick Flanders
José Flanders
Kirk Van Houten
Luann Van Houten
Milhouse Van Houten
Grandma Van Houten
Grandpa Van Houten
Norbert Van Houten
Apu Nahasapeemapetilon Jr.
Manjula Nahasapeemapetilon
Sanjay Nahasapeemapetilon
Pahusacheta Nahasapeemapetilon
Jamshed Nahasapeemapetilon
Apu Nahasapeemapetilon Sr.
Mrs. Nahasapeemapetilon
Kavi Nahasapeemapetilon
Clancy Wiggum
Sarah Wiggum
Ralph Wiggum
Dr. Julius Hibbert
Bernice Hibbert
Martin Prince, Sr.
Martha Prince
Martin Prince, Jr.
Timothy "Tim" Lovejoy
Helen Lovejoy
Jessica Lovejoy
Nelson Muntz
Cletus Spuckler
Unnamed Spuckler
Brandine Spuckler
Witney Spuckler
Jitney Spuckler
Dudley Spuckler
Incest Spuckler
Crystal Meth Spuckler
International Harvester Spuckler
Birthday Spuckler
Stabbed in Jail Spuckler
Mary "Wrestlemania" Spuckler
Dia-Betty Spuckler
Tiffany Spuckler
Heather Spuckler
Cody Spuckler
Dylan Spuckler
Dermott Spuckler
Jordan Spuckler
Taylor Spuckler
Brittany Spuckler
Wesley Spuckler
Rumer Spuckler
Scout Spuckler
Cassidy Spuckler
Zoe Spuckler
Chloe Spuckler
Max Spuckler
Hunter Spuckler
Kendal Spuckler
Kaitlin Spuckler
Noah Spuckler
Sasha Spuckler
Morgan Spuckler
Kira Spuckler
Ian Spuckler
Lauren Spuckler
Q-bert Spuckler
Phil Spuckler
Gummy Sue Spuckler
Charles Montgomery "Monty" Burns
Gertrude Burns
Lily Bancroft
Larry Burns
Waylon Smithers, Jr.
Waylon Smithers, Sr.
Lenny Leonard
Jack Leonard Jr.
Carl Carlson
Mindy Simmons
Frank Grimes
Frank Grimes Jr.
Aristotle Amadopolis
W. Seymour Skinner
Armin Tamzarian
Agnes Skinner
Sheldon Skinner
Gary Chalmers
Edna Krabappel
Elizabeth Hoover
Dewey Largo
Brunella Pommelhorst
Groundskeeper Willie
Otto Mann
Lunchlady Doris
Dr. J. Loren Pryor
Corky James "Jimbo" Jones
Dolphin "Dolph" Starbeam
Kearney Zzyzwicz
Francine Rhenquist
Wendell Borton
Martin Prince Junior
Janey Powell
Allison Taylor
Alex Whitney
Üter Zörker
Samantha Stankey
Michael D'Amico
Adil Hoxha
"Diamond Joe" Quimby
Martha Quimby
Freddy Quimby
Rex Banner
Ray Patterson
Mary Bailey
Bob Arnold
Judge Roy Snyder
Judge Constance Harm
Russ Cargill
Snake Jailbird
Jeremy Jailbird
Robert "Sideshow Bob" Terwilliger Jr.
Francesca Terwilliger
Gino Terwilliger
Cecil Terwilliger
Dr. Robert Terwilliger Sr.
Dame Judith Underdunk
Lucille Botzkowski
Hank Scorpio
Lyle Lanley
Don Vittorio Di Maggio
Fat Tony
Johnny Tightlips
Frankie the Squealer

Test Data - Family Guy Characters

Peter Griffin
Lois Griffin
Meg Griffin
Chris Griffin
Stewie Griffin
Brian Griffin
Francis Griffin
Thelma Griffin
Nate Griffin
Carter Pewterschmidt
Barbara Pewterschmidt
Carol Pewterschmidt
Patrick Pewterschmidt
Silas Pewterschmidt
Lois Laura Bush Lynne Cheney Pewterschmidt
Dylan Flannigan
Cleveland Brown
Loretta Brown
Cleveland Brown, Jr.
Dave Campbell
Dottie Campbell
Jeff Campbell
Mort Goldman
Muriel Goldman
Neil Goldman
Glenn Quagmire
Joan Quagmire
Joe Swanson
Bonnie Swanson
Kevin Swanson
Tom Tucker
Stacy Tucker
Jake Tucker
Jonathan Weed
Connie D'Amico
Rob Berler
Principal Shepherd
Craig Hoffman
Shauna Parks
Diane Simmons
Tricia Takanawa
Ollie Williams
Adam West
Al Harrington
Buzz Killington
Dr. Elmer Hartman
Ernie the Giant Chicken
Evil Monkey
James William Bottomtooth III
Jim Kaplan
Bruce Kaplan
Paddy Tanninger