Michael Kwayisi

Test Taker: A Test Management Software

Twitter · Facebook
A multilingual multiple-choice test management softwareA multilingual multiple-choice test management software

Test Taker Engine is a free and open source multilingual multiple-choice test management software. It is written in C# on top of the Microsoft .NET Framework 3.5. It was not developed to compete with commercial test management software of its kind, but to provide a free minimalist solution for whoever might find it useful.

I wrote this software particularly to manage tests for my students at a college during which time I served as an instructor. It was not developed to be a server-client application (though one can simply modify the source code to change the location where the database file is picked from to make it behave so) because the infrastructure at the time of writing did not support such implementation. It is presented here in the spirit of promoting open source software development by individual programmers in Africa, especially Ghana.


Test Taker Engine has a limited set of features compared with its commercial counterparts. It basically allows an administrator (usually an instructor or teacher) to setup a test and let the takers (usually students) take it. It comes bundled with support for three languages, namely, English, French and Spanish.

The software installs with only a single user account, namely, admin. This login account has no password. Hence, it is the responsibility of the one in charge to set up a strong password for the account after installation of the software has been completed.

Here are some details on the core features of the software. The documentation provided here is based on the English language user interface of the software. Hence, some names and control labels mentioned here may be different from other languages.


After installation, one can create as many accounts as they please. However, you have to make sure that there is at least one administrator account at all times. Failure to adhere to this may permanently prevent you from gaining access to the Administration Panel. The term "users" comprise of both those with administrative privileges and those who do not. It is an administrator's duty to properly assign access privileges.

To create, edit, or delete user accounts, you must first login as an administrator. After login, click on the Users tab to see a full list of all created users in the system. From there, the administrator can create a new user account by simply clicking the New button at the bottom of the window. Edit and Delete buttons are also displayed across the same region of the window.

The Add and Edit buttons will popup a dialog box to accept information about the user to create or edit. Fill in the details as required and click the Save button to save the changes. One thing worthy of pointing out is the difference between Name and Username. Name refers to the name you would like to identify each user with (e.g., Joe Tagoe) whereas Username is the unique identifier that the user will use to login. Logically, then, there cannot be multiple users with identical usernames.


The Tests tab allows an administrator to create tests to be taken by non-administrator users. Initially the contents of the Tests tab page will be empty but you can create, edit, and/or delete tests by clicking the appropriate button on the window. Clicking the Add or Edit button will popup a dialog box to supply the details about a particular test. Here are some explanation about the fields.

  • Name: This refers to the identifier of the test (e.g. Child Psychology Test I). The name chosen here must be unique among all other created tests.
  • Description: The text typed here is shown to a taker who is about to take this test. It should normally contain instructions about the test. The value here is optional.
  • Size: This field specifies the number of questions within the test. Since a test can contain unlimited number questions, this field allows you to limit the number of questions displayed to a taker in a single test.
  • Mark per question: The value in this field represents the marks to award per each correct answer to a question in the test. The marks chosen here applies to all questions under this test.
  • Duration: Specify the duration of the test in MINUTES. A taker of the test is required to finish within the duration specified here. If the taker fails to do so, the test is forcibly ended.
  • Random: This is a Yes/No field which determines whether the questions within the test should be randomized prior to presenting it to the taker. This may help prevent the takers from sharing answers since the order of questions will be indeterminate.
  • Percentage: The value in this field specify whether the final score of the test should be displayed in percentage.
  • Status: Specify if the test is enabled or disabled. A disabled test is not shown in the list of tests the taker can choose from.


The Questions tab page is where an administrator can create, edit, or delete questions for any particular test. Since questions belong to tests, you must create at least one test before you can create any question. The drop-down menu on the tab page lets you select the test you want to create a question for. The tab page also lists all questions within a selected test allowing you to edit or delete any of them.

Clicking the Add or Edit button opens a dialog box to accept details about a question to create or edit. Here are some explanation about the available fields.

  • Index: The index determines the order the question should appear to the taker. Note, however, that if the test containing this question is set to "randomize mode," this feature is effectively ignored. Nonetheless, the value may help in organizing the questions in the test.
  • Question: The text here represent the question to display to the taker. The length of a question is theoretically unlimited.
  • Option 1: The first of options the taker can select from.
  • Option 2: The second of options the taker can select from.
  • Option 3: The third of options the taker can select from.
  • Option 4: The fourth of options the taker can select from.
  • Answer: The indexical answer to this question with respect to the options. The value here must be between 1 and 4.
  • Status: Determines if this question should be among those presented to a taker. It is an administrator's responsibility to ensure that there are enough "enabled" questions in any particular test.


