CS 4218 Software Testing and Debugging Ack: Tan Shin Hwei for project description formulation

Similar documents
CS 1044 Program 6 Summer I dimension ??????

- c list The list specifies character positions.

Washington State University School of EECS Computer Science Course Assessment Report

Project #1 rev 2 Computer Science 2334 Fall 2013 This project is individual work. Each student must complete this assignment independently.

On successful completion of the course, the students will be able to attain CO: Experiment linked. 2 to 4. 5 to 8. 9 to 12.

Documentation Requirements Computer Science 2334 Spring 2016

Shells & Shell Programming (Part B)

Reading and manipulating files

1. What statistic did the wc -l command show? (do man wc to get the answer) A. The number of bytes B. The number of lines C. The number of words

Project 1 Computer Science 2334 Spring 2016 This project is individual work. Each student must complete this assignment independently.

CS 251 Intermediate Programming Coding Standards

5/8/2012. Exploring Utilities Chapter 5

CENG 334 Computer Networks. Laboratory I Linux Tutorial

CSSE2002/7023 The University of Queensland

Chapter 4. Unix Tutorial. Unix Shell

CS 152 Computer Programming Fundamentals Coding Standards

Creating a Shell or Command Interperter Program CSCI411 Lab

CS160A EXERCISES-FILTERS2 Boyd

CS 470 Operating Systems Spring 2013 Shell Project

This assignment requires that you complete the following tasks (in no particular order).

Utilities. September 8, 2015

Worksheet 3: Predictive Text Entry

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 3: SEP. 13TH INSTRUCTOR: JIAYIN WANG

Shells and Shell Programming

Programming Standards: You must conform to good programming/documentation standards. Some specifics:

EE 422C HW 6 Multithreaded Programming

Table of contents. Our goal. Notes. Notes. Notes. Summer June 29, Our goal is to see how we can use Unix as a tool for developing programs

A Brief Introduction to the Linux Shell for Data Science

Shells and Shell Programming

PROGRAMME: COMPUTER SCIENCE & ENGINEERING COURSE: Operating System Lab SEMESTER: VI CREDITS: 2

$Id: asg4-shell-tree.mm,v :36: $

bash Scripting Introduction COMP2101 Winter 2019

Week Overview. Simple filter commands: head, tail, cut, sort, tr, wc grep utility stdin, stdout, stderr Redirection and piping /dev/null file

Laboratory 1 Semester 1 11/12

COMP26120 Academic Session: Lab Exercise 2: Input/Output; Strings and Program Parameters; Error Handling

CS 351 Design of Large Programs Coding Standards

Problem Set 1 Due: 11:59pm Wednesday, February 7

Due: 9 February 2017 at 1159pm (2359, Pacific Standard Time)

Laboratory Assignment #3 Eclipse CDT

Due Friday, March 20 at 11:59 p.m. Write and submit one Java program, Sequence.java, as described on the next page.

Contents. Note: pay attention to where you are. Note: Plaintext version. Note: pay attention to where you are... 1 Note: Plaintext version...

Shell Programming Overview

CS ) PROGRAMMING ASSIGNMENT 11:00 PM 11:00 PM

INFSCI 1017 Implementation of Information Systems Spring 2017

CSE 15L Winter Midterm :) Review

3. When you process a largest recent earthquake query, you should print out:

UNIVERSITY OF NEBRASKA AT OMAHA Computer Science 4500/8506 Operating Systems Summer 2016 Programming Assignment 1 Introduction The purpose of this

Your Instructor. CSE Content. Notes. Notes. Notes. Summer May 4, 2010

BIOINFORMATICS POST-DIPLOMA PROGRAM SUBJECT OUTLINE Subject Title: OPERATING SYSTEMS AND PROJECT MANAGEMENT Subject Code: BIF713 Subject Description:

Maps and Trees. CS310: Program 2. 1 Overview. 2 Requirements. Instructor Provided Files. Late Work: Up to 72 hours Penalty: 10% per 24

CSC209H1S Day Midterm Solutions Winter 2010

CSCI 1060U Programming Workshop

CMSC 201 Fall 2016 Lab 09 Advanced Debugging

