###### tags: `ST` `SoftwareTesting`
# Software Testing HOMEWORK 1
> 2020.05
> 0856040 王立洋
## public BoundedQueue(int capacity);
### a) List all of the input variables, including the state variables.
- capacity
### b) Define the characteristics of the input variables. Make sure you cover all input variables.
- capacity: int
- Relation of capacity with 0
### c) Partition the characteristics into blocks. Designate one block in each partition as the "Base" block.
- A: Relation of capacity with 0
- A1:`<0` A2:`=0` A3`>0`
### d) Define values for each block.
- A1: capacity=-1
- A2: capacity=0
- A3: capacity=5
### e) Define a test set that satisfies Base Choice Coverage (BCC). Write your tests with the values from the previous step. Be sure to include the test oracles.
- (A1): capacity=-1
- ORACLES: IllegalArgumentException
- (A2): capacity=0
- ORACLES:
- isEmpty() = true
- isFull() = true
- (A3): capacity=5
- ORACLES:
- isEmpty() = true
- isFull() = false
## public void enQueue(Object o);
### a) List all of the input variables, including the state variables.
- o
- capacity
- back
- size
### b) Define the characteristics of the input variables. Make sure you cover all input variables.
- A: Object o is null
- B: size==capacity
- C: capacity is 1
### c) Partition the characteristics into blocks. Designate one block in each partition as the "Base" block.
- A: Object o is null
- A0: False, A1: True
- B: size==capacity
- B0: False, B1: True
- C: capacity is 1
- C0: False, C1: True
- Base: (A0, B0, C0)
### d) Define values for each block.
- A: Object o is null
- A0: `o="apple"`, A1: `o=null`
- B: size==capacity
- B0: `size!=capacity`, B1: `size=capacity`
- C: capacity is 1
- C0: `capacity=4`, C1: `capacity=1`
### e) Define a test set that satisfies Base Choice Coverage (BCC). Write your tests with the values from the previous step. Be sure to include the test oracles.
- Base: (A0, B0, C0)
- (A0, B0, C0)
- capacity = 4
- q.enQueue("apple");
- q.enQueue("pen");
- ORACLES: q="[apple, pen]"
- (A0, B0, C1)
- capacity = 1
- ORACLES: q="[]"
- (A0, B1, C0)
- capacity = 4
- q.enQueue("apple");
- q.enQueue("pen");
- q.enQueue("pineapple");
- q.enQueue("applepen");
- q.deQueue();
- q.deQueue();
- q.enQueue("A");
- q.enQueue("B");
- ORACLES: q="[pineapple, applepen, A, B]"
- (A0, B1, C1)
- capacity = 1
- q.enQueue("apple");
- ORACLES: q="[apple]"
- (A1, ...Don't care)
- o -> null
- ORACLES: NullPointerException
## public Object deQueue();
### a) List all of the input variables, including the state variables.
- size
- front
- capacity
### b) Define the characteristics of the input variables. Make sure you cover all input variables.
- A: size==0
- B: front is the last in elements
### c) Partition the characteristics into blocks. Designate one block in each partition as the "Base" block.
- A: size==0
- A0: False, A1: True
- B: front is the last in elements
- B0: False, B1: True
- C: capacity is 1 [Precondition: B1]
- C0: False, C1: True
- Base: (A0, B0, C0)
### d) Define values for each block.
- A: size==0
- A0: `size!=0`, A1: `size=0`
- B: front is the last in elements
- B0: `front!=capacity-1`, B1: `front=capacity-1`
- C: capacity is 1 [Precondition: B1]
- C0: `capacity!=1`, C1: `capacity=1`
- Base: (A0, B0, C0)
### e) Define a test set that satisfies Base Choice Coverage (BCC). Write your tests with the values from the previous step. Be sure to include the test oracles.
- Base: (A0, B0, C0)
- (A0, B0, C0)
- capacity = 4
- q.enQueue("apple");
- q.enQueue("pen");
- q.enQueue("pineapple");
- q.enQueue("applepen");
- q.deQueue();
- ORACLES: q="[pen, pineapple, applepen]"
- (A0, B1, C0)
- capacity = 4
- q.enQueue("apple");
- q.enQueue("pen");
- q.enQueue("pineapple");
- q.enQueue("applepen");
- q.deQueue();
- q.deQueue();
- q.deQueue();
- q.enQueue("apple");
- q.enQueue("pen");
- ORACLES: q="[applepen, apple, pen]"
- (A0, B1, C1)
- capacity = 1
- q.enQueue("apple");
- ORACLES: q="[applepen]"
- (A1, B0, C0)
- capacity = 4
- q.enQueue("apple");
- q.deQueue();
- ORACLES: q="[applepen]"
- (A1, B1, C0)
- capacity = 4
- q.enQueue("apple");
- q.enQueue("pen");
- q.enQueue("pineapple");
- q.deQueue();
- q.deQueue();
- q.deQueue();
- ORACLES: q="[]"
## public boolean isEmpty();
### a) List all of the input variables, including the state variables.
- size
### b) Define the characteristics of the input variables. Make sure you cover all input variables.
- A: size==0
### c) Partition the characteristics into blocks. Designate one block in each partition as the "Base" block.
- A: size==0
- A0: False, A1: True
### d) Define values for each block.
- A: size==0
- A0: `size!=0`, A1: `size=0`
### e) Define a test set that satisfies Base Choice Coverage (BCC). Write your tests with the values from the previous step. Be sure to include the test oracles.
- (A0)
- capacity = 3
- q.enQueue("apple");
- q.enQueue("pen");
- q.enQueue("pineapple");
- ORACLES: q.isEmpty()=false
- (A1)
- capacity = 3
- ORACLES: q.isEmpty()=true
## public boolean isFull();
### a) List all of the input variables, including the state variables.
- size
- capacity
### b) Define the characteristics of the input variables. Make sure you cover all input variables.
- A: size==capacity
- B: capacity==1
### c) Partition the characteristics into blocks. Designate one block in each partition as the "Base" block.
- A: size==capacity
- A0: False, A1: True
- B: capacity==1
- B0: False, B1: True
- Base: (A1, B0)
### d) Define values for each block.
- A: size==capacity
- A0: `size!=capacity`, A1: `size=capacity`
- B: capacity==1
- B0: `capacity!=1`, B1: `capacity=1`
### e) Define a test set that satisfies Base Choice Coverage (BCC). Write your tests with the values from the previous step. Be sure to include the test oracles.
- Base: (A1, B0)
- (A1, B0)
- capacity = 3
- q.enQueue("apple");
- q.enQueue("pen");
- q.enQueue("pineapple");
- ORACLES: q.isFull()=true
- (A1, B1)
- capacity = 1
- q.enQueue("apple");
- ORACLES: q.isFull()=true
- (A0, B0)
- capacity = 3
- q.enQueue("apple");
- ORACLES: q.isFull()=false
---