Team Project/Therac-26 Software Engineering [Exaile Music Player] Austin Baker Christoph Samitsch Jaime Miller Joshua Walton.

Slides:



Advertisements
Similar presentations
CATHERINE AND ANNIE Python: Part 3. Intro to Loops Do you remember in Alice when you could use a loop to make a character perform an action multiple times?
Advertisements

Scripts and Flow Control. Scripts So far we have been entering commands directly into the command line But there is a better way Script files (and functions)
Computer Science 1620 Loops.
Software Testing and Quality Assurance
1 CIS 205 Practice Test George Lamperti A word that has a predefined meaning in a C++ program and cannot be used as a variable name is known as.
Lecture 7 Sept 17 Goals: Complete Chapter 4 Chapters 5 and 6.
Structured programming
Lecture 7 Sept 29 Goals: Chapters 5 and 6. Scripts Sequence of instructions that we may want to run can be stored in a file (known as script). by typing.
Are You Sure What Failures Your Tests Produce? Lee White.
Guide To UNIX Using Linux Third Edition
CONTROL STATEMENTS Lakhbir Singh(Lect.IT) S.R.S.G.P.C.G. Ludhiana.
CGI Programming: Part 1. What is CGI? CGI = Common Gateway Interface Provides a standardized way for web browsers to: –Call programs on a server. –Pass.
Bash Shell Scripting 10 Second Guide Common environment variables PATH - Sets the search path for any executable command. Similar to the PATH variable.
CMSC 104, Version 8/061L18Functions1.ppt Functions, Part 1 of 4 Topics Using Predefined Functions Programmer-Defined Functions Using Input Parameters Function.
Group practice in problem design and problem solving
Fundamentals of Python: From First Programs Through Data Structures
Advanced Shell Programming. 2 Objectives Use techniques to ensure a script is employing the correct shell Set the default shell Configure Bash login and.
Fundamentals of Python: First Programs
MATLAB File Management. MATLAB User File Management Matlab provides a group of commands to manage user files. For more information, type help iofun. pwd.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
© 2012 LogiGear Corporation. All Rights Reserved Robot framework.
General Computer Science for Engineers CISC 106 Lecture 02 Dr. John Cavazos Computer and Information Sciences 09/03/2010.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 2 Input, Processing, and Output.
(C) 2010 Pearson Education, Inc. All rights reserved. Java How to Program, 8/e.
FYP Final Presentation: Distributed Audio Mixing Daire O'Neill, Final Year Electronic Engineering Project Supervisor: Dr Peter Corcoran Co-Supervisor:
Scons Writing Solid Code Overview What is scons? scons Basics Other cools scons stuff Resources.
Shell Script Programming. 2 Using UNIX Shell Scripts Unlike high-level language programs, shell scripts do not have to be converted into machine language.
Linux Operations and Administration
Oracle Data Integrator Procedures, Advanced Workflows.
Roles of Variables with Examples in Python ® © 2014 Project Lead The Way, Inc.Computer Science and Software Engineering.
Intro Python: Variables, Indexing, Numbers, Strings.
Multi Way Selection You can choose statement(s) to run from many sets of choices. There are two cases for this: (a)Multi way selection by nested IF structure.
PROBLEM SOLVING & ALGORITHMS CHAPTER 5: CONTROL STRUCTURES - SELECTION.
CSC 110 Using Python [Reading: chapter 1] CSC 110 B 1.
1 Program Input Software Design Chapter 4. 2 You Will Want to Know... Prompting for and reading values into a program. Accessing data from a file. What.
©Colin Jamison 2004 Shell scripting in Linux Colin Jamison.
Chapter Six Introduction to Shell Script Programming.
Comparing model-based and dynamic event-extraction based GUI testing techniques : An empirical study Gigon Bae, Gregg Rothermel, Doo-Hwan Bae The Journal.
Files Tutor: You will need ….
 Previous lessons have focused on client-side scripts  Programs embedded in the page’s HTML code  Can also execute scripts on the server  Server-side.
 In computer programming, a loop is a sequence of instruction s that is continually repeated until a certain condition is reached.  PHP Loops :  In.