No Food or Drink in this room. Logon to Windows machine

CMPT 300. Operating Systems. Brief Intro to UNIX and C

sottotitolo A.A. 2016/17 Federico Reghenzani, Alessandro Barenghi

CSE2031. Lab 2 FALL 2009

Lab Exercise #1 Project Compilation, Javadoc Generation, and Submission Computer Science 2334

Full file at

Lab 1: Dynamic Memory: Heap Manager

Midterm 1 1 /8 2 /9 3 /9 4 /12 5 /10. Faculty of Computer Science. Term: Fall 2018 (Sep4-Dec4) Student ID Information. Grade Table Question Score

2) clear :- It clears the terminal screen. Syntax :- clear

Mastering Modern Linux by Paul S. Wang Appendix: Pattern Processing with awk

Lab 1 1 Due Wed., 2 Sept. 2015

EECS2301. Lab 1 Winter 2016

Essentials for Scientific Computing: Bash Shell Scripting Day 3

The Unix Shell & Shell Scripts

Practical Session 0 Introduction to Linux

Coding Style Handout #15 February 1, CS106A Winter

CSCI 2132: Software Development

Homeschool Programming, Inc.

Appendix A GLOSSARY. SYS-ED/ Computer Education Techniques, Inc.

Using the Zoo Workstations

12.1 UNDERSTANDING UNIX SHELL PROGRAMMING LANGUAGE: AN INTRODUCTION Writing a Simple Script Executing a Script

CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 11:00 PM for 100 points Due Monday, October 11:00 PM for 10 point bonus

CSE 11 Style Guidelines

MIC Lab Parallel Computing on Stampede

Out: April 19, 2017 Due: April 26, 2017 (Wednesday, Reading/Study Day, no late work accepted after Friday)

Lab #12: Shell Scripting

CS 2604 Minor Project 1 DRAFT Fall 2000

Process Management! Goals of this Lecture!

Bash Programming. Student Workbook

Oregon State University School of Electrical Engineering and Computer Science. CS 261 Recitation 1. Spring 2011

Visual Profiler. User Guide

CSCE 212H, Spring 2008, Matthews Lab Assignment 1: Representation of Integers Assigned: January 17 Due: January 22

CS143 Handout 05 Summer 2011 June 22, 2011 Programming Project 1: Lexical Analysis

Unix/Linux Basics. Cpt S 223, Fall 2007 Copyright: Washington State University

Open up a terminal, make sure you are in your home directory, and run the command.

Programming Assignment #1: A Simple Shell

CS 215 Software Design Homework 3 Due: February 28, 11:30 PM


CS 25200: Systems Programming. Lecture 11: *nix Commands and Shell Internals

The input can also be taken from a file and similarly the output can be redirected to another file.

Ling 473 Project 4 Due 11:45pm on Thursday, August 31, 2017

Part III Appendices 165

1 The Var Shell (vsh)

COMP 321: Introduction to Computer Systems

COMP2100/2500 Lecture 17: Shell Programming II

psed [-an] script [file...] psed [-an] [-e script] [-f script-file] [file...]

CS Homework 8. Deadline. Purpose. Problem 1. Problem 2. CS Homework 8 p. 1

Transcription:

