Testing
When you complete the testing section of your project you need to make sure your testing table is specific and attempts to test all possible inputs.
Below are a series of programs and completed testing tables so you can see how you should complete the testing tables.
Example 1 - Email Address Validation
| 
 |  | 
Program code:
Dim email As String = txtEmail.Text
If Len(email) = 0 Then
    MessageBox.Show("INVALID")
Else
    Dim pattern As String = "^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$"
    Dim emailAddressMatch As Match = Regex.Match(email, pattern)
    If emailAddressMatch.ToString = email Then
        MessageBox.Show("VALID")
    Else
        MessageBox.Show("INVALID")
    End If
End If
Testing Table:

Testing Evidence:
|  | Test 1 | 
|---|---|
|  | Test 2 | 
|  | Test 3 | 
|  | Test 4 | 
|  | Test 5 | 
Example 2 - Grade Calculator
This program gets the user to enter a test score between 0 and 100. It will then say the grade and how many marks they are off the next grade. The grade boundaries are:
| 
 |  | 
Program code:
Dim nextBoundary As Integer
If IsNumeric(txtScore.Text) = False Then
    MessageBox.Show("Please enter a number")
    Return
ElseIf Int(txtScore.Text) < 0 Or Int(txtScore.Text) > 100 Then
    MessageBox.Show("Please enter a number between 0 and 100")
    Return
End If
If txtScore.Text >= 70 Then
    nextBoundary = 100 - txtScore.Text
    MessageBox.Show("That test score is an A grade, you needed " & nextBoundary.ToString & " more marks to gain full marks")
ElseIf txtScore.Text >= 60 Then
    nextBoundary = 70 - txtScore.Text
    MessageBox.Show("That test score is a B grade, you needed " & nextBoundary.ToString & " more marks to get an A")
ElseIf txtScore.Text >= 50 Then
    nextBoundary = 60 - txtScore.Text
    MessageBox.Show("That test score is a C grade, you needed " & nextBoundary.ToString & " more marks to get an B")
ElseIf txtScore.Text >= 40 Then
    nextBoundary = 50 - txtScore.Text
    MessageBox.Show("That test score is a D grade, you needed " & nextBoundary.ToString & " more marks to get an C")
Else
    nextBoundary = 40 - txtScore.Text
    MessageBox.Show("That test score is a U grade, you needed " & nextBoundary.ToString & " more marks to get an D")
End If
Testing Table:

Testing Evidence:
|  | Test 1 | 
|---|---|
|  | Test 2 | 
|  | Test 3 | 
|  | Test 4 | 
|  | Test 5 | 
Testing Table:

Testing Evidence:
|  | Test 6 | 
|---|---|
|  | Test 7 | 
|  | Test 8 | 
|  | Test 9 | 
|  | Test 10 | 
Example 3 - Speeding Cars
This program reads a file that contains a list of car registration plates and the speed they were captured at going through a speed camera. The user will enter the speed limit and it will display which of the cars in the file were speeding. Part of the file cars.csv is shown below:
|  |
 |  |
|—|—|
 |
|—|—|
Program code:
lstOutput.Items.Clear()
Dim carsdata As New StreamReader("D:\cars.csv")
Dim details As Array
Dim found As Boolean = False
Dim carspeed As Integer = cmbSpeedLimit.Text
While carsdata.EndOfStream = False
    details = carsdata.ReadLine.Split(",")
    If details(1) > carspeed Then
        lstOutput.Items.Add(details(0) & "," & details(1))
        found = True
    End If
End While
If found = False Then
    MessageBox.Show("There were no cars that broke the speed limit of " & cmbSpeedLimit.Text)
End If
Testing Table:

Testing Evidence:
|  |  | 
|---|---|
| Test 1 | Test 2 | 
|  | Test 3 | 
Example 4 - Order Program
This program reads a file that contains a list of products and their prices sold in a shop. The user enters a GTIN code (barcode) and how many the customer wants. It then calculates the total cost of each item and a grand total and creates a receipt.
|  |
 | |
|:-:|:-:|
 |
