Tips on Developing Question Bank using ETS Editor

Tips on formatting the questions and developing a Question Bank

 

  1. SAVE YOUR WORK OFTEN. Use AUTOSAVE to take back up at regular interval.
  2. Use /// tags for code fragments as much as possible.
  3. Do not specify number of correct options in the problem statement ( For example, Choose/Select 3 ) and do not put option number in the option statements either.
  4. Try not to include option numbers in the general explanation because that will prohibit the simulator from randomizing the options. Option specific explanation should be entered in the option editor itself.
  5. Avoid True/False, Fill In type and Drag and Drop questions because the new Oracle exams do not have them.
  6. Things such as duration of a test, pass percentage, number of questions in a test, exam objectives, change very often. The actual questions don't. So think in terms of topics/exam objectives and question content and not in terms of number of tests or number of questions in a test. Develop questions first on all topics and then organize them in various tests.
  7. Generally, you would want to create many questions on the same topic one after another. However, these questions need to go in different tests. Configure the tests at the end as the last step in the development of the question bank once you have all the questions developed (for all the topics).
  8. You can export and import questions easily but it is not a good idea to do that repeatedly because when you import the questions, the question ids will change. So if you try to import the same file again, it will cause duplicate questions with different ids but same data in the target question bank. But if you are working on one topic on one machine and another topic on another machine, you can import once you are done. This is another reason why it is a good idea to create all the other parts of a question bank such as tests and resource of the question bank at the end after merging all the questions from different question banks.
  9. Sometimes a certification objective may be too broad or may not even be listed. So create your own objectives in such a case. For example, A certification objective was: Java Class Design and we created three objectives from it: 01 - Java Class Design - Access Modifiers, 01 - Java Class Design - Object class methods, 01 - Java Class Design - Object class methods - equals/hashCode . You can create as many fine grained objectives you like. You can rename and group them later. You can also move questions later if required.
  10. You as the content expert should decide the difficulty level in a standard test (for example: 10 very easy, 25 easy, 15 tough, 6 very tough and 4 real brainer questions). Ideally, the difficulty level of a Standard Test should be a bit above the actual test.

 

 

ETS Editor Quirks

Please keep in mind that we have been using it for past 8 yrs to manage our question banks and we know its quirks. If you need some feature, or if something is bothering you, please let us know and we will fix/implement it. Some features work in a weird way. A few that you should know are:

  1. If you see a Save button/link on any screen, you need to hit it if you want your changes to be saved. If you close the dialog without clicking save, your changes will not be saved.
  2. Once you change something in the question bank, it asks you "Have you save your changes?" (Instead of asking "Do you want to save?"). If you say no, it creates a new question bank file with your changes. The original question bank file is left as it is. So now you can decide which version you want to keep.
  3. Tools ->Options AutoSave keeps creating new question bank files. It does not save to the original file.

To iterate through the existing questions one by one
Go to the Question Search tab, click on Find (without selecting any criteria, make sure "Search All Attributes" is UNchecked). This will show you all the questions in the table below. You can now open a question by double clicking on any row and use the Next/Prev buttons on the Question Dialog to go to the next/previous question.

To Duplicate a Question or to Serialize/Deserialize a question
On the question dialog, on the tab pane at the lower half, there is a Serialize - Deserialize tab. This tab gives you a pure text version of the question, which you can copy and then paste into into another question. So, to create a new question from existing one, serialize the existing question, copy the content, and close the dialog. Now, create a new question, go to the same Serialize/Deserialize tab, paste the text and click De-serialize.

To change the internal question id counter
Use Tools menu.

To check for common errors in the questions
Go to Errors tab and click the refresh button at the bottom. It shows some common errors that we look out for.The Refresh button is probably hidden, so you need to reduce the height on the inner frame.

To add prefix to question ids
Go to the bank meta data tab and set the prefix and then use Tools menu to fix the question ids with new prefix.


How to Export questions from ETS Editor to XML

I want to export questions from ETS Viewer to another format. Does ETS Editor support exporting questions to another format such as XML?


ETS Editor provides a powerful export facility that can be used to export questions to any format including an XML file.

