Automated assessment of C++ exercises with unit tests



Similar documents
A FRAMEWORK FOR MANAGING RUNTIME ENVIRONMENT OF JAVA APPLICATIONS

ITG Software Engineering

Graylog2 Lennart Koopmann, OSDC /

NGASI Shared-Runtime Manager Administration and User Guide WebAppShowcase DBA NGASI

BIRT Application and BIRT Report Deployment Functional Specification

Automating Security Testing. Mark Fallon Senior Release Manager Oracle

Configuring Apache Derby for Performance and Durability Olav Sandstå

Continuous Integration on System z

WebSphere Performance Monitoring & Tuning For Webtop Version 5.3 on WebSphere 5.1.x

Monitoring HP OO 10. Overview. Available Tools. HP OO Community Guides

Test Automation Integration with Test Management QAComplete

DottsConnected SHAREPOINT 2010 ADMIN TRAINING. Exercise 1: Create Dedicated Service Accounts in Active Directory

Monitoring Oracle Enterprise Performance Management System Release Deployments from Oracle Enterprise Manager 12c

Citect and Microsoft Windows XP Service Pack 2

Course: 10174B: Configuring and Administering Microsoft SharePoint 2010

HP OO 10.X - SiteScope Monitoring Templates

Jonathan Worthington Scarborough Linux User Group

Java Management Extensions (JMX) and IBM FileNet System Monitor

The Hotspot Java Virtual Machine: Memory and Architecture

Restraining Execution Environments

An Oracle White Paper May Oracle Database Cloud Service

SAM Server Utility User s Guide

Confinement Problem. The confinement problem Isolating entities. Example Problem. Server balances bank accounts for clients Server security issues:

Application Report Help Kepware Technologies

Witango Application Server 6. Installation Guide for OS X

Using Requirements Traceability Links At Runtime A Position Paper

ORACLE INSTANCE ARCHITECTURE

Security Certification of Third- Parties Applications

Tool - 1: Health Center

Learning More About Load Testing

Apache Jakarta Tomcat

MyCloudLab: An Interactive Web-based Management System for Cloud Computing Administration

WebSphere v5 Administration, Network Deployment Edition

ONLINE EXERCISE SYSTEM A Web-Based Tool for Administration and Automatic Correction of Exercises

Administration Authentication for InGenius Connector Enterprise

Intellicus Cluster and Load Balancing (Windows) Version: 7.3

SOA, case Google. Faculty of technology management Information Technology Service Oriented Communications CT30A8901.

DMZ Secure Proxy Environment setup for IP Forwarding

Efficient Automated Build and Deployment Framework with Parallel Process

Guideline for stresstest Page 1 of 6. Stress test

How To Set Up An Intellicus Cluster And Load Balancing On Ubuntu (Windows) With A Cluster And Report Server (Windows And Ubuntu) On A Server (Amd64) On An Ubuntu Server

Glassfish Architecture.

BPM Scheduling with Job Scheduler

Introduction to Automated Testing

"Charting the Course to Your Success!" MOC B Configuring and Administering Microsoft SharePoint Course Summary

ADAM 5.5. System Requirements

BPM Software Architecture

Siebel Application Deployment Manager Guide. Siebel Innovation Pack 2013 Version 8.1/8.2 September 2013

System Planning, Deployment, and Best Practices Guide

Pearl Echo Installation Checklist

Ergon Workflow Tool White Paper

2014 Electrical Server Installation Guide

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Why is CICS Still Alive? Dr Geoff Sharman Visiting Professor in Computer Science Birkbeck College

JAVA WEB START OVERVIEW

Managing FactoryTalk Security for Multiple FactoryTalk View Studio Applications

SharePoint 2010

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

EMC Documentum Content Management Interoperability Services

Sisense. Product Highlights.

Load Manager Administrator s Guide For other guides in this document set, go to the Document Center

How To Create A Help Desk For A System Center System Manager

1. Overview of the Java Language

RUnit - A Unit Test Framework for R

Conference on. Model-Based Validation of In-Vehicle Networks

Configuring and Administering Microsoft SharePoint 2010

24x7 Scheduler Multi-platform Edition 5.2

Lab 2 : Basic File Server. Introduction

IBM Proof of Technology Discovering business application services, featuring IBM WebSphere Application Server Network Deployment V8

Continuous Integration (CI)

Configuring and Administering Microsoft SharePoint 2013 Curso Personalizado en

