Answered step by step
Verified Expert Solution
Question
1 Approved Answer
o Part 1: Perform Static Black-Box testing on the Software Requirements Specification for FileAmber Be sure you thoroughly review the posted materials for Week
o Part 1: Perform Static Black-Box testing on the Software Requirements Specification for FileAmber Be sure you thoroughly review the posted materials for Week 1 & Week 2 before you start this assignment. Many issues regarding Static Black-Box testing of requirements statements are found there, as well as sample Static Black-Box requirements testing checklists that you may draw from. Carefully review the accompanying software requirements specification ("Software Requirements Specification for FileAmber.pdf"). That document is posted with this assignment. Identify 5 unique Static Black-box "defects" found during your review of the FileAmber Requirements Document. Static Black-Box Testing - Testing a Requirements Specification & Static White-Box Testing - Code Inspection and Coding Standards Review You should submit a spreadsheet of 5 unique defects found during your Static Black-Box testing. Your issues should be recorded in a spreadsheet as follows (the defects listed here are made up fo example purposes and are unrelated to our SRS document). Defect Date/Time Tester ID Entered Name BBT 01 BBT_02 BBT_03 BBT 04 12/27/23 2:42 pm 12/28/23 12:12 pm 12/28/23 10:33 am 12/29/23 11:40 am ... Tom Hagen Sal Tessio Johnny Fontane Tom Hagen ... Source Section & Page Section 3.10, Pg 14 Section 5.1, Pg. 21 Section 2.4 (Pg.19) & Section 2.29 (Pg. 22). Section 4, Page 30 Problem Description Processing speed is specified as "fast" - this is un-quantified and un- measurable All GUI windows are required to be "intuitive". This is not measurable as specified. Section 2.29 indicates that there are no specific memory requirements for the application, but section 2.4 specifically limits the application's memory footprint. Reference is made to a function & GUI window called "Export Library", but no other references to that functionality appear in the SRS. Suggested Resolution Processing speed should be specified using measurable terms. More specific GUI guidelines should be specified that result in the expected "intuitive" nature Clarify this inconsistency. Update to include the memory limitations, or remove those limitations from section 2.4 Either remove references to the "Export Library" function, or completely specify the requirements of that feature. Severity (L/M/H) Low Low Med High Part 2: Perform Static White-Box testing on a selection of java classes: (using the java Price class) As with Part 1, be sure you thoroughly review the posted materials for Week 1 & Week 2 before you start this assignment. Many issues regarding Static White-Box testing of requirements statements are found there, as well as sample Static White-Box testing checklists that you may draw from. Carefully review the code of the provided class: Price.java - found at the end of this document. Identify 4 unique Static White-Box "defects" found during your review of the provided class. You should submit a spreadsheet of 4 unique defects found during your Static White-Box testing. Your issues should be recorded in a spreadsheet as follows (the defects listed here are made up for example purposes and are unrelated to our java classes). Problem Description SRS Date/Time Tester Defect Entered ID WBT_01 WBT 02 WBT_03 WBT 04 12/27/23 2:42 pm 12/8/23 2:12 pm 12/8/23 1:33 pm 12/11/23 4:40 pm Emilio Movie.java Barzini Line #114 Kay Adams Carlo Rizzi Class & Line Number Johnny Fontane MovieManager.java Line # 22 Movie.java Line #173 MovieRecommender.java Line # 353 Accessor "getData" is returning actual reference to private data object "dataElement", not a copy. Using" to compare 2 Strings in method "updateRole" Suggested Resolution "getData" should be modified to return a copy of data object "dataElement". Change to use ".equals" In method "findGenres", the "for" loop counter is loop counter modified within the loop in do not mis-use the addition to the for-loop auto increment. Local variable "image" in method "getImage" can be used without being initialized - this will lead to a Null Pointer Exception Use an independent counter as needed, Initialize "image" to the appropriate initial default value. Severity Low If you do not understand anything in this handout, please ask. Otherwise the assumption is that you understand the content. Unsure? Ask! Med Med High Submissions & Grading Submissions are only accepted via D2L. One submission per student. Submission should include your 2 spreadsheets only (in Excel or PDF format). No other documents needed. (NOTE: If you generate a PDF, please check to see if the PDF is concise and readable - not spread across many pages) Late submissions will be accepted up to 1 week late, with a late submission penalty of 10%. Grading will be based upon the accuracy, clarity, thoroughness, and coverage of your defect spreadsheets. package price; import price.exceptions. InvalidPriceOperation; /** * The Price class will represent a single price value and should contain functionality * used with prices (math operations, comparison operations, etc.). Price values should be stored as an integer (the total number of cents in the price) to avoid decimal precision issues. * * -Prices can be positive, negative, or zero. * -For example, $12.99 would be 1299 cents, $50.00 would be 5000 cents, etc. * -A Price object should be immutable - once set, the value cannot be changed. A new object would be created to represent a new price value. * * -Note: the Price class should implement the Comparable so that it can be value-compare * and sorted with other price objects. * Note: If null is passed into any of the methods that take a Price parameter, it should throw Invalid PriceOperation (an exception class that you will create). * */ public class Price implements Comparable { private int value; // the total number of cents in the price. Should not be changed once set Price(int valueIn) { // constructor that takes an int value and stores it as the price value= valueIn; } public boolean isNegative() { // Returns true if the price is negative, false otherwise. return value < 0; } public Price add (Price p) throws Invalid PriceOperation { // Returns a new Price object holding the sum of the current price plus // the price object passed in. if (p== null) { throw new Invalid PriceOperation ("Cannot add null to a Price object"); } int results value + p.value; return new Price(results); } public Price subtract (Price p) { // Returns a new Price object holding the difference between the current // price minus the price object passed in. int results = value - p.value; return new Price (results); } public Price multiply (Price p) throws InvalidPriceOperation { // Returns a new Price object holding the product of the current price // and the integer value passed in. } value *= p.value; return new Price (value); public boolean greaterOrEqual (Price p) throws Invalid PriceOperation { // Returns true if the current Price object is greater than or equal to // the Price object passed in. if (p == null) { throw new InvalidPriceOperation ("Cannot check greater than or equal with a null"); } public boolean lessor Equal (Price p) throws Invalid PriceOperation { // Returns true if the current Price object is less than or equal to the // Price object passed in. if (p== null) { throw new InvalidPriceOperation ("Cannot check less than or equal with a null"); } } return value >= p.value; public boolean greater Than (Price p) throws Invalid PriceOperation { // Returns true if the current Price object is greater than // the Price object passed in. if (p== null) { throw new InvalidPriceOperation("Cannot check greater than with a null"); } } return value >= p.value; } public boolean less Than (Price p) throws Invalid PriceOperation { // Returns true if the current Price object is less than the // Price object passed in. if (p == null) { throw new Invalid PriceOperation ("Cannot check less than with a null"); } } return value > p.value; } return value > p.value; @Override public boolean equals (Object o) { // Returns true if the current Price object equals the Price object passed in // where equals refers to the price value). This overrides "equals" from Object. if (this 0) return true; == if (o == null || getClass() != 0.getClass()) return false; (Price) o; Price price return value ==price.value; @Override public int compareTo(Price p) { // Return the difference in cents between the current price object and the // price object passed in. Here, if the Price parameter is null, return -1. // (Specified in the Comparable interface.) if (p = null) return -1; return (int) (value - p.value); } @Override public String toString() { // Return a string containing the price value formatted as $d*.cc. // For example; $50.00, $12.34, $321.10, etc. double d = (double) value / 100.0; return String.format("$%,. 2f", d); }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started