Since there can be numerous formats for question data, ETS Editor abstracts out the question data using a Java class named etsloader.NonETSQuestion. This class is available in etseditor.jar. It is a very straight forward data object that has various fields pertaining to a question such as problem statement, options, explanation, code, toughness, and section. etseditor.jar also contains an interface named etsloader.AnyFormatQuestionExporter. This has only one method as shown below.

public interface etsloader.AnyFormatQuestionExporter{
    void setQuestions(ArrayList<NonETSQuestion> questionsList,
                     HashMap<String, byte[]> images, 
                      HashMap<String, String> sectionObjectives, 
                      String exportFilePath);
}


Now, all you need to do is to write a java class that implements this interface. In your class, you dump the question data is any format you want including XML.

Use ETS Editor's Tools->Export menu and select your class to export all your questions. This option is enabled when you have a question bank already opened for editing. Click on the Help button on the resulting dialog to learn how it works. Here is a Sample XML Exporter.

How to Import questions in a Question Bank from XML

I already have questions in another format. Does ETS Editor support importing questions from another format such as XML?


ETS Editor provides a powerful import facility that can be used to import questions from any format including an XML file.

Since there can be numerous formats for question data, ETS Editor abstracts out the question data using a Java class named etsloader.NonETSQuestion. This class is available in etseditor.jar. It is a very straight forward data object that has various fields pertaining to a question such as problem statement, options, explanation, code, toughness, and section. etseditor.jar also contains an interface named etsloader.AnyFormatQuestionFileLoader. This has only two methods as shown below.

public interface etsloader.AnyFormatQuestionFileLoader{
    //Map of Image Name-Image data
    public HashMap<String, byte[]> getImages() throws Exception;
    
    //List of all the questions
    public ArrayList<NonETSQuestion> loadFile(String fileName) throws Exception;
}


Now, all you need to do is to write a java class that implements this interface. In your class, you can parse an XML file, or connect to a database, and create NonETSQuestion objects.

Use ETS Editor's Tools->Load From File menu and select your class to load all your questions. This option is enabled when you have a question bank already opened for editing. Click on the Help button on the resulting dialog to learn how it works. The following is a code for a Sample Loader:

import com.enthuware.ets.loader.NonETSQuestion;
import java.util.ArrayList;
import java.util.Collections;

/**
* This loader is for a fictious format where each line contains data for a question.
*/

public class SampleMockLoader implements com.enthuware.ets.loader.AnyFormatQuestionFileLoader {
    
    public SampleMockLoader() {
    }

    public static void main(String[] args) throws Exception{
        SampleMockLoader jml = new SampleMockLoader();
        jml.loadFile("c:\\files\\Questions0.txt");
    }
    public ArrayList<NonETSQuestion> loadFile(String fileName) throws Exception
    {
        LineByLineTransformer.Command command = new MyCommand();
        ArrayList<NonETSQuestion> questions = new ArrayList<NonETSQuestion>();
        LineByLineTransformer lbl = new LineByLineTransformer(fileName, command, null, questions);
        return questions;
    }
    
    public static class MyCommand implements LineByLineTransformer.Command
    {
        static final int QUESTION_INDEX = 5;
        static final int EXPANDED_ANSWER_INDEX = 7;
        static final int NUMBER_OF_ANSWERS_INDEX = 2;
        static final int CORRECT_ANSWER_INDEX = 6;
        static final int STARTING_INDEX_OF_WRONG_ANSWERS = 8;
        