CS 4218 Software Testing and Debugging Ack: Tan Shin Hwei for project description formulation The Project CS 4218 covers the concepts and practices of software testing and debugging. An important portion of the CS 4218 is the project work. Through this project students will learn and apply testing and debugging techniques followed by quality assessment activities. Teams of students will implement a SHELL and two components and test their functionality using different testing techniques that will be taught during the course. In the first four weeks of the project the students will start development and testing activities based on the project specification. The students will learn to professionally apply testing approaches and techniques with the state of art testing automation framework JUnit. The students will be shown good and poor styles of manual unit-test generation. By week four students will develop shell, first component and corresponding test cases. In the following four weeks, students will develop and integrate all the components of the project and assess the code quality using coverage metrics. The development of the second component will be based on existing test cases in lieu of the project description, applying the concepts of test driven development. Particular attention will be paid to the integration and interaction testing of shell and the implemented components. The students will evaluate the quality and thoroughness of the test cases and project code using different coverage metrics. By the end of week eight students will have integrated both the components with the shell reliably. In the remaining project weeks, students will take on the role of a professional software tester. In this role, they will apply testing, debugging and other quality assurance activities in a simulated industrial setting with limited communication. Finally, by week 14 students will have submitted all the project artifacts (including source code, test cases, bug reports, quality assurance reports) for final evaluation. Programming Language All programming assignments must be completed using JAVA Project Teams Students may form a team at the beginning of the semester. Each team may consist of a maximum of 4 team members. Each team will report the team members and the team leader before the second lab session. Once formed, teams would be final for the duration of the course. Project Constraints Coding Must be a standalone JAVA application. External libraries/plugins should not be used. Should not rely on network communication. Should not used databases. Each method must not be too long. You should refractor your code if the method is too long. You must have proper Javadoc comments for every method. Comments should explain the purpose of the function in at least one complete sentence. Do not comment excessively. Use the given class/method names. For helper methods, follows the Java naming convention: * Names representing packages should be in all lower case. * Names representing types must be nouns and written in mixed case starting with upper case(e.g., Line,

AudioSystem) * Variable names must be in mixed case starting with lower case. (e.g., line, audiosystem) Use meaningful names for method and variables. This rule applies to test method as well. For test method, explain the scenario that you are testing (e.g., for a test that check for negative value for method foo, use name like testfoonegativevalue) Use naming convention for test classes. For example, test class for the class name Foo should be called FooTest. Classes should be declared in individual files with the file name matching the class name. Format your code with proper indentation for better readability. Submission All submission must be made through the IVLE Each submission should be named in the following format XX-YY.zip, where XX is the assignment name and YY is the team name Do not include your name in any of the submitted code. This rule is made for the purpose of grading. 4218 Project Timeline Week 1 Hands-on hour: Basic introduction to the course project. Week 2 Hands-on hour: We describe the shell that needs to be implemented (different file utilities, see project description). The class is divided into two groups to allow exchanging of code and test cases. Group 1 gets assigned grep tool and piping (extended functionality 1). Group 2 gets assigned the text utilities (extended functionality 2) Homework: Develop shell and start with your extended functionalities Week 3 Hands-on hour: Setup Junit as per our tutorial website Homework: Continue work on shell and extended functionality. Setup JUnit environment for your project. Week 4 Hands-on hour: Continuation of JUnit, and its usage on the code. Students are encouraged to start using Junit in their projects, as they are developing the code. Homework: Finish development of shell and your extended functionality. Milestone: Submit the test cases for the shell and extended functionality before week 5 Week 5 Hands-on hour: Test Driven Development. Swap the test cases between the groups Homework: Develop the other extended functionality based on the newly acquired test cases Week 6 Hands-on hour: Complete the code development in the project. Homework: Write integration tests. Make sure that integration test invokes all the utilities in combinations with at least one other utility. Week 7 Hands-on hour: Discuss code coverage tools. Determine the statement, branch, and MC/DC coverage of your code Homework: Add relevant test cases (if needed) Milestone: Submit all code, test cases and coverage reports by week 8 Week 8 Hands-on hour: left flexible this week, can discuss course materials outside course project specifically for this week. Week 9

Hands-on hour: Hackathon. Hand-over of one group's code to another. Limited interaction in explanation across teams to simulate industrial practice. Generate test cases that fail due to bugs in others code (if any). Determination of testing strategies to test other's code. Week 10 Hands-on hour: Quality Assurance. Comparison of testing strategies, measures of confidence Homework: Write a quality assurance report Milestone: Submit all test cases with bug reports, from the Hackathon week (specifically, the failing ones) Week 11 Hands-on hour: Debugging strategies for the failed test cases that were found earlier Homework: Debug and fix your code such that all test cases pass Week 12: Hands-on hour: Finish debugging, and generate fixes for failed tests. Week 13: Hands-on hour: Finalization and validation of fixes, by re-running tests. Discussion of how test selection was done during the re-running Week 14: (Reading week) Milestone: Finalization and Submission of Project Report, Initial Code, Tests, Final Code, QA report plus any other artifacts (such as debugging logs) Implementation Requirements How to begin? A shell is used to interpret and execute user's commands. Following sequence explains how a basic shell can be implemented in Java Do Forever 1. Wait for a user input 2. Parse the user input. Separate the command and its arguments 3. Create a new thread to execute the command 4. Execute the command and its arguments on the newly created thread. Exit with the status code of the executed command 5. In the shell, wait for the thread to complete execution 6. Report the exit status of the command to the user The functionality in the shell will be implemented (and tested) in two phases: Basic Functionality and the Extended Functionality Basic functionality: As a part of basic functionality the shell should be able to interpret the following commands. Note that none of the commands in this category require additional arguments. pwd : report present working directory cd : change directory ls : list the contents of a directory copy : copy a file to a given location move : move a file to a given location delete : delete a file cat : cat copies each file or standard input ( denoted by - ) if no files are given to the standard output echo : echo writes its arguments separated by blanks and terminated by a newline on the standard output Ctrl + z : stop the execution of present command (thread). If no command is being executing this