1 ENGI 2420 Structured Programming (Lab Tutorial 7) Memorial University of Newfoundland.
Midterm Exam Topics (Prof. Chang's section) CMSC 201.
Chapter 1 Java Programming Review. Introduction Java is platform-independent, meaning that you can write a program once and run it anywhere. Java programs.
ALGORITHMS AND FLOWCHARTS. Why Algorithm is needed? 2 Computer Program ? Set of instructions to perform some specific task Is Program itself a Software.
Functions, Part 1 of 3 Topics  Using Predefined Functions  Programmer-Defined Functions  Using Input Parameters  Function Header Comments Reading 
CS Class 04 Topics  Selection statement – IF  Expressions  More practice writing simple C++ programs Announcements  Read pages for next.
CMSC 104, Section 301, Fall Lecture 18, 11/11/02 Functions, Part 1 of 3 Topics Using Predefined Functions Programmer-Defined Functions Using Input.
FILES AND EXCEPTIONS Topics Introduction to File Input and Output Using Loops to Process Files Processing Records Exceptions.
Python C API overview References:
1 Project 12: Cars from File. This is an extension of Project 11, Car Class You may use the posted solution for Project 11 as a starting point for this.
PHP using MySQL Database for Web Development (part II)
Fundamentals of Python: First Programs
3.1 Fundamentals of algorithms
Introduction to Programming
Intro to Python Programming – Part II
Engineering Innovation Center
Iterations Programming Condition Controlled Loops (WHILE Loop)
Python I/O.
Topics Introduction to File Input and Output
Compound Assignment Operators in C++
File IO and Strings CIS 40 – Introduction to Programming in Python
Structured Program
Introduction to Programming
Fundamentals of Python: First Programs
Introduction to javadoc
Topics Introduction to File Input and Output
Introduction to Programming
Topics Introduction to File Input and Output
Presentation transcript:

Team Project/Therac-26 Software Engineering [Exaile Music Player] Austin Baker Christoph Samitsch Jaime Miller Joshua Walton

In the beginning… Metalinks Pidgin Exaile

What is Exaile? A music player that allows one to: – Listen to music – Create playlists – Get album artwork – Get song lyrics GTK+ Python

User Play music Organize playlists Set preferences

Sequence diagram for importing a playlist content_type_guess(path) Playlist InvalidPlaylistTypeError ('Invalid playlist type.') Playlist Type import_playlist(path) User P: Playlist import_from_file(path) [Playlist Type OK] [Playlist Type Fail] G: GIOPR: Provider Alt

Challenges in the beginning Python Interaction with GUI Appropriate methods for test cases

Architectural Scheme runAllTests.py Import and run Test Case Write Result File Get Requirements Clear Temp Directory

A Single Test Case testCaseXY.py Input Call Unit Write Output to Temp Folder Compare Output with Oracle

Volume Test Case Uses Exaile's Base Player Simple test of volume functionality Does the volume set to the requested value? Will the player allow for values less than 0 or greater than 100? Base player should set to the requested value every time

Volume Test Code

Track Rating Uses Exaile's track class (“trax”) creates a “trax” object Tests the rating function for a given track Does Exaile actually set the requested value? Exaile takes an integer between 1 and 5 as an input

Track Rating Test Code

Track Cover Test Case Tests using Exaile's “trax” class Tests if the method will return a album cover If there is no cover, does it return false Should return false since our input has no cover attributes.

Track Cover Test Code

Issues with Implementation Problem: Common paths on different systems Solution: Using os.environ['USERNAME'] allows us to execute scripts from any user's home directory

Issues cont. Problem: Importing from files higher in the folder hierarchy Solution: We appended the path to our working directory for the tests to sys.path

Issues cont. Problem: Clearing the temp directory before each run Solution: A separate script lists the contents of the temp folder For every file that exists, it removes that file

Issues cont. Problem: Numbering convention on testCases Each executable test case has a testNum variable with an int value Solution: All of our testCases and testCasesExecutables files are named without leading zeros All test cases appended to an array using a for loop

Issues cont. Problem: Making the runAllTests script run the tests created Solution: The glob class's glob method returns the number of files specified by an extension in a given directory

Fault Injections Test Case 1 – Setting the volume Requirements:  Setting the volume with a specified value must set the volume to that value Inputs:  Float values in increments of 1 from 0.0 to Expected Output:  The same increments from 0.0 to Why this fails:  The set_volume method converts the last volume value of to 100.0

Fault Injections cont. Test Case 5 – Setting a track rating Requirements:  Setting the rating of a track to a specified value must set the rating to that value Inputs:  Integer values in increments of 1 from 1 to 6 Expected Output:  The same increments from 1 to 6 Why this fails:  The set_rating method converts the out-of-range value of 6 to a 5

Fault Injections cont. Test Case 9 – Next track in a playlist Requirements:  The next command must increment current position of given playlist to the next position Inputs:  A playlist with 5 tracks, range of 6 to invoke next command Expected Output:  The playlist proceed to positions 1,2,3,4 and then repeat 4,4 since they are at the end of the playlist Why this fails:  When reaching the end of the playlist, method loops around to the “beginning” going to positions -1 and 0

Fault Injections cont. Test Case 10 – Previous track in a playlist Requirements:  The previous command must decrement current position of given playlist to the previous position Inputs:  A playlist with 5 tracks, current position of 4, range of 6 to invoke previous command Expected Output:  The playlist should go back to positions 3,2,1,0,-1,4 Why this fails:  upon reaching the first track in the playlist, it simply repeats it, producing positions 3,2,1,0,0,0

Fault Injections cont. Test Case 16 – Splitting numerical values Requirements:  The split_numerical method must separate the numbers value in format n/n to a tuple (n,n) Inputs:  Blank values for the input “ / ” Expected Output:  Either (0,0) or (None,None) Why this fails:  A blank input produces (None, 0)

Lessons learned and Conclusion Linux based systems – ubuntu Python Coding PyUnit Python syntax Overall development of a test framework Tested much of Exaile's framework and able to contribute to Exaile project