|:-:|:-:|
Program code:
Dim totalcost As Decimal
Private Sub btnCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCheck.Click
    Dim itemcost As Decimal
    Dim reader As New StreamReader("D:\products.csv")
    Dim productInfo As Array
    Dim quantity As Integer = txtQuan.Text
    Dim gtin As String = txtGTIN.Text
    Dim found As Boolean = False
    Do While reader.EndOfStream = False
        productInfo = reader.ReadLine.Split(",")
        If productInfo(0) = gtin Then
            itemcost = productInfo(2) * quantity
            lstItems.Items.Add(New ListViewItem({productInfo(0), productInfo(1), quantity, FormatCurrency(productInfo(2)), FormatCurrency(itemcost)}))
            found = True
            totalcost = totalcost + itemcost
        End If
    Loop
    If found = False Then
        lstItems.Items.Add(New ListViewItem({txtGTIN.Text, "Product not found"}))
    End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    lstItems.Items.Clear()
    lstItems.Columns.Add("GTIN Code", 75, HorizontalAlignment.Center)
    lstItems.Columns.Add("Description", 200, HorizontalAlignment.Center)
    lstItems.Columns.Add("Quantity", 75, HorizontalAlignment.Center)
    lstItems.Columns.Add("Cost", 50, HorizontalAlignment.Center)
    lstItems.Columns.Add("Total", 50, HorizontalAlignment.Center)
End Sub
Private Sub btnTotal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTotal.Click
    txtTotal.Text = FormatCurrency(totalcost)
End Sub
Testing Table:

Testing Evidence:
|  | Test 1 | 
|---|---|
|  | Test 2 | 
|  | Test 3 | 
|  | Test 4 | 
Example 5 - Reorder Program
This program reads a file that contains a list of products and how many there are in stock. If the number in stock is low, it works out how many need to be reordered and then creates a new file of the products that need to be reordered as well as how many.

Program code:
Private Sub btnReorder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReorder.Click
    lstreorder.Items.Clear()
    Dim reader As New StreamReader("D:\catalogue.csv")
    Dim productinfo As Array
    Dim reorderamount As Integer
    Do While reader.EndOfStream = False
        productinfo = reader.ReadLine.Split(",")
        If productinfo(3) < productinfo(4) Then
            reorderamount = productinfo(5) - productinfo(3)
            lstreorder.Items.Add(New ListViewItem({productinfo(0), productinfo(1), reorderamount}))
            Dim reorder As New StreamWriter("D:\reorder.csv", True)
            reorder.WriteLine(productinfo(0) & "," & productinfo(1) & "," & reorderamount)
            reorder.Close()
        End If
    Loop
    If lstreorder.Items.Count > 0 Then
        MessageBox.Show("Reorder file created")
    Else
        MessageBox.Show("No products need reordering")
    End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    lstreorder.Columns.Add("GTIN Code", 75, HorizontalAlignment.Center)
    lstreorder.Columns.Add("Description", 200, HorizontalAlignment.Center)
    lstreorder.Columns.Add("Reorder Amount", 100, HorizontalAlignment.Center)
End Sub
Testing Table:

Testing Evidence:
|  | Test 1 | 
|---|---|
|  | Test 2 | 
|  | Test 3 | 
Example 6 - Updating Staff Information
This program updates the number of years a member of staff has been working at the school. When the program runs the user enters their email address, when it finds the person it asks them to enter their number of years teaching. It will then update the file if the person exists in the file.

Program code:
Private Sub btnFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFind.Click
    Dim reader As New StreamReader("D:/staff.csv")
    Dim details As Array
    Dim found As Boolean = False
    Do While reader.EndOfStream = False
        details = reader.ReadLine.Split(",")
        If details(2) = txtEmail.Text Then
            txtFirstName.Text = details(0)
            txtSurname.Text = details(1)
            txtYears.Text = details(3)
            found = True
        End If
    Loop
    reader.Close()
    If found = False Then
        MessageBox.Show("Member of staff not found, please try another email")
    End If
End Sub
Private Sub btnUpdate_Click(sender As System.Object, e As System.EventArgs) Handles btnUpdate.Click
    Dim reader As New StreamReader("D:/staff.csv")
    Dim details As Array
    Do While reader.EndOfStream = False
        details = reader.ReadLine.Split(",")
        Dim updatedfile As New StreamWriter("D:/staffupdated.csv", True)
        If details(2) = txtEmail.Text Then
            updatedfile.WriteLine(txtFirstName.Text & "," & txtSurname.Text & "," & txtEmail.Text & "," & txtYears.Text)
        Else
            updatedfile.WriteLine(details(0) + "," + details(1) + "," + details(2) + "," + details(3))
        End If
        updatedfile.Close()
    Loop
    reader.Close()
    My.Computer.FileSystem.DeleteFile("D:\staff.csv")
    My.Computer.FileSystem.RenameFile("D:\staffupdated.csv", "staff.csv")
    MessageBox.Show("Staff member details updated")
End Sub
Testing Table:

Testing Evidence:
|  | Test 1 | 
|---|---|
|  | Test 2 | 
|  | Test 3 |