CSC/ECE 517 Fall 2017/E1753 OSS project bidding tests
About Expertiza
Expertiza is an open source project developed by North Carolina State University using Ruby on Rails. It is mainly a tool used to collaborate among students and faculty on a course and act as a common repository to track students’ progress on assignments. It is a simple tool where the instructor creates multiple assignments required and teams are assigned projects. Students submit their work and review other’s work and provide feedback.
Wiki link
Github link
Bidding Feature
The bidding feature allows students to sort topics by preference. This is needed in order run the team assignment algorithm, to match students with others based off the similarity in their topic preferences. The feature matches students to teams by calling a team forming algorithm hosted on a web service. Teams are then matched to topics by choosing the most common priority chosen by each member in the team for each topic. Topics are then assigned to students with preference given to the largest team.
• Students submit bids on the sign-up sheet view. The bidding process is done in the lottery controller.
• Bids are saved using the user id or team id based on how the bidding is done with teams getting higher priorities.
• When bids are sent to the sign-up controller, all existing bids for the user’s team are destroyed and replaced by the new bids
• The coloring of the bids is determined by the total number of bids placed on a topic
• One set of bids is possible for entire team. When one team member changes a bid, it will affect the whole team. Currently, each participant has a bid record. A Json request is sent to a webservice hosted on PeerLogic which responds with the new teams. (More information: https://github.com/peerlogic/IntelligentAssignment)
• During topic assignment the teams’ bids are determined by using whichever priority most students placed on a topic (Ex. If 3 students set topic 3 as their 1st priority and 1 set it as their second. Topic 3 would be set as the priority for the team.)
• Matching algorithm: Teams are first sorted by size and a matching algorithm assigns each team to its highest available bid.
Problem Statement
Background
Each team or an individual can go through the list of topics and set priorities for different projects. And once the priorities are set up for all projects, bidding algorithm is executed to assign projects to teams based on the priorities. Also, individuals with similar priorities are combined to form a new team. The following need to be taken care of as part of this work package. (E1753)
• Check that only one signed up team is made for each topic
• Check that users that signed up for the same team stay in the same team
• Should disband teams that are not assigned any topic.
Problems
Problem 1
Existing test cases and Rspec code do not cover the method body statements. Existing test cases only stub a method. Hence code coverage for lottery controller was only at 9%.
Problem 2
Rspec test code was incorrect which resulted in extremely low code coverage. Whole sign up and bidding functionality are present in the controller whereas a good programming in rails consists of all code in models with controllers just for interface applications.
Files Modified
/spec/controllers/lottery_controller_spec.rb
/spec/controllers/sign_up_sheet_controller_spec.rb
Issues and Solutions
Problem 1
Existing test cases for lottery controller was written to test small portion of the function rather than one complete function which is a violation of unit testing.