The Scores tab page allows an administrator to view all test scores recorded by Test Taker Engine. The scores are shown based on the selected test from the drop-down menu. As rational as it sounds, an administrator can delete a score but cannot add or edit one.

Here are some explanations on what the columns in the data sheet mean. Note that the values shown in the data sheet are those recorded at the time of completion of the test. If any changes are made to the test afterwards, the values here will not be affected (with the exception of the name which will be updated should the name of the taker change).

  • Date: Specifies the date and time the score for a test was recorded.
  • Name: Specifies the name of the taker of the test.
  • Marks: Specifies the marks the taker got in the test. The value here is computed by multiplying the Marks per question of the test by the number of correct answers the taker had.
  • Total: Specifies the maximum possible marks in the test.
  • Status: Determines the completion state of the test. The are three possible values, namely, Finished (if the taker completed the test on time), Terminated (if the taker prematurely ended the test), and Timeout (if the taker failed to finish the test within the allocated time).

Test interface

The test interface is not available to an administrator. It is the interface that a non-administrator (test taker, usually a student) will see when that user is logged in. The whole screen is captured effectively preventing the taker from minimizing the window or doing something as such.

The home screen will allow the taker to select from a list of tests to take. After the appropriate test is selected, the user may click the Start button to begin the test. Other buttons available on the screen are Terminate (to quit taking the test) and Password (to change their login password).

Once the test is started (that is, when the user clicks the Start button), buttons like Review, Previous, and Next will appear. The Review button allows the taker to quickly inspect the questions to check whether there some that have not been answered. The Previous and Next buttons allows the taker to navigate through the questions in the test. When the last question is reached, the Finish button will appear. The taker can then click this button to submit the test for marking.

When a test is ended—whether the taker clicked the Terminate or Finish button, or was forcibly ended because the taker run out of time—the final score will be presented to the user. If the test is configured to display the score in percentage, it will be expressed as such. The taker may finally click the Close button to exit the application.


You can download both the Windows installer package and the complete source code of the program from here. The source code files have been compressed into a ZIP archive to save disk space and transfer bandwidth. Select the appropriate package from the provided links below.

NOTE: The software requires the Microsoft .NET Framework 3.5 to be installed on the computer to run it. If you're using a Windows 7 operating system, this component is already installed so you don't need to perform any download. If you're using Windows XP or Vista, you may have a .NET Framework installed but not the version that this application requires. In that case, you will have to download and install the version 3.5 in order to be able to run the application.

test-taker-1.0.zipTest Taker 1.0 Windows installer1.17 MiB
test-taker-1.0-src.zipTest Taker 1.0 complete source code1.03 MiB

The license that comes with this software (both source code and compiled binaries) allows you to distribute, tweak, and build upon your own work, even commercially, provided the author is credited for the original creation. See the in-package LICENSE.txt for additional information.

Comments (5)

  1. VicVic
    Nov 20, 2014 12:21 GMT

    Great app!

    Please can you release the full solution of this software, so it can easily be modified. I would like to add a few functionality like logout, so you don't have to close the whole application when trying to switch from student to administrator view

    1. Michael KwayisiMichael Kwayisi
      Nov 21, 2014 16:48 GMT

      Hi Vic. Actually, there is no "full solution" for this app. (I'm guessing you are talking about a Visual Studio solution.) What is available for download is exactly what I have at my end; no IDE stuff, just flat source code files. Maybe you can take that up as a project, that is, port the source code to Visual Studio and release it on Github or something. It would be so nice :)

  2. Storyteller JoejoStoryteller Joejo
    Feb 23, 2013 21:47 GMT

    Great App and it shows clearly that you are an NIIT product. You created something just like the NIIT Test Engine . . . so similar!

  3. William KwesiWilliam Kwesi
    Feb 21, 2013 15:51 GMT

    Cool, cool. I like this man. You should also make it web based. I am currently working on a similar program like this.

  • Showing 1 - 3 of 3
NOTE: You are replying to 's comment. [Cancel]