Basic TCP/IP networking knowledge of client/server concepts Basic Linux commands and desktop navigation (if don't know we will cover it )

Initializing SAS Environment Manager Service Architecture Framework for SAS 9.4M2. Last revised September 26, 2014

05.0 Application Development

Basic Installation of the Cisco Collection Manager

ITMC 2079 MCTS Configuring and Administering Microsoft SharePoint 2010

Data Collection Agent for Active Directory

Sandy. The Malicious Exploit Analysis. Static Analysis and Dynamic exploit analysis. Garage4Hackers

WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE

Tuning WebSphere Application Server ND 7.0. Royal Cyber Inc.

PEtALS Quick Start. PEtALS Team Roland NAUDIN - February

Project Software Security: Securing SendMail with JAAS and Polymer

Install guide for Websphere 7.0

How To Protect Your Cloud From Attack

Technical concept of how Fachhochschule Dortmund use Microsoft Dynamics NAV 2013 in large classes with focus on development.

Common Backup Issues

CS3600 SYSTEMS AND NETWORKS

Transcription:

Automated assessment of C++ exercises with unit tests Workshop Automatische Bewertung von Programmieraufgaben Tom-Michael Hesse, Axel Wagner, Barbara Paech Institute of Computer Science Chair of Software Engineering Im Neuenheimer Feld 326 69120 Heidelberg, Germany http://se.ifi.uni-heidelberg.de hesse@informatik.uni-heidelberg.de RUPRECHT-KARLS-UNIVERSITÄT HEIDELBERG

Motivation: Direct feedback and lower effort C++ is subject to many programming lectures How to assess C++ programming exercises? Currently, code is evaluated and corrected manually We have CppUnit test cases for all exercises What about automatic testing? Available for Java Students test more and benefit from instant feedback Tutors can focus on programming style Tutor But: Currently, there exists no system dynamically testing C++ exercises with unit tests (CI systems are not robust) 2

Challenge: How to test C++ automatically? Other universities only use scripts for particular aspects (building programs, log compiler messages) Testing C++ automatically is difficult, need for: Secure build process (i.e., no JVM) Suitable test cases and feedback Automatic evaluation mechanism Interoperability (exercise code, test system) Basic idea: Create a secure test system and integrate it with an e-learning system Use e-learning system JACK [3] for management and presentation Use CppUnit as test framework 3

Our approach: Interoperable test system E-learning system as front end (i.e., JACK) Configurable wrapper between e-learning and test system JSON with zipped, base64-encoded source and test files Relative weights and individual feedback for test cases, refinement of generic error messages Stand-alone test server with security mechanisms (i.e., isolation, sandboxing) 4

How does it look like? 5

Example: Request to test system { } "suites": [ { "name": "TestArray", "link": [ "Account", "Bank", "AccountsArray", "AccountsList", "TestArray" ] }, { "name": "TestList", "link": [ "Account", "Bank", "AccountsArray", "AccountsList", "TestList" ] } ], "files": { "Account.cpp": "<gzipped, base64 kodierte Datei>", "AccountsArray.cpp": "<gzipped, base64 kodierte Datei>",... "Bank.hpp": "<gzipped, base64 kodierte Datei>" } 6

Example: Response from test system [{ }] "name": "solution2_tests", "suite": { "ok": false, "tests": [ { "description": "Exercise2Test::FibPos", "diagnostic": "equality assertion failed\nexpected: 2584\nActual: 4181", "ok": false }, { "description": "Exercise2Test::Fib1", "diagnostic": "", "ok": true } ] }, {... 7

Issues: Clean execution, malicious code Clean code execution Separated temporary directory for each solution Independent build process for each solution Sequential test suite execution for each solution Build or test process manipulation: Malicious code Usage of EasySandbox [4] (SECCOMP implementation as shared library) Limited system calls (just read/write, exit, sigreturn) Memory protection by heap limit (malloc is overwritten) Loaded via LD_PRELOAD in test runner 8

Issues (ctd.): Runtime attacks Build or test process manipulation: Runtime attacks Configurable limit for execution time Unexpected termination will cause empty test results and no points 9

Open questions: Build differences, feedback C++ standard is not completely strict Example: Size definitions of some data types are ranges Differences between student systems and test system (i.e., hardware architecture, compiler) might exist Program, which builds and runs on local machine, might not work within the test system Explanation of test cases is tough Students only learn through feedback they understand Test cases itself should be explained Feedback messages should be closely related to the current test case 10

Current work Evaluation of our test system during lecture Einführung in die Praktische Informatik ~500 students with weekly programming exercises Focus on functional programming, typical constructs and OO Integration of all components for productive use Further implementation for test case explanation Current version of test system available at GitHub [5] Current version of integrated components will be available soon 11

Literature (1) A. Hermanns, V. Jaenen, A. Heide and K. Henning: ClaRA (C++ learning at RWTH Aachen) Change from classical teaching to e-learing, in Proceedings of the 7th International Conference on Information Technology Based Higher Education and Training (ITHET '06), 2006, pp. 185 190 (2) S. Naser: Evaluating the Effectiveness of the CPP-Tutor, an Intelligent Tutoring System for Students Learning to Program in C++, in Journal of Applied Sciences Research, 2009, vol. 5, no. 1, pp. 109 114 (3) JACK, http://www.s3.uni-duisburg-essen.de/research/jack.html (4) EasySandbox, http://github.com/daveho/easysandbox (5) Test system, https://github.com/merovius/bor 12

Tom-Michael Hesse Institute of Computer Science Chair of Software Engineering Im Neuenheimer Feld 326 69120 Heidelberg, Germany http://se.ifi.uni-heidelberg.de hesse@informatik.uni-heidelberg.de RUPRECHT-KARLS-UNIVERSITÄT HEIDELBERG Prof. Dr. Barbara Paech Veranstaltung 13 2010 Institut für Informatik, Ruprecht-Karls-Universität Heidelberg