        public Object execute(Object obj)
        {
            String line = (String) obj;
            if(line.length()<10return null;
            System.out.println("Processing :"+line);
            String[] sa = line.split("\\|");
            NonETSQuestion neq = new NonETSQuestion();
            neq.setSection(sa[0]);
            neq.setProblemstmt(sa[QUESTION_INDEX]);
            neq.setExplanation(sa[EXPANDED_ANSWER_INDEX]);
            ArrayList ops = new ArrayList();
            ops.add(new String[]{sa[CORRECT_ANSWER_INDEX], null"true"});
            for(int i=STARTING_INDEX_OF_WRONG_ANSWERS; i<sa.length; i++){
                if(sa[i] == null|| sa[i].trim().equals("")) break;
                ops.add(new String[]{sa[i], null"false"});
            }
            neq.setOptions(ops);
            return neq;
        }
  
    }
}

Why should I use ETS Editor to develop questions

I can write questions in plain text or XML. Why should I use ETS Editor to write questions?


You can certainly write questions in any format. It is very easy to import questions from any format into ETS Editor. Exporting questions out of ETS Editor is as easy so there is no lock in.

However, in our experience, editing a plain text or html/xml file that contains hundreds of questions is an absolute pain. We have written thousands of questions and we know how cumbersome it gets to deal with raw XML file. Effort required to organize a question's data such as options, option comments, explanation, images etc. in plain text soon balloons up.
Another issue is that after writing the question in xml, you will want to see how exactly it will be displayed to the end user with all the formatting that you have specified, which is not possible if you are managing questions in a raw file.

Further, writing questions is only a part of developing a question bank. You will also need to configure various kinds of Tests, Study Notes, and URLs. You will also want to move the questions between exam objectives, change toughness levels, check for common errors.
Writing a new question for the first time is a lot easier than managing it (i.e. enhancements/error corrections etc.) over the years.

We developed ETS Editor specifically for this purpose. It does have a little bit of a learning curve but it saves a lot of time in the long run. It contains lot of tools/shortcuts to make the job of writing and managing questions simple. We have developed thousands of questions using this tool and we are yet to see a better tool for this purpose. If you know any other tool better than ETS Editor, please do let us know :)

Please use this sample ETS file to get started. To use it, please start ETS Editor using command line: java -jar etseditor.jar first. Then use its File -> Open menu to open the ets file. It will pop up a dialog showing three users including "admin". Select "admin" and click OK. Enter "admin" (without quotes) as the password.

Here is a YouTube video that shows how to add questions. Most of the stuff is self explanatory. Play around with it and if you have any question, please let us know.

What is ETS Editor

ETS Editor is used to develop mock exams. ETS Editor creates an ETS file to store these mock exams. Thus, this tool is for vendors of Mock Exams. If you just want to take mock exams, you need to use ETS Viewer.

ETS Editor is used extensively by Enthuware to develop mock exams and is provided free of cost to other mock exam developers.

The following is a brief list of features of ETS Editor -

  • Platform Independent - Since it is a Java application, it can be used on practically any platform. You can start creating a question bank on one platform and edit it on another. The users of the question bank can use it on any platform as well.
  • No Lock In - It is very easy to Import and Export questions from and to any format you need including a database. So you can use it to just manage your questions and then use any other tool for delivery to end users. Please see this to learn how to Export Questions from ETS Viewer.
  • Multiple Question Types - You can create several types of questions such as Multiple Choice, Fill in the blanks, Drag and Drop, and True/False.
  • Highly Customizable - It allows you to configure pretty much all aspects of a Mock Exam. Several parameters such as Time per question, passing marks, Number of correct options can be set for an individual Test as well as for a group of Tests.
  • Study Material - Besides questions, you can include any kind of study material such as pdf, doc, or image files and URLs for references.
  • User Features - Several features such as Leitner Learning Mode, Performance History, User Notes, Missed Question tracking, Customized tests, that are necessary for effective preparation are implemented right out of the box.
  • Security - It allows multiple authors to work on a question bank. Each Author gets his own login to the Question Bank. It can also encrypt the Question Bank using your own keys (which it helps you generate).
  • Licensing - You can enforce licensing on the Question Bank, which means that a user will be able to access it only if he has a valid license. A license cannot be modified by the user.
  • Updates - It automatically notifies the users of any updates to the Question Bank as well as to the application itself.
  • Community Features - It allows users of your Question Bank to chat among themselves and with you. It allows users to report their scores on mock as well as real exam.

There are many more features that make the life of a Mock Exam vendor easy. We are continuously working on making it better, so let us know if you have any idea.

Installation 

ETS Editor is a Java application and it requires JDK (or JRE) 1.6 or higher installed on your computer.

For ALL Platforms - Download etseditor.jar (2.5MB) and run it using the following command line:
      java -jar c:\ets directory\etseditor.jar