key combination has no effect on the shell All other inputs : Any inputs other than the ones explicitly mentioned above should return an error message Extended Functionality: This set of functionalities is further subdivided into two parts. Each team will have to implement both the sets of Extended Functionality before the final submission. Extended functionality, Set I: As a part of extended functionality set I, teams will implement the grep and the pipe tool. Grep : The grep command searches one or more input files for lines containing a match to a specified pattern. The grep tool must work on all characters in UTF-8 encoding. Command Format - grep [] PATTERN [FILE] PATTERN - This specifies a regular expression pattern that describes a set of strings -A NUM : Print NUM lines of trailing context after matching lines -B NUM : Print NUM lines of leading context before matching lines -C NUM : Print NUM lines of output context -c : Suppress normal output. Instead print a count of matching lines for each input file -o : Show only the part of a matching line that matches PATTERN -v : Select non-matching (instead of matching) lines Pipe : The pipe tools allows the output of one program to be sent to the input of another program. With the help of pipe tool multiple small (and simple) programs can be connected to accomplish large number of tasks. Command Format - PROGRAM-1-STANDARD_OUTPUT PROGRAM-2-STANDARD_INPUT Where " " is the pipe operator and PROGRAM-1-STANDARD_OUTPUT is the standard output of program 1 and PROGRAM-2-STANDARD_INPUT is the standard input of program 2. Extended functionality, Set II: As a part of extended functionality set II, teams will implement the Text utilities that are listed below cut : prints a substring that is specified in a certain range Command Format - cut [] [FILE] -c LIST: Use LIST as the list of characters to cut out. Items within the list may be separated by commas, and ranges of characters can be separated with dashes. For example, list 1-5,10,12,18-30 specifies characters 1 through 5, 10,12 and 18 through 30. -d DELIM: Use DELIM as the field-separator character instead of the TAB character

paste : writes to standard output lines consisting of sequentially corresponding lines of each given file, separated by a TAB character Command Format - paste [] [FILE] -s : paste one file at a time instead of in parallel -d DELIM: Use characters from the DELIM instead of TAB character comm : Compares two sorted files line by line. With no options, produce three-column output. Column one contains lines unique to FILE1, column two contains lines unique to FILE2, and column three contains lines common to both files. Command Format - comm [] FILE1 FILE2 FILE1 - Name of the file 1 FILE2 - Name of the file 2 -c : check that the input is correctly sorted, even if all input lines are pairable -d : do not check that the input is correctly sorted sort : sort lines of text files Command Format - sort [] [FILE] FILE - Name of the file -c : Check whether the given file is already sorted, if it is not all sorted, print a diagnostic containing the first line that is out of order uniq : Writes the unique lines in the given input. The input need not be sorted, but repeated input lines are detected only if they are adjacent. Command Format - uniq [] [FILE] -f NUM : Skips NUM fields on each line before checking for uniqueness. Use a null string for comparison if a line has fewer than n fields. Fields are sequences of non-space non-tab characters that are separated from each other by at least one space or tab. -i : Ignore differences in case when comparing lines. wc : Prints the number of bytes, words, and lines in given files Command Format - wc [] [FILE] -m : Print only the character counts -w : Print only the word counts -l : Print only the newline counts