第十五届蓝桥杯
软件测试国赛模拟赛六
(全部内容文件在本账号的资源中)
【考生须知】
考试开始后,点击【下载附件】下载zip压缩包形式的附件,将压缩包进行解压缩,压缩包中包含Java和Python的题目文件夹,选手选择擅长的语言参加考试。
选手进入对应的Java/Python文件夹查看赛题和答案规则,每个文件夹中包含:被测系统、赛题PDF、答案提交文件夹、学生源码包、附录。
选手以最后一次提交的答案为准,如修改答案,需要下把上次提交的答案文件删除, 再次提交正确的答案。
选手必须通过浏览器方式提交自己的答案,通过其他位置或其它方式提交的答案无效。
考试时长为4个小时,请在考试开始后的4个小时内提交答案,超过4个小时将无法提交,在考试过程中,请不要关闭考试系统。
试题包含“功能测试”、“自动化测试”和“单元测试”三种题型。
功能测试题:根据题目要求,对指定的功能模块进行测试用例的设计,通过测试发现系
统模块中存在的缺陷,并把测试用例的结果和缺陷报告分别填写到指定的EXCEL文档中,保存在指定的目录下。
自动化测试题:要求选手根据题目要求,对指定功能模块进行自动化代码的实现,并把代码文件按照指定的名称,保存在指定的目录下。
单元测试题:要求选手根据题目要求,对指定的代码程序设计单元测试用例,完成测试代码,并把代码文件按照指定的名称,保存在指定的目录下。
注意 1:在自动化测试和单元测试题目中,可以通过Java语言和Python语言实现测试代码,二选一即可。如果同时提交了两种语言的答案,则默认以Java语言的答案作为最终判分依据。
注意 2:自动化测试和单元测试也可以选择不同的开发语言进行编码。
题目I:功能测试题目
本题总分:70 分
【前期准备】
在浏览器地址栏中输入被测系统访问地址:
- 访问地址:https://shop2.yiovo.com/store/#/passport/login
- 用户名:admin
- 密码:yinghuo
注意:如无法登录,请联系监考老师,由监考老师联系竞赛中心解决。
-
- 功能测试题目1(场景法设计测试用例)(满分 12 分)
【题目描述】
请使用 场景法 对【登录】功能进行测试用例的设计,请设计 5 条测试用例达到该方法的有效覆盖。并把测试用例填写在指定的 【测试用例模版.xlsx】用例文件中的【题目1-场景法测试用例】中,如下图所示:
【场景法概念】
场景法 就是模拟用户操作软件时的场景,主要用于测试系统的业务流程,软件作是由事件触发来控制流程的,事件触发时的情复就形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流
场景法一般包含 基本流 和 备选流,从一个流程开始,通过描述经过的路径来确定测试用例的过程,经过遍历所有的基本流和备选流来完成整个场景
- 基本流:也叫有效流或正确流,主要是模拟正确的业务操作过程的情景
- 备选流:也叫无效流或错误流,主要是模拟无效的业务操作过程的情景
【功能模块】
- 一级功能:系统首页
- 二级功能:登录模块
【功能截图】
【需求描述】
功能点 | 需求描述 |
用户名 | 用户名为admin |
密码 | 密码为yinghuo |
【判分规则】
本题满分 12 分(主要考察 场景法 测试用例的设计思路,会从 用例覆盖度 和编写规范 两个方面进行判分。)
- 用例覆盖度:每覆盖 1 条用例得 2 分,最高得 12。
- 编写规范:按照模板步骤填写相关内容,共 3 个步骤,每一个步骤占 1 分,共 3 分。
【答案提交】
答案完成后,请把用例填写到测试用例模版.xlsx文件的【题目1-场景法测试用例】中,并把文件放到【答案提交】文件夹中。【答案提交】文件夹请自行在本地创建。
-
- 功能测试题目2(综合设计测试用例)(满分 18 分)
【题目描述】
请对【商品管理】>【商品列表】功能进行测试用例设计,请设计合适的用例达到该模块的有效覆盖。并把用例填写在指定的【测试用例模板.xlsx】用例模板中的【题目2-测试用例模板】中,如下图所示:
【功能模块】
- 模块名称:商品管理
- 功能名称:商品列表
【需求描述】
序号 | 功能类别 | 功能点 | 需求描述 |
1 | 基本信息 | 商品分类 | 不能为空,读取商品分类列表,可以多选,至少1个分类,不能超过7个分类,只测试能否正确跳转至【商品分类】页面 |
2 | 商品编号 | 文本框,不能重复,30 位字符固定长度 | |
3 | 商品名称 | 文本框,不能为空,2-50 位字符长度 | |
4 | 商品图片 | 上传控件,不能为空,最多上传10张, 可拖拽图片调整顺序, 第1张将作为商品首图 | |
5 | 运费模版 | 不能为空,读取运费模版列表,只测试能否正确跳转至【运费模版】页面 | |
6 | 商品状态 | 单选,不可为空,默认【上架】 | |
7 | 商品排序 | 文本框,不可为空,只能输入数字,数字越小排序越靠前 | |
8 | 提交 | 按钮,提交跳转到“商品详情”功能类别 | |
1 | 规格/库存 | 规格类型 | 下拉选择框,下拉选项删除 |
2 | 商品规格 | 规格名称:文本框,1-20位字符长度 规格值:文本框,1-20位字符长度 预览图:上传控件,最多上传10张, SKU编码:不能重复,30 位字符固定长度 | |
3 | 商品价格 | 文本框,不可为空,只能输入数字,最低0.01 | |
4 | 划线价 | 文本框,只能输入数字,最低0.01 | |
5 | 当前库存数量 | 文本框,不可为空,只能输入正整数 | |
6 | 商品重量 | 文本框,不可为空,只能输入正数 | |
7 | 库存计算方式 | 单选,不可为空,默认【下单减库存】 | |
8 | 提交 | 按钮,提交跳转到“规格/库存” 功能类别,验证“基本信息”功能类别 | |
1 | 商品详情 | 商品详情 | 文本编辑器,不可为空 |
2 | 提交 | 验证“基本信息”、 “规格/库存”功能类别 | |
1 | 更多设置 | 商品卖点 | 文本框,1-100位字符长度 |
2 | 服务与承诺 | 读取服务分类列表,可以多选,不能超过7个分类,只测试能否正确跳转至【服务分类】页面 | |
3 | 初始销量 | 文本框,只能输入正整数 | |
4 | 积分赠送 | 单选,不可为空,默认【开启】 | |
5 | 积分抵扣 | 单选,不可为空,默认【开启】 | |
6 | 会员折扣 | 单选,不可为空,默认【开启】 | |
7 | 会员折扣设置 | 单选,不可为空,默认【默认等级折扣】 | |
8 | 提交 | 验证“基本信息”、 “规格/库存”、“商品详情”功能类别 | |
1 | 按钮 | 创建商品 | 进入【新增页面】 |
2 | 编辑 | 进入【编辑页面】 | |
3 | 删除 | 删除功能 | |
1 | 检索 | 商品名称 | 文本框,2-50 位字符长度 |
2 | 商品编码 | 文本框,30 位字符固定长度 | |
3 | 商品分类 | 读取商品分类列表,选1个分类 |
【功能截图】
【判分规则】
本题满分 18 分(主要考察测试用例的设计思路,会从用例覆盖度和编写规范两个方面进行判分。)
1.用例覆盖度:每覆盖 1 条用例得 1 分,最高得 12 分。
2.编写规范:按照模板的说明进行规范填写,规范最高得 6 分。
3.如果考生设计了预定之外的有效测试用例,会在上述用例覆盖度上 额外加分,加分不超过最高得分。
【答案提交】
答案完成后,考生需把【测试用例.xlsx】文件保存到【答案提交】文件夹中等待和其他答案一起提交。
1.3 功能测试题目 3(编写缺陷报告)(满分 40 分)
利用所学知识,请对点狮后台管理系统中的如下 2 个页面进行测试,包括但不限于功能缺陷和易用性界面缺陷。 并把发现的缺陷填写在指定的【缺陷报告模版.xlsx】缺陷报告模板中。
【功能1:商品列表】
【功能2:创建商品】
【功能3:编辑商品】
【功能4:删除】
【判分规则】
本题满分 40 分(主要考察缺陷发现的能力,会从 预埋缺陷覆盖度 和 编写规范 两个方面进行判分。)
1.缺陷覆盖度:每覆盖 1 条 1 级缺陷得 2.5 分,每覆盖 1 条 2 级缺陷得 1 分,最高 34 分。
2.编写规范:按照模板的说明进行规范填写每一项,规范最高得 6 分。
3.如果考生发现了预埋之外的有效 Bug,会在上述缺陷覆盖度上 额外加分,加分不超过最高得分。
【答案提交】
答案完成后,考生需把 缺陷报告模版.xlsx 文件放到【答案提交】文件夹中,等待最终和自动化测试答案和单元测试答案一起提交。
题目 II:自动化测试题目
本题总分:50 分
【前期准备】
在浏览器地址栏中输入被测系统访问地址:
- 访问地址:https://nightly.getrebuild.com/user/login
- 用户名:admin
- 密码:admin
注意:如无法登录,请联系监考老师,由监考老师联系竞赛中心解决。
【题目描述】
请使用 Python 编程语言,结合 PO 模式(Page Object Model 的简写 页面对象模型 )思想 ,使用 Selenium 自动化测试工具补全如下多个 Python 类文件中 //TODO 处缺失的代码:
- Page1:login_page.py ,“登录”页面
- Page2:query_list_page.py,
- Page3:add_sort_page.py,
- Page4:quit_page,
- shop_test.py:测试用例代码文件
请按照用例步骤,在测试用例 shop_test.py 文件中需通过调用 3 个 Page 类中的方法完成自动化测试代码。
【用例步骤】
具体的操作步骤如下:
第 1 步:输入被测系统网址,请查看部署成功的被测系统网址(注意不要忘记在代码中输入网址)。
第 2 步:在【登录】页面 login_page.py 中依次进行如下操作:
- 输入【用户名】方法
- 输入【密码】方法
- 点击【登录】按钮的方法
以上 3个操作顺序如下图所示:
第 3 步:登录成功后,在 【商品列表】页面 query_list_page.py 中依次完成以下操作代码:
- 点击【商品管理】按钮
- 输入【商品名称】为三星
- 选择【商品分类】为手机数码/三星
- 点击【搜索】按钮
- 点击【删除】按钮
- 点击【取消】按钮
以上 6 个操作顺序,如下图所示:
第 4 步:在【商品分类】页面 add_sort_page.py 中,完成以下操作代码:
- 点击【商品分类】按钮
- 点击【新增】按钮
- 输入【分类名称】为手机
- 选择【上级分类】为手机数码
- 点击【状态】为显示
- 输入【排序】为100
- 点击【取消】按钮
以上 7 个操作顺序,如下图所示:
第 5 步:在【商品分类】页面 quit_page.py 中,完成以下操作代码:
- 点击【系统管理员】
- 点击【退出登录】按钮
以上 2 个操作顺序,如下图所示:
【题目要求】
- 考生可选择自己擅长的元素定位方式,推荐使用 xpath 或 css 定位方式。
- 操作中请使用合适的等待方法,以免脚本运行失败。
- 代码注释请使用 # 。
- 在测试用例的类文件中,请调用 Page 类文件中的方法来完成测试用例。
- 不要修改文件名称及原有代码。
【判分标准】
- 2 个 Page 类中每个方法的实现,每一个方法占 2 分,总分 24 分。
- shop_test.py 测试用例中分别从规范、测试用例覆盖度和断言 3 个方面进行判分,共 26 分。
- 测试用例(共 24 分):
- 共 10 个关键用例步骤,每个步骤 2 分,共 20 分。(如用例步骤失败,则剩余用例不得分。)
- 共 2 处断言,每个断言 2 分,共 4 分。 如断言运行失败,不得分;运行成功的断言,按通过个数给分。
- 如整个项目代码编译失败,则扣除 Page 中方法分和测试用例分数,但不影响规范得分。
题目 III:单元测试题目
本题总分:30 分
【题目描述】
请使用“基本路径覆盖法”为被测源代码 MaxSubstrings类设计单元测试用例,并在 MaxSubstringsTest类中完成单元测试代码。
基本路径覆盖法:每个分支每个判断至少判断一次
【源代码功能】
源代码实现的功能是:计算填充后01串中互不重叠的"00"和"11"子串的最大数量。
【题目要求】
- 请使用 基本路径覆盖法针对被测方法设计 3 条测试用例,使被测代码的基本路径覆盖率达到 100% ;
- 请使用 Java 语言单元测试框架 Junit 编写测试代码;
- 测试代码请直接在提供的类文件 MaxSubstringsTest.java 中编写;
- 在测试中用到的断言 Assert 类务必使用 org.junit 包中的 Assert ;
- 请不要修改所提供的文件名称,否则将会酌情判 0 分。
【工具操作】
- 请点击下载 单元测试 Java 源码包 到本地电脑上,包括如下 2 个文件:
- 被测源码文件 MaxSubstrings.java
- 测试代码文件 MaxSubstringsTest.java
- 请把上述 2 个文件复制到 Eclipse 工具中对应的位置,然后开始填写单元测试代码。
【判分标准】
本题满分 30 分,具体分值分布如下:
- 代码规范:未出现 Assert 断言,扣 5 分。
- 测试用例覆盖率:25 分。
- 运行结果:如果运行不成功,则扣除全部测试用例覆盖率分数,但不影响代码规 范得分。
【答案提交】
完成编码后,单元测试代码文件 MaxSubstringsTest.java 即为我们需要的答案, 请把该文件复制到本地的【答案提交】文件夹中。
【全部答案提交要求】
如果考生的【自动化测试】题目和【单元测试】题目均采用 java语言编写,则按 如下步骤提交答案:
第 1 步:请把所有答案放到【答案提交】文件夹中,需要提交的答案包括如下这些文件,如下图所示:
第 2 步:把【答案提交】文件夹打成 zip 压缩包,如下图所示:
答案注意事项:
- 做题时,单元测试和自动化测试可以选择不同的语言,请注意提交正确的答案文件。
- 代码类文件中只填写 TODO 部分的代码,原有代码不要改动。
- 使用我们提供的 eclipse 代码工具,否则可能会因为环境不同导致代码报错。
- 源码包中的文件,一定要按图示粘贴到指定的包下面,包路径错误可能会导致判 0 分。
- 提交答案时请不要修改文件的编码方式,不要修改文件名称。
- 一定确保程序代码可以正确编译并运行,否则判 0 分。