# LogicalCoverageCaseStudy **Repository Path**: YiFan-Evan/LogicalCoverageCaseStudy ## Basic Information - **Project Name**: LogicalCoverageCaseStudy - **Description**: 第4周作业代码库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 67 - **Created**: 2021-10-08 - **Last Updated**: 2021-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LogicalCoverageCaseStudy ![代码功能说明](https://images.gitee.com/uploads/images/2021/0928/083245_989fa19b_8499634.png "CoverageCaseStudy.PNG") ## 作业解答 ### 100%语句覆盖 根据程序的流程分支结构来看,该函数只有四个分支,分别返回四种不同情况。只要构造出四个不同的测试用例使得达成了四个分支的结果,便可得到100%的语句覆盖。 #### 测试用例集合 |第一个if语句|第二个if语句|第三个if语句|预测结果| |---|---|---|---| |T|T|T|还款成功| |T|T|F|余额不足| |T|F|无所谓|返回| |F|无所谓|无所谓|卡号错误或卡号姓名不一致或余额<=0| ### 100%判定覆盖 程序一共有三个判定,分别位于三个if语句之后,分别是 ```isCardValid && isNameValid && balance.compareTo(BigDecimal.ZERO)>0``` ```isTotal || isPart```和```payment.compareTo(new BigDecimal(10.00))>=0``` 只需要设计出几个测试用例,能够包含所有这三个判定分别为T和F的情况,便可得到100%的判定覆盖。 #### 测试用例集合 |第一个if语句|第二个if语句|第三个if语句|预测结果| |---|---|---|---| |T|T|T|还款成功| |T|T|F|余额不足| |T|F|无所谓|返回| |F|无所谓|无所谓|卡号错误或卡号姓名不一致或余额<=0| ### 100%条件覆盖 程序一共有六个条件,分别为是```isCardValid```、```isNameValid```、```balance.compareTo(BigDecimal.ZERO)>0```、```isTotal```、```isPart```、```payment.compareTo(new BigDecimal(10.00))>=0``` 只需要设计出几个测试用例,能够包含所有这六个条件分别为T和F的情况,便可得到100%的条件覆盖。 #### 测试用例集合 |卡号|姓名|余额|全额|分期|还款>=指定|预测结果| |---|---|---|---|---|---|---| |T|T|T|T|N/A|T|还款成功| |T|T|T|F|T|F|余额不足| |T|T|T|F|F|N/A|返回| |F|N/A|N/A|N/A|N/A|N/A|卡号错误或卡号姓名不一致或余额<=0| |T|F|N/A|N/A|N/A|N/A|卡号错误或卡号姓名不一致或余额<=0| |T|T|F|N/A|N/A|N/A|卡号错误或卡号姓名不一致或余额<=0| ### 100%修正的判定/条件覆盖 对于程序的一共三个判定来说,第一个是```卡号&&姓名&&余额``` 我们可以通过异或计算(也可以看出来)当其中两个条件为`true`时,最后一个条件独立地影响最终结果。 故整合一下测试输入为 `{[c1=true, c2=true, c3=true], [c1=false, c2=true, c3=true], [c1=true, c2=false, c3=true], [c1=true, c2=true, c3=false] }` 第二个判定是```全额||分期```,我们可以得到:当一个条件为false时另一个条件独立地影响最终结果。 故整合一下测试输入为 `{[c4=false, c5=false], [c4=false, c5=true], [c4=true, c5=false] }` 第三个判定是`还款>=指定`,独立地影响最终结果。 将以上所述的所有方案结合,便可得到100%的修正的判定/条件覆盖。 #### 测试用例集合 |c1|c2|c3|c4|c5|c6|预测结果| |---|---|---|---|---|---|---| |F|T|T|T|T|T|卡号错误或卡号姓名不一致或余额<=0| |T|F|T|T|T|T|卡号错误或卡号姓名不一致或余额<=0| |T|T|F|T|T|T|卡号错误或卡号姓名不一致或余额<=0| |T|T|T|F|F|T|返回| |T|T|T|T|F|T|还款成功| |T|T|T|F|T|T|还款成功| |T|T|T|T|T|F|余额不足|