1、华中科技大学文华学院软件质量与测试课程设计软件工程专业07级3班姓名: 曹洪学号全称: 时间: 11月12日软件质量与测试课程设计1、 实验目的掌握软件测试用例的设计掌握软件缺陷报告的设计掌握软件缺陷修正报告的设计2、 实验过程程序preday的基本功能: 输入有效的年、 月、 日, 按计算按钮, 画面输出显示前1天的年, 月, 日; 能对日期非法输入的合理提示等。2.1程序代码的编写 详见preday文件2.2黑盒软件测试用例的设计 2.2.1等价类划分法程序的有效输入日期为18 1月1日到2050年12月31日之间的有效日期。其中, 有效等价类为18 1月1日到2050年12月3日之间的日
2、期, 其中年份为1800到2050之间的整数; 月份为1到12之间的整数; 当月份为1、 3、 5、 7、 8、 10、 12时, 日为1到31之间的整数, 当月份为4、 6、 9、 11时, 日为1到30之间的整数, 当年份为闰年元份为2时, 日为1到29之间的数值, 否则为1到28之间的数值。无效等价类: 18 1月1日之前的日期; 2050年12月3日之后的日期; 18 1月1日到2050年12月31日之间的日期, 可是月份不为1到12之间的整数; 或者当月份为1、 3、 5、 7、 8、 10、 12时, 日不为1到31之间的整数, 当月份为4、 6、 9、 11时, 日不为1到30之
3、间的整数, 当年份为闰年元份为2时, 日为1到29之间的数值, 否则为1到28之间的数值。最简单的等价类划分直接以输入条件边界来划分, 得到的等价类集合见下表, 其中Y1-Y3,M1-M3,D1-D3分别是三个输入条件的相应的等价类的编号。表1: preday问题的等价类划分等价类年份月份日期有效等价类Y1:1800年份2500M1:1月份12D1:1日期31无效等价类Y2:年份1800M2:月份1D2:日期2050M3:月份12D3:日期31根据表1的等价类划分, 无效等价类测试能够得到如表2的测试用例, 而较为合理的有效等价类的划分如表3。三个输入各自具有不同的有效等价类数目, 若从每个等
4、价类中选择一个典型值, 则年份、 月份和日期的取值个数分别为2、 4、 4, 这时将年份的水平值加以扩展, 即对于年份, 可在Y1和Y2中各选两个典型值。这样得到所有输入条件的取值如下: 年份: 1850、 1900、 、 月份: 1、 3、 5、 11日期: 1、 29、 30、 31此时, 构成的有效等价类测试用例如表4所示: 表2: Preday的无效等价类的测试用例ID输入日期(年-月-日)操作步骤预期输出实际输出备注ND-0011700-6-15输入年月日, 点击”计算”按钮提示”请输入一个在1800和2500之间的整数”请输入一个在1800和2500之间的整数年份在Y2中ND-00
5、23000-12-15输入年月日, 点击”计算”按钮提示”请输入一个在1800和2500之间的整数”请输入一个在1800和2500之间的整数年份在Y3中ND-00319891-15输入年月日, 点击”计算”按钮提示”请输入一个在1和12之间的整数”请输入一个在1和12之间的整数月份在M2中ND-0041989-13-12输入年月日, 点击”计算”按钮提示”请输入一个在1和12之间的整数”请输入一个在1和12之间的整数月份在M3中ND-0051989-4-2输入年月日, 点击”计算”按钮提示”请填入一个在1和31之间的整数”请填入一个在1和31之间的整数日期在D2中ND-0061989-4-32
6、输入年月日, 点击”计算”按钮提示”请填入一个在1和31之间的整数”请填入一个在1和31之间的整数日期在D3中表3: 较为合理的有效等价类的划分等价类年份月份日期有效等价类Y1:1800年份2050, 且为闰年M1: 5、 7、 10、 12D1:1日期28Y2:1800年份2050, 且为非闰年M2:2、 4、 6、 8、 9、 11D2:29M3:1D3:30M4:3D4:31表4: 有效等价类测试用例ID输入日期(年-月-日)操作步骤预期输出(年-月-日)实际输出(年-月-日)ND-0071850-1-1输入年月日, 点击”计算”按钮1849-12-311849-12-31ND-0081
7、850-3-29同上1850-3-28.1850-3-28.ND-0091850-5-30同上1850-5-291850-5-29ND-0101850-11-31同上输入日期不合法的合理提示The month 11 Can not have 31 days.ND-0111900-1-29同上1900-1-281900-1-28ND-0121900-3-30同上1900-3-291900-3-29ND-0131900-5-31同上1900-5-301900-5-30ND-0141900-11-1同上1900-10-311900-10-31ND-015 -1-30同上 -1-28 -1-28ND-
8、016 -3-31同上 -3-30 -3-30ND-017 -5-1同上 -4-30 -4-30ND-018 -11-29同上 -11-28 -11-28ND-019 -1-31同上 -1-30 -1-30ND-020 -2-1同上 -1-31 -1-31ND-021 -5-29同上 -5-28 -5-28ND-022 -11-30同上 -11-29 -11-292.2.2边界值法根据preday的有效输入日期能够设置边界值法的测试用例取值如下, 年份: 1800、 1801、 2049、 2050月份: 1、 2、 11、 12日期: 1、 2、 30、 31此时, 构成的边界值法测试用例如
9、表5所示。表5: 边界值法测试用例ID输入日期(年-月-日)操作步骤预期输出(年-月-日)实际输出(年-月-日)ND-0231800-1-1输入年月日, 点击”计算”按钮输入日期超出范围的合理提示Reach the min date.ND-0241800-2-1同上1800-1-311800-1-31ND-0251800-11-30同上1800-11-291800-11-29ND-0261800-12-31同上1800-12-301800-12-30ND-0271801-1-2同上1801-1-11801-1-1ND-0281801-2-30同上输入日期不合法的合理提示The month 2
10、Can not have 30 days.ND-0291801-11-31同上输入日期不合法的合理提示The month 11 Can not have 31 days.ND-0301801-12-1同上1801-11-301801-11-30ND-0312049-1-30同上2049-1-292049-1-29ND-0322049-2-31同上输入日期不合法的合理提示The month 2 Can not have 31 days.ND-0332049-11-1同上2049-10-312049-10-31ND-0342049-12-2同上2049-12-12049-12-1ND-035205
11、0-1-31同上2050-1-302050-1-30ND-0362050-2-1同上2050-1-312050-1-31ND-0372050-11-2同上2050-11-12050-11-1ND-0382050-12-30同上2050-12-292050-12-292.2.2错误推测法错误推测法是基于测试人员的经验和直觉来推测系统中可能存在的各种缺陷, 有针对地设计测试用例的方法。错误推法的基本思想是列举出系统中所有可能的缺陷和容易发生缺陷的特殊情况, 并根据她们选择测试用例。程序preday错误推测法测试用例设计如表6所示。表6: 错误推测法测试用例ID输入日期(年-月-日)操作步骤预期输出
12、(年-月-日)实际输出(年-月-日)备注ND-039无无所有的接文本框都清零如图1Ver1-Bug0001ND-0401800-12-0输入年月日, 点击”计算”按钮无1800-11-30Ver1-Bug0002ND-0411989-8-1同上1989-7-311989-7-30Ver1-Bug0003ND-0421800-1-1同上最小输入日期的合理提示输出”Reach the min date.”经过ND-0432050-12-31同上2050-12-302050-12-30经过ND-044 -3-1同上 -2-29 -2-29经过ND-045 -0-0同上无 -1-29Ver1-Bug0
13、0042.3 黑盒软件测试用例的执行2.3.1 Ver1-Bug0001运行程序后, 界面上的年、 月、 日输入框内的数据没有清空。如图1所示: 2.3.2 Ver1-Bug0002输入日期1800-12-0后, 会跳出输入日期不合法提示的警告信息, 如图2所示, 点击确定后能得到前一天的日期并显示在对话框内, 如图3所示: 2.3.3 Ver1-Bug0003输入1989年8月1日后点击确定按钮后显示的日期是1989-7-30, 实际上7月是有31天的, 即程序显示的日期不正确, 程序运行如图4所示: 2.3.3 Ver1-Bug0004输入日期 -0-0后, 会跳出”请填入一个在1和12之
14、间的整数”的警告信息, 如图5所示, 点击确定后能在对话框内显示 1-29, 如图6所示: 图1图2图3图4图5图62.4 软件缺陷报告的设计 缺陷报告缺陷名称: 显示错误的日期 缺陷编号ID: Ver1-Bug0003报 告 人: 曹 洪 报告时间: -11-3部 门: 营业部 客服B组发 现 人: 曹 洪 发现时间: -11-1部 门: 泉海潮公司发现场所: 泉海潮公司 软件工具实验室501 软件系统名: preday 软件版本: preday 1.0版发生阶段: 用户使用再现率: 100%严重级: 高优先级: 高处理决定决定人: 曹 洪 -11-3, 缺陷报告提交给软件开发部门, 限 -
15、11-5 18:00前修复。 -11-4上午, 质保部门修错验证测试; -11-4 下午, 与其它修复软件一起提交给版本发布部门 -11-5, 版本发布部门作为升级版Ver1.0SP1交付给用户。缺陷现象输入日期是1989-8-1, 点击确定按钮后显示的日期是1989-7-30, 实际上7月是有31天的, 即程序显示的日期不正确, 程序运行如图4所示: 缺陷再现步骤1、 在线数据d:predayBugVer1Ver1-Bug0003Ver1-Bug0003.txt2、 输入数据3、 点击【计算】按钮2.5 软件缺陷修正报告的设计修错报告缺陷名称: 显示错误的日期 缺陷编号ID: Ver1-Bu
16、g0003报 告 人: 曹 洪 报告时间: -11-4部 门: 软件开发部 preday 项目组修 错 人: 宫毕克 修错时间: -11-4部 门: 软件开发部 preday 项目组1.缺陷原因表面原因: 将7月的天数错误的设置为30天, 实际应是31天。实质原因: 在设置日期为1、 月份为8时, 选择处理的逻辑错误。2.缺陷对策重新设置8月1日的逻辑处理。3.对策函数名predayDlg.cpp的void Preday1( const int& year, const int& month, const int& day, CString& strpreday )修正记号: Ver1-Bug
17、00034.缺陷产生阶段编码5.修正后结果2.6 白盒软件测试用例的设计修正的代码: if(month = 5 | month = 7 | month = 10 | month = 12)preday = 30;premonth = month - 1;else if (month = 3)premonth = month -1;if(isLeapYear(year)preday = 29;elsepreday = 28;else if(month = 1)if( year = 1800 )AfxMessageBox( Reach the min date.n );bValid = false
18、;elsepreday = 31;premonth = 12;preyear = year - 1;elsepreday = 31;premonth = month -1;2.6.1语句覆盖利用语句覆盖设计测试用例时应保证程序的每一条可执行语句至少执行一次。从程序图上看, 其实等同于节点覆盖。语句覆盖率的计算方式如下: 语句覆盖率 = 至少被执行一次的语句数量/可执行的语句总数进行白盒测试的程序段的流程图如图2.6.1所示, 开始此段程序的条件是日期为1, 即在设计测试用例时所有的日期都必须为1时程序运行时才能运行选择的这段程序。语句覆盖的测试用例如表2.6.1所示, 表中经过的路径为图2.6
19、.1中所示的路径。图2.6.1 逻辑覆盖的流程图表2.6.1 语句覆盖的测试用例设计ID输入预期输出经过路径语句覆盖年份月份日期年-月-日LC-0011989511989-4-30A16.67LC-0021980311980-2-29BCD16.67LC-003 31 -2-28BCE16.67LC-004180011Reach the min date.BFGH16.67LC-0051801111800-12-31BFGI25LC-0061988611988-5-31BFJ16.672.6.2判定覆盖判定覆盖又称分支覆盖, 其含义是: 设计测试用例时应保证程序中每个判定节点的取真和去假分支至
20、少执行一次。由于判定节点并非只有二值情况, 对于多分支的情况, 判定覆盖的含义为: 测试用例的设计应保证程序中每个判定节点取得每种可能的结果至少一个。从流程图来看, 判定覆盖等同于边覆盖。判定覆盖率的计算公式如下: 判定覆盖率 = 判定结果被评价的次数 / 判定结果的总数 判定覆盖的测试用例设计ID输入预期输出经过路径判定覆盖年份月份日期年-月-日LC-00719901211990-11-30A20LC-0081898311898-2-28BCE60LC-009 31 -2-29BCD60LC-010 11 -12-31BFGI80LC-011180011Reach the min date.
21、BFGH80LC-012 111 -10-31BFJ602.6.3条件组合覆盖条件组合覆盖的含义是: 测试用例的设计应满足每个判定节点中所有简单判定条件的各种的组合应至少执行一次。条件组合覆盖率的计算方法如下: 条件组合覆盖率 = 条件操作数值至少被评价一次的数量 / 条件操作数值的所有组合总数条件组合覆盖的测试用例设计表2.6.3, 其相应测试用例的简单判定条件的判定如简单判定条件表。表: 2.6.3 条件组合覆盖的测试用例ID输入预期输出条件组合覆盖率年份月份日期年-月-日LC-013 51 -4-3012.5LC-014 71 -6-3025LC-01520331012033-9-303
22、7.5LC-016 121 -11-3050LC-0171866311866-2-2862.5LC-0181804311804-2-2962.5LC-0191800111800-4-3087.5LC-0201999111999-4-3087.5简单判定条件判定表ID简单判定条件Month=5Month=7Month=10Month= 12Month=3Month=1Year=1800isLeapYear(year)LC-013TLC-014FTLC-015FFTLC-016FFFTLC-017FFFFTFLC-018FFFFTTLC-019FFFFFTTLC-020FFFFFTF2.7 黑盒回
23、归测试用例的设计 验证软件缺陷的修正验证人: 曹洪验证版本: Ver1.0SP11、 使用发生软件缺陷的测试用例( 1989-8-1) 输出结果: preday is: 1989-7-31.判定: OK输入日期1989-8-1。点击计算按钮, 得到结果。2、 做回归测试-检证因修错并未破坏原来正确的部分发生Ver1-Bug0003错误的原因是再设计8月1日的日期时逻辑处理错误, 再选择回归测试的测试用例是主要是针对日期为1 , 月份为7或不为7、 年份任意的日期进行测试, 测试用例设计如下表: 回归测试测试用例表ID输入日期操作步骤预计输出实际输出备注HG-0011989-8-1输入年月日,
24、点击”计算”按钮1989-7-311989-7-31经过HG-0021999-8-1同上1999-7-311999-7-31经过HG-0032050-8-1同上2050-7-312050-7-31经过HG-0041800-8-1同上1800-7-311800-7-31经过HG-0051801-1-1同上1800-12-311800-12-31经过HG-0061804-2-1同上1804-1-311804-1-31经过HG-0071804-3-1同上1804-2-291804-2-29经过HG-0081806-3-1同上1806-2-281806-2-28经过HG-0091888-4-1同上1888-3-311888-3-31经过HG-0101900-5-1同上1900-4-301900-4-30经过HG-0111945-6-1同上1945-5-311945-5-31经过HG-0121956-7-1同上1956-6-301956-6-30经过HG-0131999-9-1同上1999-8-311999-8-31经过HG-014 -10-1同上 -9-30 -9-30经过HG-0152032-11-1同上2032-10-312032-10-31经过HG-0162036-12-1同上2036-11-302036-11-30经过
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100