资源简介 2023年全国职业院校技能大赛软件测试赛题第9套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:根据下列流程图编写程序实现相应分析处理并显示结果。返回文字“x=a*a*b的值:”和x的值;返回文字“x=a-b的值:”和x的值;返回文字“x=a+b的值:”和x的值。其中变量a、b均须为整型。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用startsWith判断期望结果返回文字和实际返回文字是否一致。题目2:邮箱注册需要填写邮箱地址和密码。其中要求邮箱格式“登录名@主机名.域名”,登录名为5个字母,主机名固定为下面2个163、126,域名为com或。密码为6个(含6)以上数字组成。填写正确则提示“信息正确”,否则根据实际情况提示“**不符合要求”(**为邮箱地址或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。题目3:企业根据利润提成来发放奖金。将利润金额划分6个档位来提成。档位一:利润低于或等于10万元部分,提成10%。档位二:利润高于10万元并且低于或等于20万元部分,提成7.5%。档位三:利润高于20万元并且低于或等于40万元部分,提成5%。档位四:利润高于40万元并且低于或等于60万元部分,提成3%。档位五:利润高于60万元并且低于或等于100万元部分,提成1.5%。档位六:利润高于100万元部分,提成1%。编写程序根据输入的当月利润x计算出最终得到的总提成,输入利润已万为单位,x为整数。返回结果按照档次输出“总提成:y万”,y为计算的提成值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中is断言判断输出文字期望结果值和实际返回值是否一致。题目4:根据下列流程图编写程序实现相应分析处理并显示结果。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待3秒并将浏览器窗口最大化;2. 引入By方法类;3. 通过ID属性定位用户名输入框,并输入用户名XTGLY;4. 通过TAG_NAME属性复数形式定位密码输入框,并输入密码123456;5. 通过CLASS_NAME方法定位登录按钮并点击登录按钮;6. 通过TAG_NAME复数方法定位商品管理页面的新增按钮,并使用click()方法进行点击;7. 通过ID方法定位商品分类下拉框;8. 通过Select类中的by_value方法选择商品分类为“测试”;9. 通过TAG_NAME属性复数形式定位商品品牌下拉框;10. 通过Select类中的by_visible_text方法选择商品品牌为“测试”;11. 使用get_screenshot_as_file对页面进行截图操作(命名为test_Select01.png,存放在D盘根目录下)。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过NAME方法定位用户名输入框,通过CLASS_NAME方法复数形式定位密码输入框并输入账号和密码(XTGLY/123456),通过XPATH方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过ID方法定位用户名输入框,通过CLASS_NAME方法定位密码输入框并输入账号和密码(XTGLY/123456),通过TAG_NAME定位登录按钮并点击,通过LINK_TEXT方法定位并点击“供应商信息”按钮,使用XPATH点击第一条数据的查看按钮,通过window_handles方法将标签页切换到第二个标签,点击查看供应商弹窗右上角的X,使用get_screenshot_as_file对页面进行截图操作;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品分类名称 预期结果商品分类名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过ID属性定位用户名输入框,并输入用户名XTGLY;7. 通过NAME属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过LINK_TEXT方法进行定位,使用click()方法点击“商品分类”按钮;10. 通过XPATH方法点击“新增”按钮;11. 通过CLASS_NAME方法定位商品分类名称输入框并使用数据驱动输入“商品分类名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过LINK_TEXT方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用CLASS_NAME方法封装用户名输入框,使用ID方法封装密码输入框、使用TAG_NAME方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品单位添加页面元素(使用LINK_TEXT方法封装商品单位按钮,使用CSS方法封装新增按钮,使用XPATH方法封装商品单位名称输入框,使用CSS方法封装保存按钮,封装点击商品单位按钮、点击新增按钮、输入商品单位名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写5条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品单位名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:ProductAdd。 脚本内容:系统管理员登录、进行新增商品操作。 具体要求如下: 所有脚本存放在Action。商品名称前2位为固定值SP,固定值后面的字符可任意设置。新增商品需要添加图片,图片自行准备。对新增商品保存操作设置事务,事务名称:T_SPAdd。设置检查点,使用新增商品成功,服务器响应正文内容中的code键值对作为检查点。截图要求:一共1张图:①Action中新增商品保存操作部分截图。(2)脚本二: 脚本名称:StockAdd。 脚本内容:仓库主管登录、进行新增盘点单操作。具体要求如下: 所有脚本存放在Action。仓库任意选择,商品任意选择一种即可。对新增盘点单保存操作设置事务,事务名称:T_StockAdd。设置检查点,使用新增盘点单成功,服务器响应正文内容中的code键值对作为检查点。在新增盘点单保存操作前添加集合点,集合点名称:R_StockAdd。截图要求:一共1张图:①Action中新增盘点单保存操作部分截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 对商品名称进行修改,前4位为固定值SPHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增商品业务。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增盘点单业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数:参数名称:uniNo,参数类型:唯一编号,编号从1开始,每个Vuser的块大小为100,编号格式:%04d。 新建参数:参数名称:VuID,参数类型:Vuser ID,文本格式:%s。 对商品名称进行参数化设置:商品名称前4位固定值SPCS,固定值后面接参数VuID和uniNo。 对采购价进行参数化设置:参数名称:price1,参数类型:随机数字,随机范围:100-200,数字格式:%lu。 对销售价进行参数化设置:参数名称:price2,参数类型:随机数字,随机范围:300-600,数字格式:%lu。 对商品图片进行参数化:参数名称:file,参数类型:文件,准备10张图片进行参数化。若需要关联,使用关联函数web_reg_save_param_ex(),参数名称photo。 脚本迭代次数3次。截图要求:一共2张图,分别为:①添加商品图片操作和图片参数列表截图;②新增商品保存操作和参数列表截图。(2)脚本二参数化具体要求如下: 对保存操作进行参数化设置:点击保存或者保存并提交按钮。参数名称:status,参数类型:文件,每次迭代顺序取值。 脚本迭代次数3次。截图要求:一共1张图:①新增盘点单保存操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增商品事务前添加思考时间20秒,商品名称前4位固定值修改为SPCJ。 脚本修改:新增盘点单集合点前添加思考时间30秒。 选择新增商品和新增盘点单两个脚本进行场景设置。 用户分配选择用户组模式。场景计划方式选择场景,运行模式选择实际计划。 集合点策略:当5个用户到达集合点时释放,超时时间10秒。 全局计划:在每个虚拟用户运行前将其初始化;启动10个用户(每5秒启动1个)执行3分钟,执行完成后停止所有用户(每5秒停止1个),如此启停循环3次。截图要求:一共2张图,分别为:①场景设计界面截图;②集合点信息及策略截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Running Vusers - Hits per Second截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:PurAndSale。 测试计划名称:PurAndSale。测试计划下添加两个线程组:(1)线程组一: 线程组名称:PurAdd。 线程组内容:采购专员登录、进行新增采购订单、保存并提交操作。具体要求如下: 仓库、供应商任意选择,商品任意选择一种即可。采购订单保存操作请求名称:采购订单保存;采购订单提交操作请求名称:采购订单提交。对采购订单保存并提交操作设置事务,事务名称:T_PurAdd。设置检查点,使用提交操作成功服务器的响应正文内容作为检查点,检查点名称Reg_PurAdd。截图要求:一共1张图:①新增采购订单保存操作截图。(2)线程组二: 线程组名称:SaleAdd。 线程组内容:销售专员登录、进行新增销售订单、保存并提交操作。具体要求如下: 仓库、客户任意选择,商品任意选择一种即可。销售订单保存操作请求名称:销售订单保存;销售订单提交操作请求名称:销售订单提交。对销售订单保存并提交操作设置事务,事务名称:T_SaleAdd。设置检查点,使用销售订单保存成功服务器响应正文内容中的msg值作为检查点,检查点名称Reg_SaleAdd。截图要求:一共1张图:①新增销售订单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增采购订单保存并提交业务。 保存并提交操作若需要关联,使用正则表达式提取器,参数名称PurId。截图要求:一共1张图:①新增采购订单提交操作截图。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增销售订单保存并提交业务。 保存并提交操作若需要关联,使用边界提取器,参数名称submitId。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId、centerName两个字段,centerId输入系统预置的10条仓库id值,centerName输入对应的仓库名称值。 对仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称:centerId,仓库名称参数名称:centerName。 对采购数量进行参数化设置:使用Random函数实现参数化,范围:200-500。 对实际采购价进行参数化设置:使用Random函数实现参数化,范围:50-100。 脚本迭代次数3次。截图要求:一共1张图:①新增采购订单保存操作截图。(2)线程组二参数化具体要求如下: 新建参数化文件customer.dat,文件中包含customerId、customerName两个字段,customerId输入系统预置的10条客户id值,customerName输入对应的客户名称值。 对客户进行参数化设置:使用CSV数据文件设置实现参数化,使用customer.dat文件。客户ID参数名称:customerId,客户名称参数名称:customerName。 对销售数量进行参数化设置:使用Random函数实现参数化,范围:50-100。 对实际销售价进行参数化设置:使用Random函数实现参数化,范围:150-300。 脚本迭代次数3次。截图要求:一共1张图:①新增销售订单保存操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增采购订单保存操作前添加思考时间20秒;新增销售订单保存操作前添加思考时间30秒;其他步骤添加思考时间5秒。 场景配置: 新增采购订单场景配置:取样器错误后执行动作:继续;线程数:20;Ramp-Up时间:20秒;持续时间:10分钟;启动不延迟。 新增销售订单场景配置:同新增采购订单场景。 使用非GUI模式运行。截图要求:一共2张图,分别为:①新增销售订单场景配置截图;②非GUI运行界面截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Response Times Over Time截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1.登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品品牌添加接口描述如下:接口功能:提供商品品牌新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品品牌名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品分类修改接口描述如下:接口功能:提供商品分类修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/category/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品分类名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/category/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。2023年全国职业院校技能大赛软件测试赛题第4套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:根据下列流程图编写程序实现相应分析处理并显示结果。返回结果“a=x:”(x为2、3或4);其中变量x、y均须为整型。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断期望结果值和实际返回值是否一致。题目2:根据输入的年份和月份判断月份的天数。若月份不在有效范围之内,应提示:“月份输入不正确。”。月份不为2月,根据输入月份输出对应的月份天数。月份为2月,根据年份判断如为普通闰年,输出2月份正确天数;如为世纪闰年,输出2月份正确天数;不为闰年输出2月份天数。返回结果格式:“year年month月份的天数是days天。”year、month为传入的值,days为判断得到的天数值。其中变量year、month均须为正整数。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断返回期望结果和实际返回是否一致。题目3:填写快递单时通常需要确定接收人的姓名、手机号和地址。其中要求手机号是 11 位数字字符,地址为字母开头的 10个(含10)以内字母或字母数字共同组成。填写正确则提示“OK”,否则根据实际情况提示“**不符合要求”(**为手机号或地址),退出。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。题目4:输入小写的字符串。如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足条件覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待5秒并将浏览器窗口最大化;2. 引入By方法类;3. 通过ID属性定位用户名输入框,并输入用户名XTGLY;4. 通过NAME属性定位密码输入框,并输入密码123456;5. 通过CLASS_NAME方法定位登录按钮,使用click()方法点击登录按钮;6. 通过TAG_NAME复数方法定位商品管理页面的新增按钮,并使用click()方法进行点击;7. 通过NAME属性定位图片上传框并使用send_keys方法上传图片(任意选取符合需求要求大小的图片);8. 使用get_screenshot_as_file对页面进行截图操作(命名为test_picture.png,存放在D盘根目录下)。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过TAG_NAME方法复数形式定位用户名输入框,通过TAG_NAME方法复数形式定位密码输入框并输入账号和密码(XTGLY/123456),通过CLASS_NAME方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过CLASS_NAME方法定位用户名输入框,通过NAME方法定位密码输入框并输入账号和密码(XTGLY/123456),通过ID方法定位并点击登录按钮,使用ID方法定位商品管理页面的查询条件中的商品分类下拉框,通过Select类中的by_value方法选择商品分类为“测试”;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品品牌名称 预期结果商品品牌名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过CLASS_NAME属性定位用户名输入框,并输入用户名XTGLY;7. 通过ID属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过PARTIAL_LINK_TEXT方法进行定位,使用click()方法点击“商品品牌”按钮;10. 通过TAG_NAME的复数形式定位并点击“新增”按钮;11. 通过CLASS_NAME方法定位商品品牌名称输入框并使用数据驱动输入“商品品牌名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过CLASS_NAME方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用ID方法封装用户名输入框,使用NAME方法封装密码输入框、使用CLASS方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品品牌添加页面元素(使用LINK_TEXT方法封装商品品牌按钮,使用XPATH方法封装新增按钮,使用XPATH方法封装商品品牌名称输入框,使用CSS方法封装保存按钮,封装点击商品品牌按钮、点击新增按钮、输入商品品牌名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品品牌名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:PurAdd。 脚本内容:采购专员登录、进行新增采购订单、保存并提交操作。具体要求如下: 所有脚本存放在Action。仓库、供应商任意选择,商品任意选择一种即可。对采购订单保存并提交操作设置事务,事务名称:T_PurAdd。设置检查点,使用提交操作成功服务器的响应正文内容作为检查点。截图要求:一共1张图:①Action中新增采购订单保存并提交操作部分截图。(2)脚本二: 脚本名称:InveAdd。 脚本内容:仓库主管登录、进行新增盘点单操作。具体要求如下: 所有脚本存放在Action。仓库任意选择,商品任意选择一种即可。对新增盘点单保存操作设置事务,事务名称:T_InveAdd。设置检查点,使用新增盘点单保存成功,服务器响应正文内容中的code键值对作为检查点。在新增盘点单保存操作前添加集合点,集合点名称:R_InveAdd。截图要求:一共1张图:①Action中新增盘点单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增采购订单保存并提交业务。 保存并提交操作若需要关联,使用关联函数web_reg_save_param_ex(),参数名称submitId。截图要求:一共1张图:①Action中新增采购订单保存并提交操作部分截图。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增盘点单业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId、centerName两个字段,centerId输入系统预置的10条仓库id值,centerName输入对应的仓库名称值。 对仓库进行参数化设置:仓库ID使用参数centerId,仓库名称使用参数centerName,均使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代顺序取值。centerName参数选择列使用按名称方式,取值为centerId相同行。 对采购数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:100-200,数字格式:%lu。 对实际采购价进行参数化设置:参数名称:Price,参数类型:随机数字,随机范围:50-100,数字格式:%lu。 脚本迭代次数3次。截图要求:一共1张图:①新增采购订单保存并提交操作和参数列表截图。(2)脚本二参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId字段,centerId输入系统预置的10条仓库id值。 对盘点仓库进行参数化设置:仓库ID使用参数centerId,使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代随机取值。 脚本迭代次数3次。截图要求:一共1张图:①新增盘点单保存操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增采购订单事务前添加思考时间35秒。 脚本修改:新增盘点单集合点前添加思考时间45秒。 选择新增采购订单和新增盘点单两个脚本进行场景设置。 用户分配选择百分比模式,两个脚本平均分配用户。场景运行模式选择基本计划。 全局计划:总计20个虚拟用户,同时初始化所有虚拟用户,每30秒启动10个,完成前一直运行。新增采购订单循环10次,新增盘点单循环8次。截图要求:一共2张图,分别为:①场景设计界面截图;②新增盘点单循环次数设置界面截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Transaction Summary截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:CusAndPlan。 测试计划名称:CusAndPlan。测试计划下添加两个线程组:(1)线程组一: 线程组名称:CusAdd。 线程组内容:系统管理员登录、进行新增客户操作。具体要求如下: 客户名称前4位为固定值KHMC,联系人前3位为固定值LXR,固定值后面的字符可任意设置。新增客户保存操作请求名称:新增客户保存;对新增客户保存操作设置事务,事务名称:T_CusAdd。设置检查点,使用新增客户成功服务器的响应正文内容作为检查点,检查点名称Reg_CusAdd。在新增客户保存操作前添加集合点,集合点名称:R_CusAdd。截图要求:一共1张图:①新增客户保存操作截图。(2)线程组二: 线程组名称:PlanAdd。 线程组内容:生产专员登录、进行新增生产计划单、保存并提交操作。具体要求如下: 计划生产耗材和计划生产制品新增一行即可,商品任意选择一种。生产计划单保存并提交操作请求名称:保存并提交。对生产计划单保存并提交操作设置事务,事务名称:T_PlanAdd。设置检查点,使用保存并提交操作成功服务器的响应正文内容作为检查点,检查点名称Reg_PlanAdd。在新增生产计划单保存并提交操作前添加集合点,集合点名称:R_PlanAdd。截图要求:一共1张图:①新增生产计划单保存并提交操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 对客户名称进行修改,前4位为固定值KHHF,固定值后面的字符可任意设置。 对联系人进行修改,前4位为固定值LXHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增客户业务。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增生产计划单保存并提交业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 对客户名称进行参数化设置:客户名称前4位固定值KHCS,固定值后面接函数threadNum和time,time函数日期格式:HHmmss,存储结果的变量名:time2。 对联系人进行参数化设置:联系人前4位固定值LXCS,固定值后面接函数threadNum和time2。 对联系电话进行参数化设置:只参数化联系电话的后8位,使用Random string函数生成长度为8位的任意数字字符串。 脚本迭代次数3次。截图要求:一共1张图:①新增客户保存操作截图。(2)线程组二参数化具体要求如下: 对计划耗材数量进行参数化设置:使用Random函数实现参数化,范围:500-1000。 新建参数化文件center.dat,文件中包含centerId、centerCode、centerName三个字段,centerId输入系统预置的10条仓库id值,centerCode输入对应的仓库编号值,centerName输入对应的仓库名称值。 对计划生产耗材仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称centerId,仓库编号参数名称centerCode,仓库名称参数名称centerName。 脚本迭代次数3次。截图要求:一共2张图,分别为:①center.dat文件内容截图;②新增生产计划单保存并提交操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增客户保存操作前添加思考时间45秒;新增生产计划单保存并提交操作前添加思考时间30秒;其他步骤添加思考时间5秒。 新增客户集合点设置:模拟数量:10,超时时间45秒。 新增生产计划单集合点设置:模拟数量:5,超时时间30秒。 场景配置: 新增客户场景配置:取样器错误后执行动作:启动下一进程循环;线程数:10;Ramp-Up时间:20秒;持续时间:10分钟;启动不延迟。 新增生产计划单场景配置:取样器错误后执行动作:继续;线程数:15;Ramp-Up时间:30秒;持续时间:15分钟;启动不延迟。 使用非GUI模式运行。截图要求:一共2张图,分别为:①新增客户集合点设置截图;②新增生产计划单场景配置截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Transactions Per Second截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品品牌添加接口描述如下:接口功能:提供商品品牌新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品品牌名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品分类修改接口描述如下:接口功能:提供商品分类修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/category/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品分类名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/category/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。2023年全国职业院校技能大赛软件测试赛题第8套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:根据下列流程图编写程序实现相应处理,执行j=10*x-y返回文字“j1=:”和计算值,执行j=(x-y)*(10 %7)返回文字“j2=:”和计算值,执行j=y*log(x+10)返回文字“j3=:”和计算值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中startsWith断言判断输出文字结果开头期望结果值和实际返回值是否一致。题目2:根据下列流程图编写程序实现相应分析处理并显示结果。返回结果“a=x:”(x为2、3或4);其中变量x、y均须为整型。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断期望结果值和实际返回值是否一致。题目3:填写快递单时通常需要确定接收人的姓名、手机号和地址。其中要求手机号是 11 位数字字符,地址为字母开头的 10个(含10)以内字母或字母数字共同组成。填写正确则提示“OK”,否则根据实际情况提示“**不符合要求”(**为手机号或地址),退出。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。题目4:根据下列流程图编写程序实现相应分析处理并显示结果。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待5秒并将浏览器窗口最大化;2. 引入By方法类;3. 通过ID属性定位用户名输入框,并输入用户名XTGLY;4. 通过ID属性定位密码输入框,并输入密码123456;5. 使用TAG_NAME方法进行登录提交;6. 通过LINK_TEXT方法定位供应商信息按钮,并使用click()方法点击;7. 通过LINK_TEXT复数定位方法点击页面中第一条数据的查看按钮;8. 通过window_handles方法将标签页切换到第二个标签;9. 增加3秒强制时间等待;10. 使用get_screenshot_as_file对页面进行截图操作(命名为test_handles.png,存放在D盘根目录下);11. 点击查看供应商弹窗右上角的X。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过CLASS_NAME方法定位用户名输入框,通过TAG_NAME方法复数形式定位密码输入框并输入账号和密码(XTGLY/123456),通过NAME方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过NAME方法定位用户名输入框,通过CLASS_NAME方法定位密码输入框并输入账号和密码(XTGLY/123456),通过ID方法定位并点击登录按钮,通过PARTIAL_LINK_TEXT方法定位并点击“供应商信息”按钮;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品单位名称 预期结果商品单位名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过NAME属性定位用户名输入框,并输入用户名XTGLY;7. 通过CLASS_NAME属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过ID方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过LINK_TEXT方法进行定位,使用click()方法点击“商品单位”按钮;10. 通过TAG_NAME的复数形式定位并点击“新增”按钮;11. 通过CLASS_NAME方法定位商品单位名称输入框并使用数据驱动输入“商品单位名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过CLASS_NAME方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用CLASS_NAME方法封装用户名输入框,使用ID方法封装密码输入框、使用TAG_NAME方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品单位添加页面元素(使用LINK_TEXT方法封装商品单位按钮,使用XPATH方法封装新增按钮,使用XPATH方法封装商品单位名称输入框,使用CSS方法封装保存按钮,封装点击商品单位按钮、点击新增按钮、输入商品单位名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写5条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品单位名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:CusAdd。 脚本内容:系统管理员登录、进行新增客户操作。具体要求如下: 所有脚本存放在Action。客户名称前4位为固定值KHMC,联系人前3位为固定值LXR,固定值后面的字符可任意设置。对新增客户保存操作设置事务,事务名称:T_CusAdd。设置检查点,使用新增客户成功,服务器响应正文内容中的code键值对作为检查点。在新增客户保存操作前添加集合点,集合点名称:R_CusAdd。截图要求:一共1张图:①Action中新增客户保存操作部分截图。(2)脚本二: 脚本名称:PlanAdd。 脚本内容:生产专员登录、进行新增生产计划单、保存并提交操作。 具体要求如下: 所有脚本存放在Action。计划生产耗材和计划生产制品新增一行即可,商品任意选择一种。对生产计划单保存并提交操作设置事务,事务名称:T_PlanAdd。设置检查点,使用保存并提交操作成功,服务器响应正文内容中的code键值对作为检查点。在新增生产计划单保存并提交操作前添加集合点,集合点名称:R_PlanAdd。截图要求:一共1张图:①Action中新增生产计划单保存并提交操作部分截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 对客户名称进行修改,前4位为固定值KHHF,固定值后面的字符可任意设置。 对联系人进行修改,前4位为固定值LXHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增客户业务。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增生产计划单保存并提交业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数:参数名称:letter,参数类型:文件,参数值:26个英文字母小写,每次出现随机取值。 新建参数:参数名称:uniNo,参数类型:唯一编号,编号从1开始,每个Vuser的块大小为200,编号格式:%04d。 对客户名称进行参数化设置:客户名称前4位固定值KHCS,固定值后面接2个随机小写字母和参数uniNo。 对联系人进行参数化设置:联系人前3位固定值LXR,固定值后面接2个随机小写字母和参数uniNo。 对联系电话进行参数化设置:只参数化联系电话的后8位,参数名称:phone,参数类型:随机数字,随机范围:1-9999,数字格式:%08lu,每次迭代更新。 脚本迭代次数3次。截图要求:一共1张图:①新增客户保存操作和参数列表截图。(2)脚本二参数化具体要求如下: 对计划制品数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:500-1000,数字格式:%lu。 新建参数化文件center.dat,文件中包含centerId、centerCode、centerName三个字段,centerId输入系统预置的10条仓库id值,centerCode输入对应的仓库编号值,centerName输入对应的仓库名称值。 对计划生产制品仓库进行参数化设置:仓库ID使用参数centerId,仓库编号使用参数centerCode,仓库名称使用参数centerName,均使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代随机取值。centerCode、centerName参数选择列使用按名称方式,取值为centerId相同行。 脚本迭代次数3次。截图要求:一共2张图,分别为:①新增生产计划单保存并提交操作部分截图;②参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增客户集合点前添加思考时间30秒,客户名称前4位固定值修改为KHCJ。 脚本修改:新增生产计划单集合点前添加思考时间40秒。 选择新增客户和新增生产计划单两个脚本进行场景设置。 用户分配选择用户组模式。场景计划方式选择场景,运行模式选择实际计划。 新增客户集合点策略:当5个用户到达集合点时释放,超时时间10秒。 新增生产计划单集合点策略:当80%的虚拟用户到达集合点时释放,超时时间5秒。 全局计划:在每个虚拟用户运行前将其初始化;启动20个用户(每2秒启动1个)执行5分钟,执行完成后停止10个用户(每2秒停止1个)执行5分钟,执行完成后停止所有用户(每2秒停止1个)。截图要求:一共2张图,分别为:①场景设计界面截图;②新增生产计划单集合点信息及策略截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Hits per Second - Throughput截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:ProdAndSale。 测试计划名称:ProdAndSale。测试计划下添加两个线程组:(1)线程组一: 线程组名称:ProdAdd。 线程组内容:系统管理员登录、进行新增商品操作。具体要求如下: 商品名称前2位为固定值SP,固定值后面的字符可任意设置。新增商品保存操作请求名称:新增商品保存;对新增商品保存操作设置事务,事务名称:T_SPAdd。设置检查点,使用新增商品成功服务器的响应正文内容作为检查点,检查点名称Reg_SPAdd。在新增商品保存操作前添加集合点,集合点名称:R_SPAdd。截图要求:一共1张图:①新增商品保存操作截图。(2)线程组二: 线程组名称:SaleAdd。 线程组内容:销售专员登录、进行新增销售订单、保存并提交操作。具体要求如下: 仓库、客户任意选择,商品任意选择一种即可。销售订单保存操作请求名称:销售订单保存;销售订单提交操作请求名称:销售订单提交。对销售订单保存并提交操作设置事务,事务名称:T_SaleAdd。设置检查点,使用销售订单保存成功服务器响应正文内容中的msg值作为检查点,检查点名称Reg_SaleAdd。截图要求:一共1张图:①新增销售订单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 对商品名称进行修改,前4位为固定值SPHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增商品业务。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增销售订单保存并提交业务。 保存并提交操作若需要关联,使用边界提取器,参数名称submitId。截图要求:一共1张图:①新增销售订单提交操作截图。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 对商品名称进行参数化设置:商品名称前4位固定值SPCS,固定值后面接函数threadNum和RandomString,Random string长度:5,生成random string的字符:0123456789。 对采购价进行参数化设置:使用Random函数实现参数化,范围:50-100。 对销售价进行参数化设置:使用Random函数实现参数化,范围:200-300。 脚本迭代次数3次。截图要求:一共1张图:①新增商品保存操作截图。(2)线程组二参数化具体要求如下: 新建参数化文件customer.dat,文件中包含customerId、customerName两个字段,customerId输入系统预置的10条客户id值,customerName输入对应的客户名称值。 对客户进行参数化设置:使用CSV数据文件设置实现参数化,使用customer.dat文件。客户ID参数名称:customerId,客户名称参数名称:customerName。 对销售数量进行参数化设置:使用Random函数实现参数化,范围:50-100。 对实际销售价进行参数化设置:使用Random函数实现参数化,范围:150-300。 脚本迭代次数3次。截图要求:一共1张图:①新增销售订单保存操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增商品保存操作前添加思考时间25秒;新增销售订单保存操作前添加思考时间30秒;其他步骤添加思考时间5秒。 新增商品集合点设置:模拟数量:10,超时时间30秒。 场景配置: 新增商品场景配置:取样器错误后执行动作:继续;线程数:20;Ramp-Up时间:20秒;循环5次。 新增销售订单场景配置:同新增商品场景。新增商品场景运行完成后开始运行。 使用非GUI模式运行。截图要求:一共2张图,分别为:①测试计划截图;②新增销售订单场景配置截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Dashboard-Statistics截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品单位添加接口描述如下:接口功能:提供商品单位新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品单位名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品单位修改接口描述如下:接口功能:提供商品单位修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品单位名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。2023年全国职业院校技能大赛软件测试赛题第10套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2、CentOS系统root账户密码是:123456。3、提供的相关部署文件都存放在CentOS系统/opt目录下。4、安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5、安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6、安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7、应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:根据下列流程图编写程序实现相应处理,程序根据两个输入参数iRecordNum和IType计算x的值并返回。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足基路径覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals断言判断输出结果期望结果值和实际返回值是否一致。题目2:根据输入的三条边值判断能组成何种三角形。三条边为变量a、b、c,范围为1≤边值≤10,不在范围内,提示“输入边值不在范围内”。不满足任意两边之和必须大于第三边,提示“输入边值不能组成三角形”。输入边值能组成三角形,只有2条边相同,显示“能组成等腰三角形”;三条边相等,显示“能组成等边三角形”;边值不满足特殊三角形显示“能组成普通三角形”。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断期望结果值和实际返回值是否一致。题目3:邮箱注册需要填写邮箱地址和密码。其中要求邮箱格式“登录名@主机名.域名”,登录名为5个字母,主机名固定为下面2个163、126,域名为com或。密码为6个(含6)以上数字组成。填写正确则提示“信息正确”,否则根据实际情况提示“**不符合要求”(**为邮箱地址或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。题目4:输入小写的字符串。如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足条件覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待5秒并将浏览器窗口最大化;2. 引入By方法类;3. 通过NAME属性定位用户名输入框,并输入用户名XTGLY;4. 通过ID属性定位密码输入框,并输入密码123456;5. 通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮;6. 通过XPATH方法定位对商品管理中的第一个商品并点击“禁用”按钮;7. 通过alert方法中的accept方法关闭警告弹窗;8. 使用time.sleep方法增加一秒的强制时间等待;9. 使用get_screenshot_as_file对页面进行截图操作(命名为test_accept01.png,存放在D盘根目录下)。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过ID方法定位用户名和密码输入框并输入账号和密码(XTGLY/123456),通过CLASS方法定位并点击登录按钮,最后增加一秒的强制等待;6. 定义test_denglu02方法进入系统登录页面,通过NAME方法定位用户名和密码输入框并输入账号和密码(XTGLY/123456),通过CLASS_NAME方法点击登录按钮,最后增加一秒的强制等待,通过LINK_TEXT方法定位并点击“仓库信息”按钮;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品分类名称 预期结果商品分类名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过ID属性定位用户名输入框,并输入用户名XTGLY;7. 通过NAME属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过LINK_TEXT方法进行定位,使用click()方法点击“商品分类”按钮;10. 通过XPATH方法点击“新增”按钮;11. 通过数据驱动输入“商品分类名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过CLASS_NAME方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用ID方法封装用户名输入框,使用NAME方法封装密码输入框、使用CLASS方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品品牌添加页面元素(使用LINK_TEXT方法封装商品品牌按钮,使用XPATH方法封装新增按钮,使用XPATH方法封装商品品牌名称输入框,使用CSS方法封装保存按钮,封装点击商品品牌按钮、点击新增按钮、输入商品品牌名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品品牌名称,进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_login.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:SaleAdd。 脚本内容:销售专员登录、进行新增销售订单、保存并提交操作。具体要求如下: 所有脚本存放在Action。仓库、客户任意选择,商品任意选择一种即可。对销售订单保存并提交操作设置事务,事务名称:T_SaleAdd。设置检查点,使用提交操作成功服务器的响应正文内容作为检查点。在新增销售订单保存操作前添加集合点,集合点名称:R_SaleAdd。截图要求:一共1张图:①Action中新增销售订单保存并提交操作部分截图。(2)脚本二: 脚本名称:PlanAdd。 脚本内容:生产专员登录、进行新增生产计划单、保存并提交操作。 具体要求如下: 所有脚本存放在Action。计划生产耗材和计划生产制品新增一行即可,商品任意选择一种。对生产计划单保存并提交操作设置事务,事务名称:T_PlanAdd。设置检查点,使用保存并提交操作成功服务器的响应正文内容作为检查点。在新增生产计划单保存并提交操作前添加集合点,集合点名称:R_PlanAdd。截图要求:一共1张图:①Action中新增生产计划单保存并提交操作部分截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增销售订单保存并提交业务。 保存并提交操作若需要关联,使用关联函数web_reg_save_param_ex(),参数名称submitId。截图要求:一共1张图:①Action中新增销售订单保存并提交操作部分截图。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增生产计划单保存并提交业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数化文件customer.dat,文件中包含customerId、customerName两个字段,customerId输入系统预置的10条客户id值,customerName输入对应的客户名称值。 对客户进行参数化设置:客户ID使用参数customerId,客户名称使用参数customerName,均使用customer.dat参数化文件。 customerId参数选择列使用按名称方式,每次迭代顺序取值。customerName参数选择列使用按名称方式,取值为customerId相同行。 对销售数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:500-1000,数字格式:%lu。 对实际销售价进行参数化设置:参数名称:Price,参数类型:随机数字,随机范围:2000-3000,数字格式:%lu。 脚本迭代次数3次。截图要求:一共1张图:①新增销售订单保存并提交操作和参数列表截图。(2)脚本二参数化具体要求如下: 对计划制品数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:500-1000,数字格式:%lu。 新建参数化文件center.dat,文件中包含centerId、centerCode、centerName三个字段,centerId输入系统预置的10条仓库id值,centerCode输入对应的仓库编号值,centerName输入对应的仓库名称值。 对计划生产制品仓库进行参数化设置:仓库ID使用参数centerId,仓库编号使用参数centerCode,仓库名称使用参数centerName,均使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代随机取值。centerCode、centerName参数选择列使用按名称方式,取值为centerId相同行。 脚本迭代次数3次。截图要求:一共1张图:①新增生产计划单保存并提交操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增销售订单集合点前添加思考时间35秒。 脚本修改:新增生产计划单集合点前添加思考时间30秒。 选择新增销售订单和新增生产计划单两个脚本进行场景设置。 用户分配选择用户组模式。场景计划方式选择场景,运行模式选择基本计划。 新增销售订单和新增生产计划单集合点策略:当5个用户到达集合点时释放,超时时间30秒。 全局计划:新增销售订单和新增生产计划单各10个虚拟用户,在每个虚拟用户运行前将其初始化,每3秒启动1个虚拟用户,每个用户迭代5次,完成前一直运行。截图要求:一共2张图,分别为:①场景设计界面截图;②新增生产计划单迭代次数设置界面截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Hits per Second - HTTP Responses per Second截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:SuppAndInve。 测试计划名称:SuppAndInve。测试计划下添加两个线程组:(1)线程组一: 线程组名称:SuppAdd。 线程组内容:系统管理员登录、进行新增供应商操作。具体要求如下: 供应商名称前4位为固定值GYMC,联系人前4位为固定值GLXR,固定值后面的字符可任意设置。新增供应商保存操作请求名称:新增供应商保存;对新增供应商保存操作设置事务,事务名称:T_SuppAdd。设置检查点,使用新增供应商成功服务器的响应正文内容作为检查点,检查点名称Reg_SuppAdd。在新增供应商保存操作前添加集合点,集合点名称:R_SuppAdd。截图要求:一共2张图,分别为:①新增供应商保存操作截图;②新增供应商检查点截图。(2)线程组二: 线程组名称:InveAdd。 线程组内容:仓库主管登录、进行新增盘点单操作。具体要求如下: 仓库任意选择,商品任意选择一种即可。新增盘点单保存操作请求名称:新增盘点单保存。对新增盘点单保存操作设置事务,事务名称:T_InveAdd。设置检查点,使用新增盘点单保存成功服务器的响应正文内容作为检查点,检查点名称Reg_InveAdd。在新增盘点单保存操作前添加集合点,集合点名称:R_InveAdd。截图要求:一共1张图:①新增盘点单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 对供应商名称进行修改,前4位为固定值GYHF,固定值后面的字符可任意设置。 对联系人进行修改,前4位为固定值LXHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增供应商业务。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增盘点单业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 对供应商名称进行参数化设置:供应商名称前4位固定值GYCS,固定值后面接函数threadNum和RandomString,Random string长度:5,生成random string的字符:abcdefghijklmnopqrst,存储结果的变量名:ranstr2。 对联系人进行参数化设置:联系人前4位固定值LXCS,固定值后面接函数threadNum和ranstr2。 对联系电话进行参数化设置:只参数化联系电话的后8位,使用Random string函数生成长度为8位的任意数字字符串。 脚本迭代次数3次。截图要求:一共1张图:①新增供应商保存操作截图。(2)线程组二参数化具体要求如下: 对保存操作进行参数化设置:点击保存或者保存并提交按钮。新建参数化文件status.dat,文件中包含status字段,status输入保存和保存并提交的status值。使用CSV数据文件设置实现参数化,参数名称:status。 对盘点仓库进行参数化设置:使用Random函数实现参数化,范围:系统预置的10条仓库id值。 脚本迭代次数3次。截图要求:一共1张图:①新增盘点单保存操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增供应商保存操作前添加思考时间45秒;新增盘点单保存操作前添加思考时间30秒;其他步骤添加思考时间5秒。 新增供应商、新增盘点单集合点设置:模拟数量:5,超时时间30秒。 场景配置: 新增供应商场景配置:取样器错误后执行动作:启动下一进程循环;线程数:10;Ramp-Up时间:20秒;持续时间:10分钟;启动延迟:10秒。 新增盘点单场景配置:取样器错误后执行动作:继续;线程数:10;Ramp-Up时间:30秒;循环10次。 使用非GUI模式运行。截图要求:一共2张图,分别为:①新增供应商场景配置截图;②非GUI运行界面截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Connect Time Over Time截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品分类添加接口描述如下:接口功能:提供商品分类新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/category/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品分类名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/category/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品单位修改接口描述如下:接口功能:提供商品单位修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品单位名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。2023年全国职业院校技能大赛软件测试赛题第1套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:根据下列流程图编写程序实现相应分析处理并显示结果。返回文字“x=a*a*b的值:”和x的值;返回文字“x=a-b的值:”和x的值;返回文字“x=a+b的值:”和x的值。其中变量a、b均须为整型。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用startsWith判断期望结果返回文字和实际返回文字是否一致。题目2:根据输入的年份和月份判断月份的天数。若月份不在有效范围之内,应提示:“月份输入不正确。”。月份不为2月,根据输入月份输出对应的月份天数。月份为2月,根据年份判断如为普通闰年,输出2月份正确天数;如为世纪闰年,输出2月份正确天数;不为闰年输出2月份天数。返回结果格式:“year年month月份的天数是days天。”year、month为传入的值,days为判断得到的天数值。其中变量year、month均须为正整数。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断返回期望结果和实际返回是否一致。题目3:邮箱注册需要填写邮箱地址和密码。其中要求邮箱格式“登录名@主机名.域名”,登录名为5个字母,主机名固定为下面2个163、126,域名为com或。密码为6个(含6)以上数字组成。填写正确则提示“信息正确”,否则根据实际情况提示“**不符合要求”(**为邮箱地址或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。题目4:根据下列流程图编写程序实现相应分析处理并显示结果。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待3秒;2. 引入By方法类;3. 通过NAME属性定位用户名输入框,并输入用户名XTGLY;4. 通过ID属性定位密码输入框,并输入密码123456;5. 通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮;6. 通过LINK_TEXT方法定位仓库信息按钮并使用click()方法点击;7. 通过TAG_NAME的复数形式定位并点击仓库信息中的第一个仓库的“禁用”按钮;8. 通过alert方法中的accept方法关闭第一个弹窗;9. 使用get_screenshot_as_file对页面进行截图操作(命名为test_accept01.png,存放在D盘根目录下)。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过CLASS_NAME方法定位用户名输入框,通过NAME方法定位密码输入框并输入账号和密码(XTGLY/123456),通过ID方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过NAME方法定位用户名输入框,通过ID方法定位密码输入框并输入账号和密码(XTGLY/123456),通过TAG_NAME定位登录按钮并点击,使用XPATH点击商品管理页面的新增按钮,使用send_keys上传图片并使用get_screenshot_as_file方法对页面进行截图;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品分类名称 预期结果商品分类名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过ID属性定位用户名输入框,并输入用户名XTGLY;7. 通过NAME属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过LINK_TEXT方法进行定位,使用click()方法点击“商品分类”按钮;10. 通过XPATH方法点击“新增”按钮;11. 通过CLASS_NAME方法定位商品分类名称输入框并使用数据驱动输入“商品分类名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过LINK_TEXT方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用ID方法封装用户名输入框,使用NAME方法封装密码输入框、使用CLASS方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品品牌添加页面元素(使用LINK_TEXT方法封装商品品牌按钮,使用XPATH方法封装新增按钮,使用XPATH方法封装商品品牌名称输入框,使用CSS方法封装保存按钮,封装点击商品品牌按钮、点击新增按钮、输入商品品牌名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品品牌名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:ProductAdd。 脚本内容:系统管理员登录、进行新增商品操作。具体要求如下: 所有脚本存放在Action。商品名称前2位为固定值SP,固定值后面的字符可任意设置。对新增商品保存操作设置事务,事务名称:T_SPAdd。设置检查点,使用新增商品成功服务器的响应正文内容作为检查点。在新增商品保存操作前添加集合点,集合点名称:R_SPAdd。截图要求:一共1张图:①Action中新增商品保存操作部分截图。(2)脚本二: 脚本名称:PurAdd。 脚本内容:采购专员登录、进行新增采购订单、保存并提交操作。 具体要求如下: 所有脚本存放在Action。仓库、供应商任意选择,商品任意选择一种即可。对采购订单保存并提交操作设置事务,事务名称:T_PurAdd。设置检查点,使用提交操作成功服务器的响应正文内容作为检查点。截图要求:一共1张图:①Action中新增采购订单保存并提交操作部分截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 对商品名称进行修改,前4位为固定值SPHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增商品业务。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增采购订单保存并提交业务。 保存并提交操作若需要关联,使用关联函数web_reg_save_param_ex(),参数名称submitId。截图要求:一共1张图:①Action中新增采购订单保存并提交操作部分截图。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数:参数名称:uniNo,参数类型:唯一编号,编号从1开始,每个Vuser的块大小为100,编号格式:%04d。 新建参数:参数名称:VuID,参数类型:Vuser ID,文本格式:%s。 对商品名称进行参数化设置:商品名称前4位固定值SPCS,固定值后面接参数VuID和uniNo。 对采购价进行参数化设置:参数名称:price1,参数类型:随机数字,随机范围:100-200,数字格式:%lu。 对销售价进行参数化设置:参数名称:price2,参数类型:随机数字,随机范围:200-300,数字格式:%lu。 脚本迭代次数3次。截图要求:一共1张图:①新增商品保存操作和参数列表截图。(2)脚本二参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId、centerName两个字段,centerId输入系统预置的10条仓库id值,centerName输入对应的仓库名称值。 对仓库进行参数化设置:仓库ID使用参数centerId,仓库名称使用参数centerName,均使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代顺序取值。centerName参数选择列使用按名称方式,取值为centerId相同行。 对采购数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:100-200,数字格式:%lu。 对实际采购价进行参数化设置:参数名称:Price,参数类型:随机数字,随机范围:50-100,数字格式:%lu。 脚本迭代次数3次。截图要求:一共1张图:①新增采购订单保存并提交操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增商品集合点前添加思考时间30秒,商品名称前4位固定值修改为SPCJ。 脚本修改:新增采购订单事务前添加思考时间45秒。 添加负载发生器(Load Generator):本机负载发生器名称localhost,另一电脑负载发生器名称otherlg。 选择新增商品和新增采购订单两个脚本进行场景设置。 设置新增商品脚本使用负载发生器localhost,新增采购订单使用负载发生器otherlg。 用户分配选择用户组模式。场景计划方式选择场景,运行模式选择实际计划。 场景中脚本运行时思考时间设置:使用录制思考时间的随机百分比,区间为:70%-150%。 集合点策略:当80%的运行用户到达集合点时释放,超时时间30秒。 全局计划:在每个虚拟用户运行前将其初始化;启动10个用户(每5秒启动2个)执行5分钟,执行完成后再启动10个用户(每5秒启动2个)执行5分钟,执行完成后停止所有用户(每5秒停止4个)。 添加性能计数器对服务器(CPU利用率,可用内存,硬盘)性能状况进行监测。截图要求:一共2张图,分别为:①场景设计界面截图;②集合点信息及策略截图。5、图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Summary Report截图。②windows Resources - RunningVusers截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:SuppAndSale。 测试计划名称:SuppAndSale。测试计划下添加两个线程组:(1)线程组一: 线程组名称:SupplierAdd。 线程组内容:系统管理员登录、进行新增供应商操作。具体要求如下: 供应商名称前4位为固定值GYMC,联系人前4位为固定值GLXR,固定值后面的字符可任意设置。新增供应商保存操作请求名称:新增供应商保存;对新增供应商保存操作设置事务,事务名称:T_SuppAdd。设置检查点,使用新增供应商成功服务器的响应正文内容作为检查点,检查点名称Reg_SuppAdd。在新增供应商保存操作前添加集合点,集合点名称:R_SuppAdd。截图要求:一共1张图:①新增供应商保存操作截图。(2)线程组二: 线程组名称:SaleAdd。 线程组内容:销售专员登录、进行新增销售订单、保存并提交操作。具体要求如下: 仓库、客户任意选择,商品任意选择一种即可。销售订单保存操作请求名称:销售订单保存;销售订单提交操作请求名称:销售订单提交。对销售订单保存并提交操作设置事务,事务名称:T_SaleAdd。设置检查点,使用提交操作成功服务器的响应正文内容作为检查点,检查点名称Reg_SaleAdd。截图要求:一共1张图:①新增销售订单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 对供应商名称进行修改,前4位为固定值GYHF,固定值后面的字符可任意设置。 对联系人进行修改,前4位为固定值LXHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增供应商业务。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增销售订单保存并提交业务。 保存并提交操作若需要关联,使用边界提取器,参数名称submitId。截图要求:一共1张图:①新增销售订单提交操作截图。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 对供应商名称进行参数化设置:供应商名称前4位固定值GYCS,固定值后面接函数threadNum和RandomString,Random string长度:5,生成random string的字符:abcdefghijklmnopqrst,存储结果的变量名:ranstr2。 对联系人进行参数化设置:联系人前4位固定值LXCS,固定值后面接参数threadNum和ranstr2。 对联系电话进行参数化设置:只参数化联系电话的后8位,使用Random string函数生成长度为8位的任意数字字符串。 脚本迭代次数3次。截图要求:一共1张图:①新增供应商保存操作截图。(2)线程组二参数化具体要求如下: 新建参数化文件customer.dat,文件中包含customerId、customerName两个字段,customerId输入系统预置的10条客户id值,customerName输入对应的客户名称值。 对客户进行参数化设置:使用CSV数据文件设置实现参数化,使用customer.dat文件。客户ID参数名称:customerId,客户名称参数名称:customerName。 对销售数量进行参数化设置:使用Random函数实现参数化,范围:50-100。 对实际销售价进行参数化设置:使用Random函数实现参数化,范围:150-300。 脚本迭代次数3次。截图要求:一共1张图:①新增销售订单保存操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增供应商保存操作前添加思考时间25秒;新增销售订单保存操作前添加思考时间20秒;其他步骤添加思考时间5秒。 新增供应商集合点设置:模拟数量:5,超时时间20秒。 场景配置: 新增供应商场景配置:取样器错误后执行动作:启动下一进程循环;线程数:10;Ramp-Up时间:20秒;持续时间:8分钟;启动延迟5秒。 新增销售订单场景配置:取样器错误后执行动作:继续;线程数:20;Ramp-Up时间:20秒;循环5次。 使用非GUI模式运行。截图要求:一共2张图,分别为:①新增供应商场景配置截图;②新增销售订单场景配置截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Dashboard-Statistics截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品品牌添加接口描述如下:接口功能:提供商品品牌新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品品牌名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品品牌修改接口描述如下:接口功能:提供商品品牌修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品品牌名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。2023年全国职业院校技能大赛软件测试赛题第3套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:输入一个大写字母一个小写字母。根据输入的第一个字母和英文周几单词的第一个大写字母判断是周几,如果无法根据第一个大写字母判断,则继续根据输入的第二个小写字母进行判断,最终返回正确的英文周几的单词。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断期望结果值和实际返回值是否一致。题目2:进行系统注册时通常需要输入用户名和密码,其中用户名要求由8个字母组成、密码由6个(含6)以上数字组成。满足要求,则提示“注册成功”,否则根据实际情况提示“**不符合要求”(**为用户名或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中containsString断言判断输出文字期望结果值和实际返回值是否一致。题目3:企业根据利润提成来发放奖金。将利润金额划分6个档位来提成。档位一:利润低于或等于10万元部分,提成10%。档位二:利润高于10万元并且低于或等于20万元部分,提成7.5%。档位三:利润高于20万元并且低于或等于40万元部分,提成5%。档位四:利润高于40万元并且低于或等于60万元部分,提成3%。档位五:利润高于60万元并且低于或等于100万元部分,提成1.5%。档位六:利润高于100万元部分,提成1%。编写程序根据输入的当月利润x计算出最终得到的总提成,输入利润已万为单位,x为整数。返回结果按照档次输出“总提成:y万”,y为计算的提成值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中is断言判断输出文字期望结果值和实际返回值是否一致。题目4:根据下列流程图编写程序实现相应分析处理并显示结果。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待5秒并将浏览器窗口最大化;2. 引入By方法类;3. 通过NAME属性定位用户名输入框,并输入用户名XTGLY;4. 通过ID属性定位密码输入框,并输入密码123456;5. 通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮;6. 通过PARTIAL_LINK_TEXT方法定位商品品牌按钮,使用click()方法点击;7. 使用TAG_NAME的复数方法定位并点击商品品牌中的第一个品牌点击“禁用”按钮;8. 通过alert方法中的dismiss方法选择弹窗中的取消按钮;9. 通过alert方法中的accept方法选择第二个弹窗中的确定按钮。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过NAME方法定位用户名输入框,通过NAME方法定位密码输入框并输入账号和密码(XTGLY/123456),通过XPATH方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过NAME方法定位用户名输入框,通过ID方法定位密码输入框并输入账号和密码(XTGLY/123456),通过TAG_NAME定位登录按钮并点击,通过LINK_TEXT方法定位并点击“客户信息”按钮,使用LINK_TEXT方法的复数形式定位页面中第一条数据的查看按钮,使用元素属性删除方法删除掉页面中第一条数据的查看的target属性,点击查看按钮并使用get_screenshot_as_file对页面进行截图操作;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品分类名称 预期结果商品分类名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过ID属性定位用户名输入框,并输入用户名XTGLY;7. 通过NAME属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过LINK_TEXT方法进行定位,使用click()方法点击“商品分类”按钮;10. 通过XPATH方法点击“新增”按钮;11. 通过CLASS_NAME方法定位商品分类名称输入框并使用数据驱动输入“商品分类名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过LINK_TEXT方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用CLASS_NAME方法封装用户名输入框,使用NAME方法封装密码输入框、使用ID方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品分类添加页面元素(使用PARTIAL_LINK_TEXT方法封装商品分类按钮,使用CSS方法封装新增按钮,使用XPATH方法封装商品分类名称输入框,使用CSS方法封装保存按钮,封装点击商品分类按钮、点击新增按钮、输入商品分类名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品分类名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:ProductAdd。 脚本内容:系统管理员登录、进行新增商品操作。具体要求如下: 所有脚本存放在Action。商品名称前2位为固定值SP,固定值后面的字符可任意设置。新增商品需要添加图片,图片自行准备。对新增商品保存操作设置事务,事务名称:T_SPAdd。设置检查点,使用新增商品成功,服务器响应正文内容中的code键值对作为检查点。截图要求:一共1张图:①Action中新增商品保存操作部分截图。(2)脚本二: 脚本名称:SaleAdd。 脚本内容:销售专员登录、进行新增销售订单、保存并提交操作。具体要求如下: 所有脚本存放在Action。仓库、客户任意选择,商品任意选择一种即可。对销售订单保存并提交操作设置事务,事务名称:T_SaleAdd。设置检查点,使用提交操作成功,服务器响应正文内容中的code键值对作为检查点。在新增销售订单保存操作前添加集合点,集合点名称:R_SaleAdd。截图要求:一共1张图:①Action中新增销售订单保存并提交操作部分截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 对商品名称进行修改,前4位为固定值SPHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增商品业务。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增销售订单保存并提交业务。 保存并提交操作若需要关联,使用关联函数web_reg_save_param_ex(),参数名称submitId。截图要求:一共1张图:①Action中新增销售订单保存并提交操作部分截图。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数:参数名称:uniNo,参数类型:唯一编号,编号从1开始,每个Vuser的块大小为100,编号格式:%04d。 新建参数:参数名称:VuID,参数类型:Vuser ID,文本格式:%s。 对商品名称进行参数化设置:商品名称前4位固定值SPCS,固定值后面接参数VuID和uniNo。 对采购价进行参数化设置:参数名称:price1,参数类型:随机数字,随机范围:100-200,数字格式:%lu。 对销售价进行参数化设置:参数名称:price2,参数类型:随机数字,随机范围:300-600,数字格式:%lu。 对商品图片进行参数化:参数名称:file,参数类型:文件,准备10张图片进行参数化。若需要关联,使用关联函数web_reg_save_param_ex(),参数名称photo。 脚本迭代次数3次。截图要求:一共1张图:①新增商品保存操作和参数列表截图。(2)脚本二参数化具体要求如下: 新建参数化文件customer.dat,文件中包含customerId、customerName两个字段,customerId输入系统预置的10条客户id值,customerName输入对应的客户名称值。 对客户进行参数化设置:客户ID使用参数customerId,客户名称使用参数customerName,均使用customer.dat参数化文件。 customerId参数选择列使用按名称方式,每次迭代顺序取值。customerName参数选择列使用按名称方式,取值为customerId相同行。 对销售数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:500-1000,数字格式:%lu。 对实际销售价进行参数化设置:参数名称:Price,参数类型:随机数字,随机范围:2000-3000,数字格式:%lu。 脚本迭代次数3次。截图要求:一共1张图:①新增销售订单保存并提交操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增商品事务前添加思考时间20秒,商品名称前4位固定值修改为SPCJ。 脚本修改:新增销售订单集合点前添加思考时间45秒。 选择新增商品和新增销售订单两个脚本进行场景设置。 场景中两个脚本运行时设置:思考时间:使用录制思考时间的随机百分比,区间为:80%-150%。 用户分配选择百分比模式:新增商品占比40%。场景运行模式选择实际计划。 全局计划:在每个虚拟用户运行前将其初始化;启动10个用户(每5秒启动5个)执行5分钟,再启动10个用户(每5秒启动5个)执行5分钟,执行完成后停止10个用户(每5秒停止5个)再执行5分钟,然后停止所有用户(每5秒停止5个)。截图要求:一共2张图,分别为:①场景设计界面截图;②新增商品思考时间设置界面截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Transaction Response Time (Distribution)截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:PlanAndInve。 测试计划名称:PlanAndInve。测试计划下添加两个线程组:(1)线程组一: 线程组名称:PlanAdd。 线程组内容:生产专员登录、进行新增生产计划单、保存并提交操作。具体要求如下: 计划生产耗材和计划生产制品新增一行即可,商品任意选择一种。生产计划单保存并提交操作请求名称:保存并提交。对生产计划单保存并提交操作设置事务,事务名称:T_PlanAdd。设置检查点,使用保存并提交操作成功服务器的响应正文内容作为检查点,检查点名称Reg_PlanAdd。在新增生产计划单保存并提交操作前添加集合点,集合点名称:R_PlanAdd。截图要求:一共1张图:①新增生产计划单保存并提交操作截图。(2)线程组二: 线程组名称:InveAdd。 线程组内容:仓库主管登录、进行新增盘点单操作。具体要求如下: 仓库任意选择,商品任意选择一种即可。新增盘点单保存操作请求名称:新增盘点单保存。对新增盘点单保存操作设置事务,事务名称:T_InveAdd。设置检查点,使用新增盘点单保存成功服务器的响应正文内容作为检查点,检查点名称Reg_InveAdd。在新增盘点单保存操作前添加集合点,集合点名称:R_InveAdd。截图要求:一共1张图:①新增盘点单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增生产计划单保存并提交业务。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增盘点单业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 对计划制品数量进行参数化设置:使用Random函数实现参数化,范围:1000-2000。 新建参数化文件center.dat,文件中包含centerId、centerCode、centerName三个字段,centerId输入系统预置的10条仓库id值,centerCode输入对应的仓库编号值,centerName输入对应的仓库名称值。 对计划生产制品仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称centerId,仓库编号参数名称centerCode,仓库名称参数名称centerName。 脚本迭代次数3次。截图要求:一共2张图,分别为:①center.dat文件内容截图;②新增生产计划单保存并提交操作截图。(2)线程组二参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId字段,centerId输入系统预置的10条仓库id值。 对盘点仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称:centerId。 脚本迭代次数3次。截图要求:一共1张图:①新增盘点单保存操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增生产计划单保存并提交操作前添加思考时间45秒;新增盘点单保存操作前添加思考时间30秒;其他步骤添加思考时间5秒。 新增生产计划单集合点设置:模拟数量:5,超时时间30秒。 新增盘点单集合点设置:模拟数量:10,超时时间40秒。 场景配置: 新增生产计划单场景配置:取样器错误后执行动作:继续;线程数:15;Ramp-Up时间:30秒;循环10次。 新增盘点单场景配置:取样器错误后执行动作:继续;线程数:20;Ramp-Up时间:40秒;循环10次。 使用非GUI模式运行。 截图要求:一共2张图,分别为:①新增生产计划单场景配置截图;②非GUI运行界面截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Response Time Distribution截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品单位添加接口描述如下:接口功能:提供商品单位新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品单位名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品单位修改接口描述如下:接口功能:提供商品单位修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品单位名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。2023年全国职业院校技能大赛软件测试赛题第7套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:任意输入2个正整数值分别存入x、y中,据此完成下述分析:若x≤0或y≤0,则提示:“输入不符合要求。”;若2值相同,则提示“可以构建圆形或正方形”;若2<|x-y|≤5,则提示“可以构建椭圆”;若|x-y|>5,则提示“可以构建矩形”;若0<|x-y|≤2,提示“可以构建长方形”。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。题目2:根据输入的年份和月份判断月份的天数。若月份不在有效范围之内,应提示:“月份输入不正确。”。月份不为2月,根据输入月份输出对应的月份天数。月份为2月,根据年份判断如为普通闰年,输出2月份正确天数;如为世纪闰年,输出2月份正确天数;不为闰年输出2月份天数。返回结果格式:“year年month月份的天数是days天。”year、month为传入的值,days为判断得到的天数值。其中变量year、month均须为正整数。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断返回期望结果和实际返回是否一致。题目3:邮箱注册需要填写邮箱地址和密码。其中要求邮箱格式“登录名@主机名.域名”,登录名为5个字母,主机名固定为下面2个163、126,域名为com或。密码为6个(含6)以上数字组成。填写正确则提示“信息正确”,否则根据实际情况提示“**不符合要求”(**为邮箱地址或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。题目4:输入小写的字符串。如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足条件覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待5秒并将浏览器窗口最大化;2. 引入By方法类;3. 引入ActionChains方法类;4. 通过ID属性定位用户名输入框,并输入用户名XTGLY;5. 通过NAME属性定位密码输入框,并输入密码123456;6. 定义变量login_button,通过TAG_NAME属性定位登录按钮;7. 通过ActionChains方法点击登录按钮;8. 通过ID定位商品管理页面的查询条件中的“请输入商品编号/名称查询”输入框并输入test001;9. 通过ActionChains方法双击输入框中的“test001”;10. 使用get_screenshot_as_file对页面进行截图操作(命名为test_ActionChains01.png,存放在D盘根目录下)。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过NAME方法定位用户名输入框,通过CLASS_NAME方法复数形式定位密码输入框并输入账号和密码(XTGLY/123456),通过XPATH方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过ID方法定位用户名输入框,通过CLASS_NAME方法定位密码输入框并输入账号和密码(XTGLY/123456),通过TAG_NAME定位登录按钮并点击,通过LINK_TEXT方法定位并点击“供应商信息”按钮,通过TAG_NAME方法复数形式定位并点击第一条信息的禁用按钮,使用dismiss方法关闭第一个警告弹窗;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品单位名称 预期结果商品单位名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过NAME属性定位用户名输入框,并输入用户名XTGLY;7. 通过CLASS_NAME属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过ID方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过LINK_TEXT方法进行定位,使用click()方法点击“商品单位”按钮;10. 通过TAG_NAME的复数形式定位并点击“新增”按钮;11. 通过CLASS_NAME方法定位商品单位名称输入框并使用数据驱动输入“商品单位名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过CLASS_NAME方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用CLASS_NAME方法封装用户名输入框,使用NAME方法封装密码输入框、使用ID方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品分类添加页面元素(使用PARTIAL_LINK_TEXT方法封装商品分类按钮,使用CSS方法封装新增按钮,使用XPATH方法封装商品分类名称输入框,使用CSS方法封装保存按钮,封装点击商品分类按钮、点击新增按钮、输入商品分类名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品分类名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:SuppAdd。 脚本内容:系统管理员登录、进行新增供应商操作。具体要求如下: 所有脚本存放在Action。供应商名称前4位为固定值GYMC,联系人前4位为固定值GLXR,固定值后面的字符可任意设置。对新增供应商保存操作设置事务,事务名称:T_SuppAdd。设置检查点,使用新增供应商成功,服务器响应正文内容中的code键值对作为检查点。在新增供应商保存操作前添加集合点,集合点名称:R_SuppAdd。截图要求:一共1张图:①Action中新增供应商保存操作部分截图。(2)脚本二: 脚本名称:SaleAdd。 脚本内容:销售专员登录、进行新增销售订单、保存并提交操作。具体要求如下: 所有脚本存放在Action。仓库、客户任意选择,商品任意选择一种即可。对销售订单保存并提交操作设置事务,事务名称:T_SaleAdd。设置检查点,使用提交操作成功,服务器响应正文内容中的code键值对作为检查点。在新增销售订单保存操作前添加集合点,集合点名称:R_SaleAdd。截图要求:一共1张图:①Action中新增销售订单保存并提交操作部分截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 对供应商名称进行修改,前4位为固定值GYHF,固定值后面的字符可任意设置。 对联系人进行修改,前4位为固定值LXHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增供应商业务。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增销售订单保存并提交业务。 保存并提交操作若需要关联,使用关联函数web_reg_save_param_ex(),参数名称submitId。截图要求:一共1张图:①Action中新增销售订单保存并提交操作部分截图。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数:参数名称:letter,参数类型:文件,参数值:26个英文字母大写,每次出现随机取值。 新建参数:参数名称:VuID,参数类型:Vuser ID,文本格式:%03s。 新建参数:参数名称:uniNo,参数类型:唯一编号,编号从1开始,每个Vuser的块大小为100,编号格式:%04d。 对供应商名称进行参数化设置:供应商名称前4位固定值GYCS,固定值后面接2个随机大写字母、参数VuID和uniNo。 对联系人进行参数化设置:联系人前3位固定值LXR,固定值后面接2个随机大写字母、参数VuID和uniNo。 对联系电话进行参数化设置:只参数化联系电话的后8位,参数名称:phone,参数类型:随机数字,随机范围:1-9999,数字格式:%08lu,每次迭代更新。 脚本迭代次数3次。截图要求:一共1张图:①新增供应商保存操作和参数列表截图。(2)脚本二参数化具体要求如下: 新建参数化文件customer.dat,文件中包含customerId、customerName两个字段,customerId输系统预置的10条客户id值,customerName输入对应的客户名称值。 对客户进行参数化设置:客户ID使用参数customerId,客户名称使用参数customerName,均使用customer.dat参数化文件。 customerId参数选择列使用按名称方式,每次迭代顺序取值。customerName参数选择列使用按名称方式,取值为customerId相同行。 对销售数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:500-1000,数字格式:%lu。 对实际销售价进行参数化设置:参数名称:Price,参数类型:随机数字,随机范围:2000-3000,数字格式:%lu。 脚本迭代次数3次。截图要求:一共1张图:①新增销售订单保存并提交操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增供应商集合点前添加思考时间40秒,供应商名称前4位固定值修改为GYCJ。 脚本修改:新增销售订单集合点前添加思考时间45秒。 添加负载发生器(Load Generator):本机负载发生器名称localhost,另一电脑负载发生器名称otherlg。 选择新增供应商和新增销售订单两个脚本进行场景设置。 设置新增供应商脚本使用负载发生器localhost,新增销售订单使用负载发生器otherlg。 用户分配选择用户组模式。场景计划方式选择用户组,运行模式选择实际计划。 全局计划: 新增供应商:场景开始后立即启动组;在每个虚拟用户运行前将其初始化;启动20个用户(每2秒启动1个)执行5分钟,执行完成后停止所有用户(每2秒停止1个)。 新增销售订单:新增供应商执行完成后启动组;在每个虚拟用户运行前将其初始化;启动15个用户(每2秒启动1个)执行5分钟,执行完成后停止所有用户(每2秒停止1个)。 添加性能计数器对服务器(CPU利用率,可用内存,硬盘)性能状况进行监测。截图要求:一共2张图,分别为:①新增供应商场景设计界面截图;②新增销售订单场景设计界面截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共2张图:①Transaction Response Time (Percentile)截图。②windows Resources - RunningVusers截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:ProdAndPlan。 测试计划名称:ProdAndPlan。测试计划下添加两个线程组:(1)线程组一: 线程组名称:ProdAdd。 线程组内容:系统管理员登录、进行新增商品操作。具体要求如下: 商品名称前2位为固定值SP,固定值后面的字符可任意设置。新增商品需要添加图片,图片自行准备。选择图片上传请求名称:图片上传;新增商品保存操作请求名称:新增商品保存。对新增商品保存操作设置事务,事务名称:T_SPAdd。设置检查点,使用新增商品成功服务器的响应正文内容作为检查点,检查点名称Reg_SPAdd。截图要求:一共1张图:①新增商品保存操作截图。(2)线程组二: 线程组名称:PlanAdd。 线程组内容:生产专员登录、进行新增生产计划单、保存并提交操作。具体要求如下: 计划生产耗材和计划生产制品新增一行即可,商品任意选择一种。生产计划单保存并提交操作请求名称:保存并提交。对生产计划单保存并提交操作设置事务,事务名称:T_PlanAdd。设置检查点,使用保存并提交操作成功服务器的响应正文内容作为检查点,检查点名称Reg_PlanAdd。在新增生产计划单保存并提交操作前添加集合点,集合点名称:R_PlanAdd。截图要求:一共1张图:①新增生产计划单保存并提交操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 对商品名称进行修改,前4位为固定值SPHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增商品业务。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增生产计划单保存并提交业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 对商品名称进行参数化设置:商品名称前4位固定值SPCS,固定值后面接函数threadNum和RandomString,Random string长度:5,生成random string的字符:0123456789。 对采购价进行参数化设置:使用Random函数实现参数化,范围:50-100。 对销售价进行参数化设置:使用Random函数实现参数化,范围:200-300。 对商品图片进行参数化:自行准备10张图片,使用CSV数据文件设置实现参数化,CSV数据文件命名:file.dat,参数名称:file。若需要关联,使用边界提取器,参数名称photo。 脚本迭代次数3次。截图要求:一共2张图,分别为:①图片上传操作截图;②新增商品保存操作截图。(2)线程组二参数化具体要求如下: 对计划耗材数量进行参数化设置:使用Random函数实现参数化,范围:500-1000。 新建参数化文件center.dat,文件中包含centerId、centerCode、centerName三个字段,centerId输入系统预置的10条仓库id值,centerCode输入对应的仓库编号值,centerName输入对应的仓库名称值。 对计划生产耗材仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称centerId,仓库编号参数名称centerCode,仓库名称参数名称centerName。 脚本迭代次数3次。截图要求:一共1张图:①新增生产计划单保存并提交操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增商品保存操作前添加思考时间25秒;新增生产计划单保存并提交操作前添加思考时间30秒;其他步骤添加思考时间5秒。 新增生产计划单集合点设置:模拟数量:5,超时时间30秒。 场景配置: 新增商品场景配置:取样器错误后执行动作:继续;线程数:15;Ramp-Up时间:15秒;循环5次。新增生产计划单场景运行完成后开始运行。 新增生产计划单场景配置:取样器错误后执行动作:继续;线程数:20;Ramp-Up时间:20秒;循环5次。 使用非GUI模式运行。截图要求:一共2张图,分别为:①测试计划截图;②新增商品场景配置截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Response Time Percentiles Over Time (successful responses)截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品分类添加接口描述如下:接口功能:提供商品分类新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/category/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品分类名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/category/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品分类修改接口描述如下:接口功能:提供商品分类修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/category/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品分类名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2.接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/category/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。2023年全国职业院校技能大赛软件测试赛题第2套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:任意输入2个正整数值分别存入x、y中,据此完成下述分析:若x≤0或y≤0,则提示:“输入不符合要求。”;若2值相同,则提示“可以构建圆形或正方形”;若2<|x-y|≤5,则提示“可以构建椭圆”;若|x-y|>5,则提示“可以构建矩形”;若0<|x-y|≤2,提示“可以构建长方形”。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。题目2:输入一个大写字母一个小写字母。根据输入的第一个字母和周几英文单词的第一个大写字母判断是周几,如果无法根据第一个大写字母判断,则继续根据输入的第二个小写字母进行判断,最终返回正确的英文周几的单词。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断期望结果值和实际返回值是否一致。题目3:进行系统注册时通常需要输入用户名和密码,其中用户名要求由8个字母组成、密码由6个(含6)以上数字组成。满足要求,则提示“注册成功”,否则根据实际情况提示“**不符合要求”(**为用户名或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中containsString断言判断输出文字期望结果值和实际返回值是否一致。题目4:输入小写的字符串。如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足条件覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待5秒并将浏览器窗口最大化;2. 引入By方法类;3. 通过NAME属性定位用户名输入框,并输入用户名XTGLY;4. 通过NAME属性定位密码输入框,并输入密码123456;5. 通过CLASS_NAME方法定位登录按钮,使用click()方法点击登录按钮;6. 通过PARTIAL_LINK_TEXT方法定位客户信息按钮,并使用click()方法点击;7. 使用LINK_TEXT复数方法定位页面中第一条数据的查看的target属性并且对target属性进行删除;8. 点击页面中第一条数据的查看按钮;9. 增加2秒强制时间等待;10. 使用get_screenshot_as_file对页面进行截图操作(命名为test_target01.png,存放在D盘根目录下);11. 点击查看客户弹窗右上角的X。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过ID方法定位用户名输入框,通过NAME方法定位密码输入框并输入账号和密码(XTGLY/123456),通过TAG_NAME方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过NAME方法定位用户名输入框,通过ID方法定位密码输入框并输入账号和密码(XTGLY/123456),通过CLASS_NAME方法登录系统,通过LINK_TEXT方法定位并点击“客户信息”按钮;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品品牌名称 预期结果商品品牌名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过CLASS_NAME属性定位用户名输入框,并输入用户名XTGLY;7. 通过ID属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过PARTIAL_LINK_TEXT方法进行定位,使用click()方法点击“商品品牌”按钮;10. 通过TAG_NAME的复数形式定位并点击“新增”按钮;11. 通过CLASS_NAME方法定位商品品牌名称输入框并使用数据驱动输入“商品品牌名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过CLASS_NAME方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用CLASS_NAME方法封装用户名输入框,使用NAME方法封装密码输入框、使用ID方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品分类添加页面元素(使用PARTIAL_LINK_TEXT方法封装商品分类按钮,使用CSS方法封装新增按钮,使用XPATH方法封装商品分类名称输入框,使用CSS方法封装保存按钮,封装点击商品分类按钮、点击新增按钮、输入商品分类名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品分类名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:ProductAdd。 脚本内容:系统管理员登录、进行新增商品操作。具体要求如下: 所有脚本存放在Action。商品名称前2位为固定值SP,固定值后面的字符可任意设置。对新增商品保存操作设置事务,事务名称:T_SPAdd。设置检查点,使用新增商品成功服务器的响应正文内容作为检查点。在新增商品保存操作前添加集合点,集合点名称:R_SPAdd。截图要求:一共1张图:①Action中新增商品保存操作部分截图。 (2)脚本二: 脚本名称:PlanAdd。 脚本内容:生产专员登录、进行新增生产计划单、保存并提交操作。具体要求如下: 所有脚本存放在Action。计划生产耗材和计划生产制品新增一行即可,商品任意选择一种。对生产计划单保存并提交操作设置事务,事务名称:T_PlanAdd。设置检查点,使用保存并提交操作成功服务器的响应正文内容作为检查点。在新增生产计划单保存并提交操作前添加集合点,集合点名称:R_PlanAdd。截图要求:一共1张图:①Action中新增生产计划单保存并提交操作部分截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 对商品名称进行修改,前4位为固定值SPHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增商品业务。截图要求:一共1张图:①新增商品保存操作和回放日志截图。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增生产计划单保存并提交业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数:参数名称:uniNo,参数类型:唯一编号,编号从1开始,每个Vuser的块大小为100,编号格式:%04d。 新建参数:参数名称:VuID,参数类型:Vuser ID,文本格式:%s。 对商品名称进行参数化设置:商品名称前4位固定值SPCS,固定值后面接参数VuID和uniNo。 对采购价进行参数化设置:参数名称:price1,参数类型:随机数字,随机范围:100-200,数字格式:%lu。 对销售价进行参数化设置:参数名称:price2,参数类型:随机数字,随机范围:200-300,数字格式:%lu。 脚本迭代次数3次。截图要求:一共1张图:①新增商品保存操作和参数列表截图。(2)脚本二参数化具体要求如下: 对计划耗材数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:500-1000,数字格式:%lu。 新建参数化文件center.dat,文件中包含centerId、centerCode、centerName三个字段,centerId输入系统预置的10条仓库id值,centerCode输入对应的仓库编号值,centerName输入对应的仓库名称值。 对计划生产耗材仓库进行参数化设置:仓库ID使用参数centerId,仓库编号使用参数centerCode,仓库名称使用参数centerName,均使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代随机取值。centerCode、centerName参数选择列使用按名称方式,取值为centerId相同行。 脚本迭代次数3次。截图要求:一共1张图:①新增生产计划单保存并提交操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增商品集合点前添加思考时间45秒,商品名称前4位固定值修改为SPCJ。 脚本修改:新增生产计划单集合点前添加思考时间30秒。 选择新增商品和新增生产计划单两个脚本进行场景设置。 用户分配选择百分比模式:新增商品占比35%。场景运行模式选择实际计划。 场景中两个脚本运行时设置:思考时间:使用录制思考时间的随机百分比,区间为:70%-150%。 全局计划:在每个虚拟用户运行前将其初始化;启动5个用户(每5秒启动5个)执行5分钟,执行完成后停止所有用户(每5秒停止5个);再启动10个用户(每5秒启动5个)执行5分钟,执行完成后停止所有用户(每5秒停止5个);再启动15个用户(每5秒启动5个)执行5分钟,执行完成后停止所有用户(每5秒停止5个)。截图要求:一共2张图,分别为:①场景设计界面截图;②新增商品思考时间设置界面截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Running Vusers - Connections截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:PurAndInve。 测试计划名称:PurAndInve。测试计划下添加两个线程组:(1)线程组一: 线程组名称:PurAdd。 线程组内容:采购专员登录、进行新增采购订单、保存并提交操作。具体要求如下: 仓库、供应商任意选择,商品任意选择一种即可。采购订单保存操作请求名称:采购订单保存;采购订单提交操作请求名称:采购订单提交。对采购订单保存并提交操作设置事务,事务名称:T_PurAdd。设置检查点,使用提交操作成功服务器的响应正文内容作为检查点,检查点名称Reg_PurAdd。截图要求:一共1张图:①新增采购订单保存操作截图。(2)线程组二: 线程组名称:InveAdd。 线程组内容:仓库主管登录、进行新增盘点单操作。具体要求如下: 仓库任意选择,商品任意选择一种即可。新增盘点单保存操作请求名称:新增盘点单保存。对新增盘点单保存操作设置事务,事务名称:T_InveAdd。设置检查点,使用新增盘点单保存成功服务器的响应正文内容作为检查点,检查点名称Reg_InveAdd。在新增盘点单保存操作前添加集合点,集合点名称:R_InveAdd。截图要求:一共1张图:①新增盘点单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增采购订单保存并提交业务。 保存并提交操作若需要关联,使用正则表达式提取器,参数名称PurId。截图要求:一共1张图:①新增采购订单提交操作截图。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增盘点单业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId、centerName两个字段,centerId输入系统预置的10条仓库id值,centerName输入对应的仓库名称值。 对仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称:centerId,仓库名称参数名称:centerName。 对采购数量进行参数化设置:使用Random函数实现参数化,范围:200-500。 对实际采购价进行参数化设置:使用Random函数实现参数化,范围:50-100。 脚本迭代次数3次。截图要求:一共1张图:①新增采购订单保存操作截图。(2)线程组二参数化具体要求如下: 对保存操作进行参数化设置:点击保存或者保存并提交按钮。新建参数化文件status.dat,文件中包含status字段,status输入保存和保存并提交的status值。使用CSV数据文件设置实现参数化,参数名称:status。 对盘点仓库进行参数化设置:使用Random函数实现参数化,范围:系统预置的10条仓库id值。 脚本迭代次数3次。截图要求:一共1张图:①新增盘点单保存操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增采购订单保存操作前添加思考时间30秒;新增盘点单保存操作前添加思考时间40秒;其他步骤添加思考时间5秒。 新增盘点单集合点设置:模拟数量:5,超时时间30秒。 场景配置: 新增采购订单场景配置:取样器错误后执行动作:继续;线程数:10;Ramp-Up时间:20秒;循环10次。 新增盘点单场景配置:取样器错误后执行动作:启动下一进程循环;线程数:10;Ramp-Up时间:20秒;持续时间:10分钟;启动不延迟。 使用非GUI模式运行。截图要求:一共2张图,分别为:①新增采购订单场景配置截图;②非GUI运行界面截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Latencies Over Time截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品分类添加接口描述如下:接口功能:提供商品分类新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/category/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品分类名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/category/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品分类修改接口描述如下:接口功能:提供商品分类修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/category/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品分类名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/category/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。全国职业院校技能大赛赛项规程赛项名称: 软件测试英文名称: Software Testing赛项组别: 高等职业教育赛项编号: GZ034一、赛项信息赛项类别每年赛 隔年赛(单数年/双数年)赛项组别□中等职业教育 高等职业教育学生赛(□个人/团体) □教师赛(试点) □师生同赛(试点)涉及专业大类、专业类、专业及核心课程专业大类 专业类 专业名称 核心课程(对应每个专业,明确涉及的专业核心课程)51电子与信息大类 5102计算机类 510201计算机应用技术 数据库技术及应用前端设计与开发系统部署与运维510203软件技术 软件测试面向对象程序设计数据结构510213移动应用开发 移动端应用测试技术移动端应用开发移动端项目开发实战510214工业软件开发技术 软件测试技术软件工程工业应用软件开发31电子与信息大类 3102计算机类 310201计算机应用工程 软件测试技术软件工程服务器管理与配置310203软件工程技术 软件质量保证与测试面向对象程序设计软件工程对接产业行业、对应岗位(群)及核心能力产业行业 岗位(群) 核心能力(对应每个岗位(群),明确核心能力要求)新一代信息技术 计算机软件测试 1.具备数据库设计与应用、计算机系统操作等能力2.具备软件设计、开发、测试等能力3.具备软件安装、实施与运维服务能力4.具有探究学习、终身学习和可持续发展的能力计算机程序设计 1.具备项目管理、软件需求分析、软件设计的能力2.具备服务器和网络设备的选型、安装、调试和维护的能力3.具备编写测试方案,进行软件测试的能力4.具备分析问题和解决问题的能力5.具有探究学习、终身学习和可持续发展的能力计算机软件工程技术 1.具备使用常见测试工具,依据软件测试方法进行软件测试的能力2.具备软件项目实施、运维、管理等能力3.具备从事软件工程职业提供中高端服务的能力4.具备诚实守信的职业道德,遵守软件行业相关的法律法规的能力5.具有探究学习、终身学习和可持续发展的能力信息系统运行维护 1.具备数据库应用、前端开发等程序设计能力2.具备网络设备的运维与管理能力3.具备信息系统部署与运维能力4.具备适应产业数字化发展需求的数字技术和信息技术发展能力5.具有探究学习、终身学习和可持续发展的能力二、竞赛目标软件是新一代信息技术的灵魂,是数字经济发展的基础,是制造强国、网络强国、数字中国建设的关键支撑。软件测试是保障计算机软件质量最重要的环节,能够提升软件产品的安全、可控,提升软件产品的潜在价值。近年来,随着信息化行业的高速发展,软件质量以及软件质量控制日益成为人们关注的焦点,软件测试作为信息化建设的强制性质量保障手段,需求增长旺盛。本赛项竞赛内容以新一代信息技术产业需求为导向,以企业级真实项目为载体,以岗位工作过程为任务设计模式,以基于微服务架构的业务系统为被测对象,对接程序静态分析、动态测试、自动化测试等新技术,全面检验参赛选手软件设计、开发、测试、运维等方面的知识;软件设计、开发、测试、运维等方面的能力;职业道德、工作态度、人际交往、团队合作、工匠精神等方面的素养。促进教学过程与生产过程对接、课程内容与职业标准对接、专业设置与产业需求对接,推进软件测试人才培养,深化软件测试实践教学改革,探索产教研融合的软件测试方向培养模式,从而促进职普融通、产教融合、科教融汇,满足产教协同育人目标,引领计算机类专业建设和岗课赛证综合教学改革。三、竞赛内容1.本赛项考查的技术技能和涵盖的职业典型工作任务(见表1)表 1 “软件测试”技术技能以及对应的典型工作任务任务项 任务名称 职业典型工作任务任务一 环境搭建及系统部署 测试环境搭建与配置、应用系统安装与部署任务二 单元测试 单元测试要求分析、代码设计、设计测试数据、编写测试脚本和测试执行等任务三 测试文档 测试计划、测试报告文档设计与编写任务四 功能测试 测试用例设计、测试执行和Bug记录任务五 自动化测试 自动化测试需求分析、工具使用、代码设计和测试执行等任务六 性能测试 性能需求分析、测试方案制定、工具使用、测试执行和结果分析等任务七 接口测试 接口描述分析、工具使用和测试执行等职业素养 团队合作能力以及文明竞赛等职业素养2.专业核心能力与职业综合能力竞赛对接软件测试相关标准,以“ERP管理平台”为被测系统,围绕软件测试领域的主流技术及工具,考查选手面对实际问题的综合分析能力,对测试环境部署及配置的动手能力,对测试文档、测试用例的设计能力,对单元测试、自动化测试、性能测试、接口测试等测试工具及方法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。3.创新、创意的范围与方向竞赛内容中“测试文档”任务采用多测试流程的综合性计划及总结设计,“自动化测试”任务采用Unittest+Page Object+数据驱动+测试报告的企业级集成平台环境,更加符合企业真实工作过程、真实管理过程。4.竞赛内容结构、成绩比例(见表2)表 2 “软件测试”竞赛内容结构、成绩比例任务项 任务名称 成绩比例任务一 环境搭建及系统部署 5%任务二 单元测试 10%任务三 测试文档 5%5%任务四 功能测试 10%15%任务五 自动化测试 20%任务六 性能测试 18%任务七 接口测试 7%职业素养 5%5.竞赛任务、比赛时长及分值配比(见表3)表 3 “软件测试”竞赛任务、比赛时长及分值配比表任务项 任务名称 主要内容 比赛时长 分值任务一 环境搭建及系统部署 根据题目要求搭建与配置JDK、MySQL、Tomcat等环境,安装与部署应用系统,并能够通过浏览器访问 8小时 5分任务二 单元测试 根据题目要求编写Java程序,设计测试用例,执行单元测试,考查语句、判定、条件等覆盖方法,JUnit断言、参数化设置、测试套件等方法,最终编写单元测试报告 10分任务三 测试文档 按照整体测试情况,设计测试计划文档,针对功能测试、自动化测试、性能测试、接口测试的范围、进度、风险等内容进行计划 5分按照整体测试情况,设计测试报告文档,针对功能测试、自动化测试、性能测试、接口测试等任务测试情况及结果进行总结归纳 5分任务四 功能测试 根据需求说明书设计测试用例,考察等价类划分法、边界值法等测试用例设计方法,最终按照模板对测试用例进行规范描述 10分根据测试用例执行功能测试,考察功能测试执行、Bug定位等,最终按照模板对Bug进行规范描述 15分任务五 自动化测试 根据题目要求编写并执行自动化测试脚本,考查浏览器基本操作、页面元素进行识别并定位、Selenium基本方法使用、Unittest框架、数据驱动、数据断言、测试报告、Page Object设计模式等,最终编写自动化测试报告 20分任务六 性能测试 根据题目要求录制/添加脚本、设置场景,考察性能测试工具(LoadRunner、JMeter)的脚本录制/添加、检查点、参数化、集合点、关联、事务、场景设置及运行等,最终编写性能测试报告 18分任务七 接口测试 根据题目要求设置请求、验证接口,考察接口测试工具(PostMan)的接口请求设置、参数设置、变量设置、测试断言、数据驱动、添加Cookie等,最终编写接口测试报告 7分职业素养 团队分工明确合理、操作规范、文明竞赛 5分合计 100分四、竞赛方式竞赛形式:线下比赛。组队方式:团体赛。每支参赛队由2名选手组成,不得跨校组队,可配指导教师,指导教师须为本校专兼职教师,每队限报2名指导教师。参赛选手须为高等职业学校专科、高等职业学校本科全日制在籍学生(以报名时的学籍信息为准)。五年制高等职业教育四、五年级学生可参加比赛。凡在往届全国职业院校技能大赛中获一等奖的选手,不能再参加同一项目同一组别的比赛。五、竞赛流程本赛项竞赛流程见表4。日期 时间 事项竞赛前2天 20:00前 裁判、仲裁、监督报到竞赛前1天 09:00-14:00 参赛队报到,安排住宿,领取资料09:00-12:00 裁判培训会议13:00-14:00 裁判工作会议14:00-15:00 领队会15:00-16:00 开赛式16:00-17:00 熟悉赛场17:15 检查封闭赛场竞赛当天 07:40 参赛队到达竞赛场地前集合07:40-08:00 大赛检录08:00-08:20 第一次抽签加密(抽序号)08:20-08:40 第二次抽签加密(抽工位号)08:40-09:00 设备工具检查确认、题目发放09:00-17:00 竞赛进行17:00-19:00 申诉受理19:00-22:00 评分核分22:00-22:30 抽检复核竞赛后1天 8:30-8:30 解密8:30-9:30 成绩公布9:30-11:30 闭赛式(宣布成绩、颁奖)表 4 “软件测试”竞赛流程表本赛项竞赛流程见图1。图 1 “软件测试”竞赛流程图六、竞赛规则1.选手报名参赛选手须为高等职业学校专科、高等职业学校本科全日制在籍学生(以报名时的学籍信息为准)。五年制高等职业教育四、五年级学生可参加比赛。凡在往届全国职业院校技能大赛中获一等奖的选手,不能再参加同一项目同一组别的比赛。2.熟悉场地竞赛前1日安排各参赛队领队、指导教师、参赛选手熟悉赛场。3.入场规则参赛选手按规定时间到达指定地点,必须携带参赛证件,进行检录、一次加密、二次加密等,最终确定工位,选手迟到10分钟取消比赛资格。严禁参赛选手、赛项裁判、工作人员私自携带通讯、摄录设备进入比赛场地。参赛选手所需硬件、软件和辅助工具统一提供,参赛队不得使用自带的任何有存储功能的设备,如硬盘、光盘、U盘、移动设备等。参赛选手进入比赛工位并在比赛开始前领取比赛任务,比赛正式开始后方可进行相关操作。4.赛场规则在比赛过程中,参赛选手如有疑问,应举手示意,现场裁判应按要求及时予以答疑。如遇设备或软件等故障,参赛选手应举手示意,现场裁判、技术人员等应及时予以解决。确因计算机软件或硬件故障,致使操作无法继续,经裁判长确认,予以启用备用设备。参赛选手不得因各种原因提前结束比赛。如确因不可抗因素需要离开赛场的,须向现场裁判员举手示意,经裁判员许可并完成记录后,方可离开。凡在竞赛期间内提前离开的选手,不得返回赛场。5.离场规则比赛时间结束,参赛选手应全体起立,结束操作。参赛选手要确认已成功提交竞赛要求的配置文件和文档,裁判员与参赛选手一起签字确认,经工作人员查收清点所有文档后方可离开赛场,离开赛场时不得带走任何资料。6.成绩评定与结果公布比赛结束后评分裁判方可入场进行成绩评判,根据评分标准针对选手提交成果物进行结果评分,由裁判长进行各项任务统分,由加密裁判进行解密,得出最终竞赛成绩。最终竞赛成绩经复核无误,由裁判长、监督仲裁长签字确认后,以纸质形式向全体参赛队进行公布,并在闭赛式上予以宣布。七、技术规范1. 本赛项遵循的相关标准(见表5)表 5 “软件测试”遵循的相关标准序号 标准号 中文标准名称1 GB/T25000.1-2010 软件质量要求与评价(SQuaRE)指南2 GB/T 25000.10-2016 软件质量要求与评价(SQuaRE)第 10 部分:系统与软件质量模型3 GB/T 25000.51-2016 软件质量要求与评价(SQuaRE)第 51 部分:商业现货(COTS)软件产品的质量要求与评测细则4 GB/T 25000.62-2014 软件质量要求与评价(SQuaRE)易用性测试报告行业通用格式(CIF)5 GB/T 15532-2008 计算机软件测试规范6 GB/T 30264.2-2013 软件工程 自动化测试能力 第2部分:从业人员能力等级模型7 GB/T 38634.1-2020 系统与软件工程 软件测试 第1部分:概念和定义8 GB/T 38634.2-2020 系统与软件工程 软件测试 第2部分:测试过程9 GB/T 38634.3-2020 系统与软件工程 软件测试 第3部分:测试文档10 GB/T 38634.4-2020 系统与软件工程 软件测试 第4部分:测试技术11 GB/T 38639-2020 系统与软件工程 软件组合测试方法12 GB/T 39788-2021 系统与软件工程 性能测试方法13 T/BSIA 001—2020 Web应用软件测试职业技能等级标准2. 设备使用与操作规范在开机状态下,禁止带电插拔计算机的连线或部件,禁止用力碰撞和搬动主机。使用计算机时,禁止私设各种密码;未经同意,禁止擅自对计算机进行低格、分区、格式化等破坏性操作。八、技术环境(一)竞赛环境竞赛现场设置竞赛区、裁判区、技术支持区、服务区等,以上区域应保证良好的采光、照明和通风;应提供稳定的水、电和供电应急设备。其中:竞赛区:每个竞赛工位标有工位编号,面积在9㎡左右,工位之间由隔板隔开,确保互不干扰。每个工位配备单相220V/3A以上交流电源,配有工作台用于摆放计算机和其它调试设备工具等,配备2把工作椅。裁判区:供裁判工作及休息,配备满足需要的办公设备。技术支持区:为技术支持人员提供固定工位、电源保障,为参赛选手竞赛提供技术支持。服务区:提供医疗等服务保障。(二)技术平台1. 竞赛设备竞赛使用的各类设备技术参数见表6。表 6 “软件测试”使用设备参数表设备类别 数量 设备用途 基本配置服务器 每支参赛队1台 竞赛软件平台部署 CPU:性能不低于至强银牌4210;内存:≧128GB;硬盘:≧1T客户端 每支参赛队2台 竞赛选手比赛使用 CPU:I7及以上;内存:≧8GB;硬盘:≧500GB移动客户端 每支参赛队1台 操作系统:Android12及以上或IOS14及以上;内存:≧4GB2. 竞赛软件平台软件测试实训系统集教学、实训、竞赛为一体,以Docker为基础,对计算资源进行轻量级虚拟化,内嵌被测系统——“ERP管理平台”。“ERP管理平台”内置一定数量Bug,支持基于Web及App端的功能测试、自动化测试、性能测试、接口测试、单元测试等。主要模块包括登录、个人中心、系统消息、商品信息—商品管理、商品信息—商品品牌、商品信息—商品单位、商品信息—商品分类、仓库信息、客户信息、供应商信息、采购订单、采购入库、采购退货、库存分布、库存状况、库存预警、出库审核、入库审核、库存盘点、库存调拨、销售订单、销售出库、销售退货、生产计划、生产耗材、生产入库、收入结算、支出结算。主要角色包括:系统管理员、采购专员、采购主管、仓库专员、仓库主管、销售专员、销售主管、生产专员、生产主管、结算专员、结算主管。3. 软件工具竞赛使用软件工具见表7。表 7 “软件测试”软件工具表设备类别 软件类别 软件名称客户端软件工具 操作系统 Windows10 64位浏览器 Chrome(在线最新)Microsoft Edge(在线最新)浏览器驱动 Chromedriver(Chrome对应版本)文档编辑器 WPS截图工具 Windows10系统自带输入法 搜狗拼音输入法、搜狗五笔输入法JDK环境 JDK-14.0.2_Windows-X64_bin.exe环境搭建及系统部署 VirtualBox-6.1.22-144080-WinCentOS-7-x86_64-DVD-1810.isoJDK-8u271-linux-x64.tar.gzmysql-5.6.42-linux-glibc2.12-x86_64.tar.gzapache-tomcat-8.5.63.tar.gzsuthr.sqlsuthr.war单元测试 Eclipse_Version:2022-03(4.23.0)junit-4.13.2.jarhamcrest-core-1.3.jarhamcrest-library-1.3.jar自动化测试 python-3.10.6-amd64pycharm-community-2022.2.1selenium(4.4.3)ddt(1.6.0)性能测试 FiddlerSetupapache-jmeter-5.5loadrunner2022—Micro_Focus_LoadRunner_2022_Community_Edition接口测试 Postman-win64-10.10.9竞赛样题见附件。十、赛项安全(一)比赛环境1. 赛场布置,赛场内的器材、设备,应符合国家有关安全规定。2. 赛场周围要设立警戒线,防止无关人员进入发生意外事件。3. 承办院校应提供保障应急预案实施的条件,明确制度和预案。4. 赛项执委会须会同承办院校制定开放赛场和体验区的人员疏导方案。5. 大赛期间,赛项承办院校须在赛场设置医疗医护工作站。6. 参赛选手、赛项裁判、工作人员严禁携带通讯、摄录设备和未经许可的记录用具进入比赛区域。(二)生活环境1. 比赛期间,原则上由承办院校统一安排参赛选手和指导教师食宿。承办院校须尊重少数民族参赛人员的宗教信仰及文化习俗。2. 比赛期间安排的住宿地应具有宾馆/住宿经营许可资质。3. 大赛期间组织的参观和观摩活动的交通安全由承办校负责。(三)组队责任1. 各省、自治区、直辖市在组织参赛队时,须安排为参赛选手购买大赛期间的人身意外伤害保险。2. 各省、自治区、直辖市代表队组成后,须制定相关管理制度,并对所有选手、指导教师进行安全教育。(四)应急处理比赛期间发生意外事故,发现者应第一时间报告赛项执委会,同时采取措施避免事态扩大。赛项执委会应立即启动预案予以解决并报告大赛执委会。十一、成绩评定(一)评分标准本赛项评分标准见表8。表 8 “软件测试”评分标准任务 考查点 评分标准 评分细则 分值任务一 环境搭建及系统部署 主要评分点:测试环境搭建与配置及应用系统安装与部署相关截图正确 测试环境搭建与配置过程及结果截图 5分应用系统安装与部署过程及结果截图任务二 单元测试 主要评分点:各题目程序源代码规范及正确、测试数据和测试方法代码正确、执行结果截图正确 程序源代码 10分测试数据和测试方法代码执行结果截图任务三 测试文档 设计测试计划文档 主要评分点:明确测试范围、合理并完备的进行任务分配、制定有效完备的测试策略等 概述、测试任务、测试资源、测试计划、发布标准、相关风险 5分设计测试报告文档 主要评分点:测试总结报告内容完整、测试回顾清晰、用例汇总正确、Bug汇总正确、测试结论准确 概述、测试结果文档、测试设计、测试回顾、用例汇总、Bug汇总、测试结论 5分任务四 功能测试 设计测试用例 主要评分点:测试用例数量覆盖需求程度、重点测试用例数量覆盖复杂逻辑程度、测试用例整理设计规范性 用例数量。每写一条规范的测试用例得分=3分/用例数量(不能有重复的测试用例,编写要符合需求且正确) 10分重点测试用例数量。每发现1个得分=6分/重点测试用例数量(不能有重复的测试用例,编写要符合需求且正确)测试用例编写符合测试用例规范执行功能测试 主要评分点:Bug数量覆盖系统测试程度、重点Bug数量覆盖隐藏问题程度、Bug整理编写规范性 Bug数量。每发现一个Bug得分=4分/Bug数量(不能有重复的bug,描述要规范且正确) 15分重点Bug数量。每发现一个重点Bug得分=10分/重点Bug数量(不能有重复的bug,描述要规范且正确)Bug编写符合测Bug规范任务五 自动化测试 主要评分点包括:术语定义描述清晰、各题目自动化测试脚本代码设计正确 术语定义描述 20分自动化测试脚本代码任务六 性能测试 主要评分点:术语定义描述清晰、LoadRunner工具正确进行性能测试、JMeter工具正确进行性能测试 术语定义描述 18分测试策略描述性能测试实施过程执行截图执行结果填写任务七 接口测试 主要评分点:术语定义描述清晰、各题目PostMan工具正确进行接口测试 术语定义描述 7分接口测试实施过程执行截图职业素养 主要评分点:竞赛团队分工明确合理、操作规范、文明竞赛 团队分工明确合理 5分操作规范文明竞赛(二)评分方式1. 裁判员人数和组成条件要求(1)本竞赛参与赛项成绩管理的组织机构包括裁判组、监督仲裁组。裁判组实行“裁判长负责制”,设裁判长1名、加密裁判2名、现场裁判12名、评分裁判20名,共计35人,组成条件见表9:表 9 “软件测试”裁判员组成条件职责 专业技术方向 知识能力要求 执裁、教学、工作经历 专业技术职称(职业资格等级) 人数裁判长 电子与信息 熟悉软件测试流程 执裁过全国职业院校技能大赛,教授信息技术相关课程 高级 1评分裁判 电子与信息 熟悉软件测试流程 执裁过省级竞赛,教授过信息技术相关课程 高级 20现场裁判 电子与信息 熟悉软件测试流程 教授过信息技术相关课程 中级及以上 12加密裁判 无 无 无 中级及以上 2(2)监督仲裁组对裁判组的工作进行全程监督,并对竞赛成绩抽检复核。(3)监督仲裁组负责接受由参赛队领队提出的对裁判结果的书面申诉,组织复议并及时反馈复议结果。(4)竞赛将制定裁判遴选管理办法、赛事保密细则和预案、命题管理办法等制度,保证竞赛的公平公正。2. 裁判评分方法本赛项采用结果评分,所有任务均为客观评分。根据评分标准设计评分表,对照参考答案和选手提交结果进行评分,并在评分表中进行统计汇总。裁判需进行随机抽签分组,各裁判小组采取随机抽签针对不同任务独立评分,确保成绩评定严谨、客观、准确。3. 成绩产生方法各裁判小组完成本组评分后汇总本组评分表,计算并核对成绩,本组裁判员签字确认后交予裁判长,裁判长汇总各小组的各任务评分表,核对成绩,最终得出竞赛成绩。4. 成绩审核方法为保障成绩评判的准确性,监督仲裁组将对赛项总成绩排名前30%的所有参赛队的成绩进行复核;对其余成绩进行抽检复核,抽检覆盖率不得低于15%。如发现成绩错误以书面方式及时告知裁判长,由裁判长更正成绩并签字确认。复核、抽检错误率超过5%的,裁判组将对所有成绩进行复核。5. 成绩公布方法最终竞赛成绩经复核无误,加密裁判在监督人员监督下进行二次解密,解密后由裁判长、监督仲裁长签字确认,以纸质形式向全体参赛队进行公布,并在闭赛式上予以宣布。十二、奖项设置1. 选手奖励本赛项奖项设团体奖。以赛项实际参赛队(团体赛)总数为基数,设定为:一等奖占比10%,二等奖占比20%,三等奖占比30%,小数点后四舍五入。若成绩评判出现同分情况,按照任务分值权重顺序的得分高低排序,即总成绩相同的情况下比较任务四的成绩,任务四成绩高的排名优先,如果任务四成绩也相同,则按任务五的成绩进行排名,以此类推完成相同成绩的排序。如果所有任务分值相同,则查看文档撰写规范、职业素养的分值进行排序。2. 指导教师奖励获得一等奖的参赛队的指导教师获“优秀指导教师奖”。十三、赛项预案赛场备用工位:赛场提供占总参赛队伍10%的备用工位。竞赛系统可靠性:竞赛系统使用的服务器应进行冗余,数据库、存储应使用高可用架构。提前开始运行,经过多次压力测试,由学校组织的真实竞赛环境测试。竞赛备用服务器、客户机、移动端设备:现场提供占总参赛队伍10%的备用服务器、客户机、移动端设备。现场应急预案详情,如下:服务器问题预案若服务器在比赛过程中出现卡顿、死机等情况,参赛选手举手示意裁判,在裁判与技术支持人员确定情况后,可更换服务器。更换服务器的等待时间,可在比赛结束后延时。交换机问题预案若交换机在比赛过程中出现传输速度慢或无故中断等情况,参赛选手举手示意裁判,在裁判与技术支持人员确定情况后,可更换交换机。更换交换机的等待时间,可在比赛结束后延时。PC机问题预案若PC机在比赛过程中出现死机、蓝屏等现象(重启后无法解决),参赛选手举手示意裁判,在裁判与技术支持人员确定情况后,可更换备用工位或更换PC机进行答题。十四、竞赛须知(一)参赛队须知1. 参赛队应该参加赛项承办校组织的闭赛式等各项赛事活动。2. 在赛事期间,领队及参赛队其他成员不得私自接触裁判,凡发现有弄虚作假者,取消其参赛资格,成绩无效。3. 所有参赛人员须按照赛项规程要求按照完成赛项评价工作。4. 对于有碍比赛公正和比赛正常进行的参赛队,视其情节轻重,按照《全国职业院校技能大赛奖惩办法》给予警告、取消比赛成绩、通报批评等处理。其中,对于比赛过程及有关活动造成重大影响的,以适当方式通告参赛院校或其所属地区的教育行政主管部门依据有关规定给予行政或纪律处分,同时停止该院校参加全国职业院校技能大赛1年(届)。涉及刑事犯罪的移交司法机关处理。5. 各省、自治区、直辖市在组织参赛队时,须安排为参赛队购买大赛期间的人身意外伤害保险。(二)指导教师须知1. 各参赛代表队要发扬良好道德风尚,听从指挥,服从裁判,不弄虚作假。如发现弄虚作假者,取消参赛资格,名次无效。2. 各代表队领队要坚决执行竞赛的各项规定,加强对参赛人员的管理,做好赛前准备工作,督促选手带好证件等竞赛相关材料。3. 竞赛过程中,除参加竞赛的选手、执行裁判员、现场工作人员和经批准的人员外,领队、指导教师及其他人员一律不得进入竞赛现场。4. 参赛代表队若对竞赛过程有异议,在规定的时间内由领队向赛项仲裁组提出书面报告。5. 对申诉的仲裁结果,领队要带头服从和执行,并做好选手工作。参赛选手不得因申诉或对处理意见不服而停止竞赛,否则以弃权处理。6. 指导老师应及时查看大赛专用网页有关赛项的通知和内容,认真研究和掌握本赛项竞赛的规程、技术规范和赛场要求,指导选手做好赛前的一切技术准备和竞赛准备。(三)参赛选手须知1. 参赛选手在报名获得确认后,原则上不再更换。如在筹备过程中,选手因故不能参赛,需出具书面说明并按相关参赛选手资格要求补充人员并接受审核;竞赛开始后,参赛队不得更换参赛选手,允许队员缺席。不允许更换新的指导教师,允许指导教师缺席。2. 参赛选手严格遵守赛场规章、操作规程和工艺准则,保证人身及设备安全,接受裁判员的监督和警示,文明竞赛。3. 参赛选手凭证进入赛场,在赛场内操作期间应当始终佩戴参赛凭证以备检查。4. 参赛选手进入赛场,不允许携带任何书籍和其他纸质资料(相关技术资料的电子文档由工作人员提供),不允许携带通讯工具和存储设备(如U盘)。竞赛统一提供计算机以及应用软件。5. 各参赛队应在竞赛开始前一天规定的时间段进入赛场熟悉环境。入场后,赛场工作人员与参赛选手共同确认操作条件及设备状况,参赛队员必须确认材料、工具等。6. 竞赛时,在收到开赛信号前不得启动操作设备。在指定赛位上完成竞赛项目,严禁作弊行为。7. 竞赛过程中,因严重操作失误或安全事故不能进行比赛的,现场裁判员有权中止该队比赛。8. 选手在比赛期间不能离场,食品、饮水等由赛场统一提供。选手休息、饮食或入厕时间均计算在比赛时间内。9. 凡在竞赛期间提前离开的选手,当天不得返回赛场。10. 为培养技术技能人才的工作风格,在参赛期间,选手应当注意保持工作环境及设备摆放符合企业生产“5S”(即整理、整顿、清扫、清洁和素养)的原则,如果过于脏乱,裁判员有权酌情扣分。11. 在竞赛中如遇非人为因素造成的设备故障,经裁判员确认后,可向裁判长申请补足排除故障的时间。12. 参赛选手欲提前结束比赛,应向裁判员举手示意,由裁判员记录竞赛终止时间。竞赛终止后,不得再进行任何与竞赛有关的操作。13. 各竞赛队按照大赛要求和赛题要求提交竞赛结果,禁止在竞赛结果上做任何与竞赛无关的记号。14. 竞赛结束后,参赛队要确认成功提交竞赛要求的文件,裁判员在比赛结果的规定位置做标记,并与参赛队一起签字确认。15. 参赛选手需以端庄的仪容仪表,优雅的行为举止,标准规范的操作进行竞赛。(四)工作人员须知1. 赛项全体工作人员必须服从统一指挥,要以高度负责的态度做好比赛服务工作。2. 全体工作人员要按照工作分区准时到岗,尽职尽责,做好职责工作并做好临时性工作,保证比赛顺利进行。3. 全体工作人员必须佩戴标志,认真检查证件,经核对无误后方可允许相关人员进入指定地点。4. 如遇突发事件要及时报告,同时做好疏导工作,避免重大事故发生,确保大赛圆满成功。5. 各工作组负责人,要坚守岗位,组织落实本组成员高效率完成各自工作任务,做好监督协调工作。6. 全体工作人员不得在比赛场内接打电话,以保证赛场设施的正常工作。十五、申诉与仲裁1. 各参赛队对不符合大赛和赛项规程规定的仪器、设备、工装、材料、物件、计算机软硬件、竞赛使用工具、用品,竞赛执裁、赛场管理,以及工作人员的不规范行为等,可向赛项监督仲裁组提出申诉。申诉主体为参赛队领队。参赛队领队可在比赛结束后(选手赛场比赛内容全部完成)2小时之内向监督仲裁组提出书面申诉。2. 书面申诉应对申诉事件的现象、发生时间、涉及人员、申诉依据等进行充分、实事求是的叙述,并由领队亲笔签名。非书面申诉不予受理。3. 赛项仲裁工作组在接到申诉报告后的2小时内组织复议,并及时将复议结果以书面形式告知申诉方。申诉方对复议结果仍有异议,可由领队向大赛仲裁委员会提出申诉。大赛仲裁委员会的仲裁结果为最终结果。4. 仲裁结果由申诉人签收,不能代收,如在约定时间和地点申诉人离开,视为自行放弃申诉。5. 申诉方可随时提出放弃申诉。6. 申诉方不得以任何理由采取过激行为扰乱赛场秩序。十六、竞赛观摩本赛项提供公开观摩区,依据竞赛需求和职业特点设计,在竞赛不被干扰的前提下安全开放部分赛场。为保证大赛顺利进行,现场观摩应遵循以下纪律要求:1. 观摩人员需由赛项执委会批准,佩戴观摩证件在工作人员带领下沿指定路线、在指定区域内到现场观赛。2. 文明观赛,不得大声喧哗,服从赛场工作人员的指挥,杜绝各种违反赛场秩序的不文明行为。3. 观摩人员不得进入比赛区域,不可接触设备,同参赛选手、裁判交流,不得传递信息,不得采录竞赛现场数据资料,不得影响比赛的正常进行。4. 观摩者不可携带手机、平板电脑、智能手表等通讯工具进入赛场,对于各种违反赛场秩序的不文明行为,工作人员有权予以提醒、制止。十七、竞赛直播本赛项使用大屏幕实时转播现场实况。(一)直播方式1. 赛场内部署无盲点录像设备,能实时录制并播送赛场情况。2. 赛场外有大屏幕或投影,同步显示赛场内竞赛状况。(二)直播安排1. 对赛项赛场准备、开赛式和闭赛式、比赛期间进行录像。2. 从竞赛正式开始后,全程进行赛场实时录像直播。(三)直播内容1. 赛项执行委员会安排专人对赛项开闭赛式、比赛过程进行全程直播和录像。2. 制作参赛选手、指导教师采访实录,裁判专家点评和企业人士采访视频资料,突出赛项的技能重点与优势特色。为宣传、仲裁、资源转化提供全面的信息资料。以上内容通过赛项网站进行公开,提交技能大赛官网。十八、赛项成果赛项资源转化工作以提升职业院校学生技能水平、引领职业学校专业建设和教学改革为宗旨,形成满足职业教育教学需求、体现先进教学模式、反映职业教育先进水平的共享性资源成果。(一)成果形式资源转化成果包括基本资源和拓展资源。1. 基本资源:风采展示、技能概要、教学资源等。2. 拓展资源:理论试题库、项目案例库、技能素材库等。(二)主要内容1. 基本资源(1)风采展示:制作赛项宣传片、获奖代表队(选手)风采展示片。(2)技能概要:制作赛项技能介绍、技能操作要点、评价指标等。(3)教学资源:制作赛课融通教材、在线课程资源、学术交流资料、教学改革模式成果等资源。2. 拓展资源(1)理论试题库:制作相关理论知识的试题库。(2)项目案例库:制作以企业真实项目为载体的案例库。(3)技能素材库:制作相关实操技术技能的素材库。(三)方法途径1. 基本资源(1)风采展示:对赛项整体流程进行摄影摄像,对获奖代表队(选手)进行采访,最终形成可供专业媒体宣传播放的风采展示。(2)技能概要:参考《职业教育专业简介(2022年修订)》、赛项所属产业或覆盖行业中的标准与规范,制作技能介绍、技能操作要点、评价指标等材料,对接院校人才培养方案及企业岗位人才需求。(3)教学资源:以活页式教材、一体化教材模式,开发以学生为中心、以项目为纽带、以任务为载体、以工作过程为导向的赛课融通教材;以文本、视频、演示文稿等形式,开发以教授学生能力为目标的在线课程资源;组织参赛队开展学术交流,针对课程体系设计、教学模式改革、备赛训练经验等内容进行分享交流;组织职业院校开展教学改革研讨,分享各院校在人才培养模式、师资团队建设、产教融合实践等方面的教学改革模式成果。2. 拓展资源(1)理论试题库:针对赛项理论知识进行细分并完成试题库设计,最终以选择、判断、填空等形式表现。(2)项目案例库:选取多个企业真实项目进行案例库设计,最终以项目化实训指导文档、实际操作视频等形式表现。(3)技能素材库:针对赛项技术技能进行细分并完成素材库设计,最终以知识点讲义文档、实训指导文档、教学演示文稿、实际操作视频等形式表现。(四)目标数量和完成时间资源转化及开发计划见表10。表 10 “软件测试”资源转化及开发计划表资源名称 表现形式 资源数量 资源要求 完成时间基本资源 风采展示 赛项宣传片 视频 1个 15分钟以上 赛后30天内完成风采展示片 视频 1个 10分钟以上 赛后30天内完成技能概要 技能介绍 文本文档 1份 约10千字 赛后90天内完成技能要点 文本文档 1份 赛后90天内完成评价指标 文本文档 1份 赛后90天内完成教学资源 赛课融通教材 文本文档 1项 约50千字 赛后90天内完成在线课程资源 文本文档 40个 约20千字 赛后90天内完成演示文稿 40个 配套使用演示文稿 赛后90天内完成教学视频 40个 配套使用教学视频 赛后90天内完成学术交流资料 视频 1个 10分钟以上 赛后90天内完成教学改革模式成果 视频 1个 10分钟以上 赛后90天内完成拓展资源 理论试题库 文本文档 7份 约10千字 赛后90天内完成项目案例库 文本文档 7份 约10千字 赛后90天内完成素材资源库 文本文档 40个 约20千字 赛后90天内完成演示文稿 40个 配套使用演示文稿 赛后90天内完成教学视频 40个 配套使用教学视频 赛后90天内完成附件:2023 年全国职业院校技能大赛高等职业教育组“软件测试”赛项样题测试环境搭建与配置、应用系统安装与部署;单元测试要求分析、代码设计、设计测试数据、编写测试脚本和测试执行等;测试计划、测试报告文档设计与编写;Web端及App端测试用例设计、测试执行和Bug记录;自动化测试要求分析、工具使用、代码设计和测试执行等;性能测试要求分析、工具使用和测试执行等;接口测试要求分析、工具使用和测试执行等;团队合作能力及文明竞赛等职业素养。任务一:环境搭建及系统部署(5分)任务描述根据《A1-环境搭建及系统部署要求》完成测试环境搭建与配置,并安装与部署应用系统,最终能通过浏览器访问系统。按照《A2-环境搭建及系统部署报告模板》完成本任务。任务要求(1)环境搭建及系统部署报告应包括以下内容:① JDK相关截图;② MySQL相关截图;③ Tomcat相关截图;④ 应用系统相关截图。(2)工具要求:使用VirtualBox相关环境完成本任务。3. 任务成果XX-A2-环境搭建及系统部署报告.doc(XX代表工位号)。任务二:单元测试(10分)任务描述根据《A3-单元测试要求》进行程序设计,设计测试数据,编写单元测试代码,在Eclipse中完成编译和程序运行。按照《A4-单元测试报告模板》完成本任务。任务要求(1)单元测试报告应包括以下内容:① 程序源代码;② 单元测试代码;③ 单元测试结果截图。(2)工具要求:使用Eclipse相关环境完成本任务。注意:①全部测试数据组数须以最少量来达到测试要求。②单元测过程中,启动Eclipse后使用默认Workspacce(不可更改),必须在test-src中自行新建并完成相关代码设计(Referenced Libraries中已将junit、hamcrest-core、hamcrest-library等jar包导入完毕,若参赛选手删除jar包后果自行承担)。任务成果XX-A4-单元测试报告.doc(XX代表工位号)。任务三:测试文档(10分)测试计划(5分)(1)任务描述针对功能测试、自动化测试、性能测试、接口测试任务,划分和界定测试范围,分解测试任务,预估测试风险、测试工作量和测试进度。按照《A5-测试计划模板》完成本任务。(2)任务要求测试计划应包括以下内容:① 概述:项目背景、编写目的;② 测试任务:测试目的、测试参考文档、测试范围;③ 测试资源:软件配置、硬件配置、人员安排;④ 测试计划:整体测试进度规划、功能测试计划、自动化测试计划、性能测试计划、接口测试计划;⑤ 发布标准;⑥ 相关风险。(3)任务成果XX-A5-测试计划.doc(XX代表工位号)。2. 测试报告(5分)(1)任务描述针对功能测试、自动化测试、性能测试、接口测试任务,分析整体测试过程,归纳总结测试结果,得出最终测试结论。按照《A6-测试报告模版》完成本任务。(2)任务要求测试报告应包括以下内容:① 概述:项目背景、编写目的;② 测试结果文档;③ 测试设计:功能测试方法设计、自动化测试方法设计、性能测试方法设计、接口测试方法设计;④ 测试回顾:功能测试回顾、自动化测试回顾、性能测试回顾、接口测试回顾;⑤ 用例汇总;⑥ Bug汇总;⑦ 测试结论。(3)任务成果XX-A6-测试报告.doc(XX代表工位号)。任务四:功能测试(25分)测试用例(10分)(1)任务描述根据《A7-需求说明书》进行需求分析,理解业务功能,设计测试用例。按照《A8-测试用例模板》完成本任务。(2)任务要求测试用例应包括以下内容:① 按模块汇总测试用例数量;② 测试用例应包含以下元素:设备端、模块名称、功能项、用例说明、前置条件、输入、执行步骤、预期结果、重要程度、执行用例、测试结果。(3)任务成果XX-A8-测试用例.xls(XX代表工位号)。2. Bug清单(15分)(1)任务描述根据《A7-需求说明书》和测试用例,执行功能测试,发现Bug、记录Bug并对Bug截图。按照《A9-Bug清单模板》完成本任务。(2)任务要求① Bug清单应包括以下内容:按模块和Bug严重程度汇总Bug数量;Bug清单应包含以下元素:设备端、角色、模块名称、功能项、摘要描述、操作步骤、预期结果、实际结果、缺陷严重程度、附件说明(截图)。② Web端测试要求及App端测试要求:使用谷歌浏览器(Chrome)执行Web端功能测试(含界面测试);使用手机中预装的被测系统App执行App端测试(含界面测试)。任务成果XX-A9-Bug清单.xls(XX代表工位号)。任务五:自动化测试(20分)任务描述根据《A10-自动化测试要求》使用Selenium方法编写自动化测试脚本、执行自动化测试脚本。按照《A11-自动化测试报告模板》完成本任务。任务要求(1)自动化测试报告应包括以下内容:① 简介:目的、术语定义;② 自动化测试脚本编写:第一题、第二题、第三题、第四题。(2)工具要求:使用PyCharm相关环境完成本任务。注意:运行自动化测试脚本过程中,出现报错(网址输入错误、定位元素没有找到等原因),属于脚本编写错误,请自行调整;在PyCharm中编写自动化测试脚本时对于单引号、双引号、括号和点要在英文状态下进行编写;在将自动化测试脚本粘贴到自动化测试报告时要和在PyCharm中的脚本格式保持一致,同时在粘贴时不要出现将所有代码粘贴在一行中或出现空行情况。任务成果XX-A11-自动化测试报告.doc(XX代表工位号)。任务六:性能测试(18分)任务描述根据《A12-性能测试要求》使用性能测试工具录制/添加脚本、回放脚本、配置参数、设置场景并运行得出结果。按照《A13-性能测试报告模板》完成本任务。任务要求(1)性能测试报告应包括以下内容:① 简介:目的、术语定义;② 测试策略:测试方法、用例设计、测试场景;③ 性能测试实施过程:性能测试脚本设计、性能测试场景设计与场景执行、性能测试结果;④ 执行结果。(2)工具要求:使用LoadRunner、JMeter相关环境完成本任务。注意:1、打开LoadRunner相关软件需要使用管理员身份打开,由于未使用管理员身份打开而造成的问题由参赛选手自行承担;2、性能测试过程中,出现录制失败、回放失败、脚本执行失败、白屏、500错等情况,属于性能测试工具使用或配置错误,请调试。任务成果XX-A13-性能测试报告.doc(XX代表工位号)。任务七:接口测试(7分)任务描述根据《A14-接口测试要求》,使用接口测试工具进行发送请求、变量设置等,对系统结果进行验证。按照《A15-接口测试报告模板》完成本任务。任务要求(1)接口测试报告应包括以下内容:① 简介:目的、术语定义;② 接口测试实施过程;③ 执行结果。(2)工具要求:使用PostMan相关环境完成本任务。3. 任务成果XX-A15-接口测试报告.doc(XX代表工位号)。2023年全国职业院校技能大赛软件测试赛题第6套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:根据下列流程图编写程序实现相应分析处理并显示结果。返回结果“a=x:”(x为2、3或4);其中变量x、y均须为整型。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断期望结果值和实际返回值是否一致。题目2:根据输入的三条边值判断能组成何种三角形。三条边为变量a、b、c,范围为1≤边值≤10,不在范围内,提示“输入边值不在范围内”。不满足任意两边之和必须大于第三边,提示“输入边值不能组成三角形”。输入边值能组成三角形,只有2条边相同,显示“能组成等腰三角形”;三条边相等,显示“能组成等边三角形”;边值不满足特殊三角形显示“能组成普通三角形”。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断期望结果值和实际返回值是否一致。题目3:企业根据利润提成来发放奖金。将利润金额划分6个档位来提成。档位一:利润低于或等于10万元部分,提成10%。档位二:利润高于10万元并且低于或等于20万元部分,提成7.5%。档位三:利润高于20万元并且低于或等于40万元部分,提成5%。档位四:利润高于40万元并且低于或等于60万元部分,提成3%。档位五:利润高于60万元并且低于或等于100万元部分,提成1.5%。档位六:利润高于100万元部分,提成1%。编写程序根据输入的当月利润x计算出最终得到的总提成,输入利润已万为单位,x为整数。返回结果按照档次输出“总提成:y万”,y为计算的提成值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中is断言判断输出文字期望结果值和实际返回值是否一致。题目4:输入小写的字符串。如字符串前缀为ab开头,则将前缀ab替换为ef并打印出替换后字符串,返回文字“替换前缀后的字符串为:”和替换后字符串值;如后缀为cd并且前缀不为ab,替换字符串中所有cd为gh并打印出替换后字符串,返回文字“替换cd后的字符串为:”和替换后字符串值;否则全部字母大写输出,返回文字“大写字母的字符串为:”和转换后的字符串值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足条件覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待3秒并将浏览器窗口最大化;2. 引入By方法类;3. 通过NAME属性定位用户名输入框,并输入用户名XTGLY;4. 通过ID属性定位密码输入框,并输入密码123456;5. 通过CLASS_NAME方法定位登录按钮,使用click()方法点击登录按钮;6. 通过TAG_NAME复数方法定位商品管理页面的新增按钮,并使用click()方法点击;7. 通过XPATH方法定位并选择商品分类为“测试”;8. 通过CSS方法定位商品品牌下拉框;9. 通过Select类中的by_visible_text方法选择商品品牌为“测试”;10. 使用get_screenshot_as_file对页面进行截图操作(命名为test_Select01.png,存放在D盘根目录下)。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过NAME方法定位用户名输入框,通过ID方法定位密码输入框并输入账号和密码(XTGLY/123456),通过CLASS_NAME方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过NAME方法定位用户名输入框,通过CLASS_NAME方法定位密码输入框并输入账号和密码(XTGLY/123456),通过ID方法定位并点击登录按钮,使用NEME方法定位商品管理页面的查询条件中的商品品牌下拉框,通过Select类中的by_visible_text方法选择商品分类为“测试”;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品品牌名称 预期结果商品品牌名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过CLASS_NAME属性定位用户名输入框,并输入用户名XTGLY;7. 通过ID属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过TAG_NAME方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过PARTIAL_LINK_TEXT方法进行定位,使用click()方法点击“商品品牌”按钮;10. 通过TAG_NAME的复数形式定位并点击“新增”按钮;11. 通过CLASS_NAME方法定位商品品牌名称输入框并使用数据驱动输入“商品品牌名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过CLASS_NAME方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用CLASS_NAME方法封装用户名输入框,使用NAME方法封装密码输入框、使用ID方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品分类添加页面元素(使用PARTIAL_LINK_TEXT方法封装商品分类按钮,使用CSS方法封装新增按钮,使用XPATH方法封装商品分类名称输入框,使用CSS方法封装保存按钮,封装点击商品分类按钮、点击新增按钮、输入商品分类名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品分类名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:CusAdd。 脚本内容:系统管理员登录、进行新增客户操作。具体要求如下: 所有脚本存放在Action。客户名称前4位为固定值KHMC,联系人前3位为固定值LXR,固定值后面的字符可任意设置。对新增客户保存操作设置事务,事务名称:T_CusAdd。设置检查点,使用新增客户成功,服务器响应正文内容中的code键值对作为检查点。在新增客户保存操作前添加集合点,集合点名称:R_CusAdd。截图要求:一共1张图:①Action中新增客户保存操作部分截图。(2)脚本二: 脚本名称:InveAdd。 脚本内容:仓库主管登录、进行新增盘点单操作。具体要求如下: 所有脚本存放在Action。仓库任意选择,商品任意选择一种即可。对新增盘点单保存操作设置事务,事务名称:T_InveAdd。设置检查点,使用新增盘点单保存成功,服务器响应正文内容中的code键值对作为检查点。在新增盘点单保存操作前添加集合点,集合点名称:R_InveAdd。截图要求:一共1张图:①Action中新增盘点单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 对客户名称进行修改,前4位为固定值KHHF,固定值后面的字符可任意设置。 对联系人进行修改,前4位为固定值LXHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增客户业务。截图要求:一共1张图:①新增客户保存操作和回放日志截图。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增盘点单业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数:参数名称:letter,参数类型:文件,参数值:26个英文字母小写,每次出现随机取值。 新建参数:参数名称:uniNo,参数类型:唯一编号,编号从1开始,每个Vuser的块大小为200,编号格式:%04d。 对客户名称进行参数化设置:客户名称前4位固定值KHCS,固定值后面接2个随机小写字母和参数uniNo。 对联系人进行参数化设置:联系人前3位固定值LXR,固定值后面接2个随机小写字母和参数uniNo。 对联系电话进行参数化设置:只参数化联系电话的后8位,参数名称:phone,参数类型:随机数字,随机范围:1-9999,数字格式:%08lu,每次迭代更新。 脚本迭代次数3次。截图要求:一共1张图:①新增客户保存操作和参数列表截图。(2)脚本二参数化具体要求如下: 对保存操作进行参数化设置:点击保存或者保存并提交按钮。参数名称:status,参数类型:文件,每次迭代顺序取值。 新建参数化文件center.dat,文件中包含centerId字段,centerId输入系统预置的10条仓库id值。 对盘点仓库进行参数化设置:仓库ID使用参数centerId,使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代随机取值。 脚本迭代次数3次。截图要求:一共1张图:①新增盘点单保存操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增客户集合点前添加思考时间30秒,客户名称前4位固定值修改为KHCJ。 脚本修改:新增盘点单集合点前添加思考时间45秒。 选择新增客户和新增盘点单两个脚本进行场景设置。 用户分配选择用户组模式。场景计划方式选择用户组,运行模式选择实际计划。 所有集合点策略:当10个用户到达集合点时释放,超时时间20秒。 全局计划: 新增客户:场景开始后立即启动组;在每个虚拟用户运行前将其初始化;启动20个用户(每2秒启动1个)执行5分钟,执行完成后停止10个用户(每2秒停止1个)执行5分钟,执行完成后停止所有用户(每2秒停止1个)。 新增盘点单:在场景开始30秒后启动组;在每个虚拟用户运行前将其初始化;启动10个用户(每2秒启动1个)执行5分钟,执行完成后再启动10个用户(每2秒启动1个)执行5分钟,执行完成后停止所有用户(每2秒停止1个)。截图要求:一共2张图,分别为:①新增客户场景设计界面截图;②新增盘点单场景设计界面截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Total Passed Transactions截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:PurAndPlan。 测试计划名称:PurAndPlan。测试计划下添加两个线程组:(1)线程组一: 线程组名称:PurAdd。 线程组内容:采购专员登录、进行新增采购订单、保存并提交操作。具体要求如下: 仓库、供应商任意选择,商品任意选择一种即可。采购订单保存操作请求名称:采购订单保存;采购订单提交操作请求名称:采购订单提交。对采购订单保存并提交操作设置事务,事务名称:T_PurAdd。设置检查点,使用提交操作成功服务器的响应正文内容作为检查点,检查点名称Reg_PurAdd。截图要求:一共1张图:①新增采购订单保存操作截图。(2)线程组二: 线程组名称:PlanAdd。 线程组内容:生产专员登录、进行新增生产计划单、保存并提交操作。具体要求如下: 计划生产耗材和计划生产制品新增一行即可,商品任意选择一种。生产计划单保存并提交操作请求名称:保存并提交。对生产计划单保存并提交操作设置事务,事务名称:T_PlanAdd。设置检查点,使用保存并提交操作成功服务器的响应正文内容作为检查点,检查点名称Reg_PlanAdd。在新增生产计划单保存并提交操作前添加集合点,集合点名称:R_PlanAdd。截图要求:一共1张图:①新增生产计划单保存并提交操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增采购订单保存并提交业务。 保存并提交操作若需要关联,使用正则表达式提取器,参数名称PurId。截图要求:一共1张图:①新增采购订单提交操作截图。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增生产计划单保存并提交业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId、centerName两个字段,centerId输入系统预置的10条仓库id值,centerName输入对应的仓库名称值。 对仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称:centerId,仓库名称参数名称:centerName。 对采购数量进行参数化设置:使用Random函数实现参数化,范围:200-500。 对实际采购价进行参数化设置:使用Random函数实现参数化,范围:50-100。 脚本迭代次数3次。截图要求:一共1张图:①新增采购订单保存操作截图。(2)线程组二参数化具体要求如下: 对计划制品数量进行参数化设置:使用Random函数实现参数化,范围:1000-2000。 新建参数化文件center.dat,文件中包含centerId、centerCode、centerName三个字段,centerId输入系统预置的10条仓库id值,centerCode输入对应的仓库编号值,centerName输入对应的仓库名称值。 对计划生产制品仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称centerId,仓库编号参数名称centerCode,仓库名称参数名称centerName。 脚本迭代次数3次。截图要求:一共1张图:①新增生产计划单保存并提交操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增采购订单保存操作前添加思考时间35秒;新增生产计划单保存并提交操作前添加思考时间45秒;其他步骤添加思考时间5秒。 新增生产计划单集合点设置:模拟数量:5,超时时间30秒。 场景配置: 新增采购订单场景配置:取样器错误后执行动作:继续;线程数:20;Ramp-Up时间:20秒;循环6次。 新增生产计划单场景配置:取样器错误后执行动作:继续;线程数:15;Ramp-Up时间:15秒;循环6次。 使用非GUI模式运行。截图要求:一共2张图,分别为:①新增采购订单场景配置截图;②非GUI运行界面截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Hits Per Second截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品品牌添加接口描述如下:接口功能:提供商品品牌新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品品牌名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品品牌修改接口描述如下:接口功能:提供商品品牌修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品品牌名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/brand/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。2023年全国职业院校技能大赛软件测试赛题第5套赛项名称: 软件测试英文名称: Software Testing赛项编号: GZ034归属产业: 电子与信息大类赛项组别: 高等职业教育赛项主要内容:任务序号 技能竞赛模块名称 技能竞赛内容 权重比例 竞赛时间任务1 环境搭建及系统部署 根据软件测试竞赛项目需求,搭建与配置测试环境,安装与部署应用系统。 5% 480分钟任务2 单元测试 根据软件测试竞赛项目需求,编写应用程序,设计测试数据并得出测试结果,编写单元测试报告。 10%任务3 测试文档 根据软件测试竞赛项目需求,制定测试计划文档、测试总结报告文档。 10%任务4 功能测试 根据软件测试竞赛项目需求,设计功能测试用例,执行后,提交缺陷报告。 25%任务5 自动化测试 根据软件自动化测试的要求,编写并执行自动化测试脚本。 20%任务6 性能测试 根据软件性能测试的要求,执行性能测试 18%任务7 接口测试 根据软件接口测试的要求,执行接口测试 7%职业素养 竞赛团队分工明确合理、操作规范、文明竞赛、企业“5S”(整理、整顿、清扫、清洁和素养)等内容。 5%任务一 环境搭建及系统部署一、任务要求1. 使用VirtualBox中的CentOS系统(注:系统非纯净系统,可能存在如端口占用等情况)安装相关软件,解决安装中遇到的问题,所有操作都必须使用命令界面完成。2. CentOS系统root账户密码是:123456。3. 提供的相关部署文件都存放在CentOS系统/opt目录下。4. 安装配置JDK: 在CentOS系统中,使用提供的JDK安装包,安装JDK; 安装成功后,查看JDK版本信息; 截图要求:一共2张图,分别为:①JDK环境变量配置截图;②查看JDK版本信息截图。5. 安装配置MySQL: 在CentOS系统中,使用提供的MySQL安装包,安装MySQL; 将MySql的root账号密码修改为:root; MySQL安装成功后,初始化人力资源综合服务系统数据库(suthr.sql); 截图要求:一共2张图:①root账号成功登录MySQL截图;②初始化人力资源综合服务系统数据库命令截图。6. 安装配置Tomcat: 在CentOS系统中,使用提供的Tomcat安装包,安装Tomcat; Tomcat安装成功后,通过宿主机的浏览器访问Tomcat主页; 截图要求:一共2张图:①成功启动Tomcat服务截图;②通过浏览器访问Tomcat主页截图。7. 应用系统部署: 将人力资源系统(suthr.war)部署到Tomcat; 部署成功后,通过宿主机的浏览器访问系统登录页; 截图要求:一共2张图,分别为:①系统部署成功后,webapps目录截图;②通过浏览器访问系统登录页截图。二、报告编写根据环境搭建情况,参考环境搭建及系统部署报告模版,按要求截取环境搭建过程和结果截图并粘贴到模板中,完成环境搭建及系统部署报告。任务二 单元测试一、任务要求题目1:根据下列流程图编写程序实现相应处理,执行j=10*x-y返回文字“j1=:”和计算值,执行j=(x-y)*(10 %7)返回文字“j2=:”和计算值,执行j=y*log(x+10)返回文字“j3=:”和计算值。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足判定覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中startsWith断言判断输出文字结果开头期望结果值和实际返回值是否一致。题目2:输入一个大写字母一个小写字母。根据输入的第一个字母和周几英文单词的第一个大写字母判断是周几,如果无法根据第一个大写字母判断,则继续根据输入的第二个小写字母进行判断,最终返回正确的英文周几的单词。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertEquals判断期望结果值和实际返回值是否一致。题目3:邮箱注册需要填写邮箱地址和密码。其中要求邮箱格式“登录名@主机名.域名”,登录名为5个字母,主机名固定为下面2个163、126,域名为com或。密码为6个(含6)以上数字组成。填写正确则提示“信息正确”,否则根据实际情况提示“**不符合要求”(**为邮箱地址或密码)。编写程序代码,使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,每条测试数据需要在测试类中编写一个测试方法。使用assertThat中equalTo断言判断输出文字期望结果值和实际返回值是否一致。题目4:根据下列流程图编写程序实现相应分析处理并显示结果。使用JUnit框架编写测试类对编写的程序代码进行测试,测试类中设计最少的测试数据满足语句覆盖测试,测试类使用参数化测试(@Parameters)完成测试。使用assertEquals判断输入数据测试方法期望结果值和实际返回值是否一致。二、报告编写根据单元测试情况,参考单元测试报告模版,按要求将编写的java源代码、测试类相关代码以及相关截图粘贴到模板中,完成单元测试报告。任务三 测试文档一、测试计划1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试计划文档的编写目的】2. 测试任务2.1 测试目的【分别说明进行功能测试、自动化测试、性能测试、接口测试的目的】2.2 测试参考文档【说明测试过程所用的参考文档】2.3 测试范围【分别说明功能测试、自动化测试、性能测试、接口测试根据什么测试,以及具体测试内容】3. 测试资源3.1 软件配置【分别说明功能测试、自动化测试、性能测试、接口测试过程中所用的测试环境及工具】测试类型 测试环境及工具3.2 硬件配置【说客户端及移动端的相关硬件配置】设备项 数量 配置客户端移动端3.3 人力资源分配【说明测试人员的角色、职责及最终产出】人员(工位号) 角色 主要职责 产出4. 测试计划4.1 整体测试进度规划【说明各个测试阶段的时间及人员安排】测试阶段 时间安排 人员安排4.2 功能测试计划【说明功能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.3 自动化测试计划【说明自动化测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.4 性能测试计划【说明性能测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准4.5 接口测试计划【说明接口测试的目标、范围、技术、步骤、开始及结束标准】测试目标测试范围应用技术执行步骤开始标准完成标准5. 发布标准【说明功能测试、性能测试、接口测试、文档的测试完毕可发布标准】测试类型 发布标准6. 相关风险【说明测试过程中的假定风险以及如何应对】风险类型 风险详述 应对措施二、测试报告1. 概述1.1 项目背景【说明测试项目的整体背景】1.2 编写目的【说明测试报告的编写目的】2. 测试结果文档【说明测试结果产出的文档】3. 测试设计3.1 功能测试方法设计介绍【说明功能测试过程中所使用到的方法】3.2 自动化测试方法设计介绍【说明自动化测试过程中所使用到的方法】3.3 性能测试方法设计介绍【说明性能测试过程中所使用到的方法】3.4 接口测试方法设计介绍【说明接口测试过程中所使用到的方法】4. 测试回顾4.1 功能测试过程回顾【说明功能测试的整体流程及结果】4.2 自动化测试过程回顾【说明自动化测试的整体流程及结果】4.3 性能测试过程回顾【说明性能测试的整体流程及结果】4.4 接口测试过程回顾【说明接口测试的整体流程及结果】5. 用例汇总【说明测试用例汇总统计情况】设备端 功能模块 测试用例数 用例编写人(工位号) 执行人(工位号)用例合计(个)6. Bug汇总【说明缺陷Bug汇总统计情况】设备端 功能模块 Bug严重程度 Bug类型严重 很高 高 中 低 合计 功能 UI 建议性 合计合计(个)7. 测试结论【说明测试结果总结、过程问题统计、系统质量评价及团队经验教训】任务四 功能测试一、测试用例二、Bug清单任务五 自动化测试一、任务要求题目1:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 设置智能时间等待3秒并将浏览器窗口最大化;2. 引入By方法类;3. 通过NAME属性定位用户名输入框,并输入用户名XTGLY;4. 通过ID属性定位密码输入框,并输入密码123456;5. 通过TAG_NAME方法进行登录;6. 通过CSS方法定位商品管理页面的查询条件中的商品分类下拉框;7. 通过Select类中的by_index方法选择商品分类为“测试”;8. 通过XPATH方法定位商品管理页面的查询条件中的商品品牌下拉框;9. 通过Select类中的by_value方法选择商品品牌为“测试”;10. 使用get_screenshot_as_file对页面进行截图操作(命名为test_Select01.png,存放在D盘根目录下)。题目2:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。1. 搭建unittest框架;2. 引入By方法类;3. 定义setUp方法启动浏览器,增加3秒的智能等待,将浏览器窗口最大化;4. 定义tearDown方法关闭浏览器;5. 定义test_denglu01方法进入系统登录页面,通过CLASS_NAME方法定位用户名输入框,通过TAG_NAME方法复数形式定位密码输入框并输入账号和密码(XTGLY/123456),通过ID方法定位并点击登录按钮;6. 定义test_denglu02方法进入系统登录页面,通过CLASS_NAME方法定位用户名输入框,通过ID方法定位密码输入框并输入账号和密码(XTGLY/123456),通过TAG_NAME定位登录按钮并点击,通过PARTIAL_LINK_TEXT方法定位并点击“仓库信息”按钮,通过XPATH方法点击第一条信息的禁用按钮,使用accept方法关闭警告弹窗;7. 通过unittest.main()方法执行测试用例。题目3:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。测试数据:商品单位名称 预期结果商品单位名称必填,请重新输入。步骤1:新建csv格式的测试数据testdata.csv,并编写csvv.py脚本读取csv中的测试数据。步骤2:新建test01.py:1. 引入步骤1中的写好的数据读取的方法以及ddt方法类;2. 引入By方法类;3. 搭建unittest框架;4. 在setUp中打开谷歌浏览器,增加5秒的智能时间等待,将浏览器窗口最大化;5. 在tearDown中退出浏览器;6. 新建测试用例,通过NAME属性定位用户名输入框,并输入用户名XTGLY;7. 通过CLASS_NAME属性定位密码输入框,并输入密码123456;8. 查看登录页面中的登录按钮元素,通过ID方法定位登录按钮,使用click()方法点击登录按钮进入系统首页;9. 通过LINK_TEXT方法进行定位,使用click()方法点击“商品单位”按钮;10. 通过TAG_NAME的复数形式定位并点击“新增”按钮;11. 通过CLASS_NAME方法定位商品单位名称输入框并使用数据驱动输入“商品单位名称”;12. 通过XPATH方法定位并点击“保存”按钮;13. 通过CLASS_NAME方法定位并获取提示信息文字,通过assertEqual断言方法来验证预期结果和实际结果是否一致,如果不一致使用get_screenshot_as_file对页面进行截图操作;14. 通过unittest.main()方法执行测试用例。题目4:按照以下步骤在PyCharm中进行自动化测试脚本编写并执行。根据测试用例编写脚本:PO框架参考图:1. 新建EPR_PO文件夹;2. 在EPR_PO文件夹下新建driver文件夹和Website文件夹;3. 在driver文件夹下新建driver.py文件存放浏览器驱动;4. 在Website文件夹下新建test_case文件夹、test_report文件夹、test_data文件夹;5. 在test_case文件夹下新建model文件夹和page_object文件夹;6. 在model文件夹下新建function.py文件封装截图、数据驱动读取等方法;7. 在model文件夹下新建myunit.py文件封装unittest框架中的Setup(添加5秒的智能等待和浏览器窗口最大化)和tearDown(退出浏览器)等方法;8. 在test_report文件夹下新建BasePage.py文件封装selenium的基础操作类方法(get、find_element等);9. 在test_report文件夹下新建LogingPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装登录用例页面元素位置和操作(使用ID方法封装用户名输入框,使用NAME方法封装密码输入框、使用CLASS方法封装登录按钮位置,封装输入用户名、密码、点击登录按钮等操作);10. 在test_report文件夹下新建AddPage.py文件,引入BasePage.py中封装好的方法,引入By方法类,封装好商品品牌添加页面元素(使用LINK_TEXT方法封装商品品牌按钮,使用XPATH方法封装新增按钮,使用XPATH方法封装商品品牌名称输入框,使用CSS方法封装保存按钮,封装点击商品品牌按钮、点击新增按钮、输入商品品牌名称、点击保存按钮等操作),封装添加成功以及添加失败的提示信息文字;11. 在test_report文件夹新建srceenshot文件夹存放测试截图;12. 在test_data文件夹新建test_csv.csv文件存放测试数据;13. 在test_report文件夹下新建test_add.py文件,引入unittest、ddt以及之前封装好的model,LoginPage,AddPage中的方法类,根据用例编写6条测试用例脚本,创建data参数来接收测试数据,并使用数据驱动输入用户名和密码(XTGLY/123456),使用数据驱动输入商品品牌名称,然后进行截图操作,最后对每一条测试用例进行assertIn断言操作,对比提示信息是否和预期一致;14. 在Website文件夹下新建run_test.py文件使用discover方法执行test_add.py测试用例并引入HTMLTestRunner方法生成html测试报告(测试报告title名为:Test Report,description内容为erp test)。二、报告编写根据自动化测试情况,参考自动化测试报告模版,按要求编写自动化测试脚本并将全部脚本粘贴到模板中,完成自动化测试报告。任务六 性能测试一、任务要求题目1:使用LoadRunner执行性能测试。1. 脚本录制:(1)脚本一: 脚本名称:PurAdd。 脚本内容:采购专员登录、进行新增采购订单、保存并提交操作。具体要求如下: 所有脚本存放在Action。仓库、供应商任意选择,商品任意选择一种即可。对采购订单保存并提交操作设置事务,事务名称:T_PurAdd。设置检查点,使用提交操作成功服务器的响应正文内容作为检查点。截图要求:一共1张图:①Action中新增采购订单保存并提交操作部分截图。(2)脚本二: 脚本名称:PlanAdd。 脚本内容:生产专员登录、进行新增生产计划单、保存并提交操作。 具体要求如下: 所有脚本存放在Action。计划生产耗材和计划生产制品新增一行即可,商品任意选择一种。对生产计划单保存并提交操作设置事务,事务名称:T_PlanAdd。设置检查点,使用保存并提交操作成功,服务器响应正文内容中的code键值对作为检查点。在新增生产计划单保存并提交操作前添加集合点,集合点名称:R_PlanAdd。截图要求:一共1张图:①Action中新增生产计划单保存并提交操作部分截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)脚本一脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增采购订单保存并提交业务。 保存并提交操作若需要关联,使用关联函数web_reg_save_param_ex(),参数名称submitId。截图要求:一共1张图:①Action中新增采购订单保存并提交操作部分截图。(2)脚本二脚本回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增生产计划单保存并提交业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)脚本一参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId、centerName两个字段,centerId输入系统预置的10条仓库id值,centerName输入对应的仓库名称值。 对仓库进行参数化设置:仓库ID使用参数centerId,仓库名称使用参数centerName,均使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代顺序取值。centerName参数选择列使用按名称方式,取值为centerId相同行。 对采购数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:100-200,数字格式:%lu。 对实际采购价进行参数化设置:参数名称:Price,参数类型:随机数字,随机范围:50-100,数字格式:%lu。 脚本迭代次数3次。截图要求:一共1张图:①新增采购订单保存并提交操作和参数列表截图。(2)脚本二参数化具体要求如下: 对计划耗材数量进行参数化设置:参数名称:Amount,参数类型:随机数字,随机范围:500-1000,数字格式:%lu。 新建参数化文件center.dat,文件中包含centerId、centerCode、centerName三个字段,centerId输入系统预置的10条仓库id值,centerCode输入对应的仓库编号值,centerName输入对应的仓库名称值。 对计划生产耗材仓库进行参数化设置:仓库ID使用参数centerId,仓库编号使用参数centerCode,仓库名称使用参数centerName,均使用center.dat参数化文件。 centerId参数选择列使用按名称方式,每次迭代随机取值。centerCode、centerName参数选择列使用按名称方式,取值为centerId相同行。 脚本迭代次数3次。截图要求:一共1张图:①新增生产计划单保存并提交操作和参数列表截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增采购订单事务前添加思考时间45秒。 脚本修改:新增生产计划单集合点前添加思考时间30秒。 选择新增采购订单和新增生产计划单两个脚本进行场景设置。 用户分配选择用户组模式。场景计划方式选择用户组,运行模式选择实际计划。 全局计划: 新增采购订单:场景开始后立即启动组;在每个虚拟用户运行前将其初始化;启动20个用户(每2秒启动1个)执行5分钟,执行完成后停止10个用户(每2秒停止1个)执行1分钟,再启动10个用户(每2秒启动1个)执行5分钟,执行完成后停止所有用户(每2秒停止1个)。 新增生产计划单:在场景开始2分钟后启动组;在每个虚拟用户运行前将其初始化;启动10个用户(每2秒启动1个)执行10分钟,执行完成后停止所有用户(每2秒停止1个)。截图要求:一共2张图,分别为:①新增采购订单场景设计界面截图;②新增生产计划单场景设计界面截图。5. 图形结果分析:场景执行完成后对测试结果进行截图操作。 所有截图均需截取完整的结果图,包含下方的说明和左侧的树形结构。截图要求:一共1张图:①Transactions per Second截图。题目2:使用JMeter执行性能测试。1. 脚本添加: 脚本文件名称:ProdAndInve。 测试计划名称:ProdAndInve。测试计划下添加两个线程组:(1)线程组一: 线程组名称:ProdAdd。 线程组内容:系统管理员登录、进行新增商品操作。具体要求如下: 商品名称前2位为固定值SP,固定值后面的字符可任意设置。新增商品需要添加图片,图片自行准备。选择图片上传请求名称:图片上传;新增商品保存操作请求名称:新增商品保存。对新增商品保存操作设置事务,事务名称:T_SPAdd。设置检查点,使用新增商品成功服务器的响应正文内容作为检查点,检查点名称Reg_SPAdd。截图要求:一共1张图:①新增商品保存操作截图。(2)线程组二: 线程组名称:InveAdd。 线程组内容:仓库主管登录、进行新增盘点单操作。具体要求如下: 仓库任意选择,商品任意选择一种即可。新增盘点单保存操作请求名称:新增盘点单保存。对新增盘点单保存操作设置事务,事务名称:T_InveAdd。设置检查点,使用新增盘点单保存成功服务器的响应正文内容作为检查点,检查点名称Reg_InveAdd。在新增盘点单保存操作前添加集合点,集合点名称:R_InveAdd。截图要求:一共1张图:①新增盘点单保存操作截图。2. 脚本回放:使用回放功能对脚本的正确性进行校验。(1)线程组一回放具体要求如下: 对商品名称进行修改,前4位为固定值SPHF,固定值后面的字符可任意设置。 运行脚本,查看回放结果,要求脚本回放能成功实现新增商品业务。(2)线程组二回放具体要求如下: 运行脚本,查看回放结果,要求脚本回放能成功实现新增盘点单业务。3. 脚本参数设置要求:脚本回放成功后按要求设置脚本参数。(1)线程组一参数化具体要求如下: 对商品名称进行参数化设置:商品名称前4位固定值SPCS,固定值后面接函数threadNum和RandomString,Random string长度:5,生成random string的字符:0123456789。 对采购价进行参数化设置:使用Random函数实现参数化,范围:50-100。 对销售价进行参数化设置:使用Random函数实现参数化,范围:200-300。 对商品图片进行参数化:自行准备10张图片,使用CSV数据文件设置实现参数化,CSV数据文件命名:file.dat,参数名称:file。若需要关联,使用边界提取器,参数名称photo。 脚本迭代次数3次。截图要求:一共2张图,分别为:①图片上传操作截图;②新增商品保存操作截图。(2)线程组二参数化具体要求如下: 新建参数化文件center.dat,文件中包含centerId字段,centerId输入系统预置的10条仓库id值。 对盘点仓库进行参数化设置:使用CSV数据文件设置实现参数化,使用center.dat文件。仓库ID参数名称:centerId。 脚本迭代次数3次。截图要求:一共1张图:①新增盘点单保存操作截图。4. 场景设置:按要求设置虚拟用户个数以及进行场景配置。 脚本修改:新增商品保存操作前添加思考时间25秒;新增盘点单保存操作前添加思考时间30秒;其他步骤添加思考时间5秒。 新增盘点单集合点设置:模拟数量:10,超时时间40秒。 场景配置: 新增商品场景配置:取样器错误后执行动作:启动下一进程循环;线程数:10;Ramp-Up时间:20秒;持续时间:10分钟;启动不延迟。 新增盘点单场景配置:取样器错误后执行动作:继续;线程数:20;Ramp-Up时间:20秒;持续时间:10分钟;启动不延迟。 使用非GUI模式运行。截图要求:一共2张图,分别为:①新增盘点单集合点设置截图;②新增盘点单场景配置截图。5. 图形结果:分析场景执行完成后对测试结果进行截图操作。截图要求:一共1张图:①Active Threads Over Time截图。二、报告编写根据性能测试情况,参考性能测试报告模版,按要求截取性能测试过程和结果截图并粘贴到性能测试报告,完成性能测试报告。任务七 接口测试一、任务要求题目1:登录接口脚本编写和执行测试。1. 登录接口描述如下:接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/auth/login。请求方式:POST。请求参数:参数 必填 类型 说明username Ture Int 用户名password Ture Int 用户密码roleId Ture Int 登录ID(默认1)响应结果: 登录成功时返回:{"code": 200,"msg": xxx,"data": {"access_token": "xxx","name": xxx,"photo": "xxx","expires_in": xxx}; 登录失败时返回(密码错误):{"msg": "登录密码错误","code": 500} 登录失败时返回(密码为空):{"msg": "请输入密码","code": 500}2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(username、password、roleId)进行传值,其中username、password参数改为变量接收数据驱动中的数据; 新建josn文件保存接口数据驱动测试数据,josn参数名为username、password;用户名和密码数据为:username passwordXTGLY 123456XTGLY 123XTGLY 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔时间为500ms,发送请求的data文件导入前面的新建json数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入json数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。题目2:新增接口脚本编写和执行测试,并执行脚本。1. 商品分类添加接口描述如下:接口功能:提供商品分类新增处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/category/add。请求方式:POST。请求参数:参数 必填 类型 说明createBy Ture Int 添加id(默认2)name Ture String 商品分类名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Add脚本; Add脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/category/add; Add脚本Json参数为:{"createBy":"2","name":"测试数据"}; 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Add; 截图要求:一共4张图,分别为:①用例Add的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Add的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Add的Tests界面截图;④测试用例集Test_Add执行结果界面截图。题目3:修改接口脚本编写和执行测试,并执行脚本。1. 商品单位修改接口描述如下:接口功能:提供商品单位修改处理。接口地址(根据实际系统IP及端口自行替换): http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/update。请求方式:PUT。请求参数:参数 必填 类型 说明id Ture Int 修改idname Ture String 商品单位名称响应结果:{"msg": "操作成功","code": 200}其余均失败。2. 接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Revise; 在Test_Revise中新建测试用例1,Login脚本; Login脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/auth/login; Login脚本Json参数为:{"username":"XTGLY","password":"123456","roleId":1}; 在Login脚本的Tests中编写代码,将Login接口返回值responseBody转为json字符串并将responseBody中的获取到的access_token的值使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Revise中新建测试用例2,Revise脚本; 将Login中获取的变量token放在Revise脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE值为“token”,其他值为空的环境变量,方便用来调试Revise脚本; Revise脚本URL为:http://XX.XX.XX.XX:XXXX/prod-api/manager/unit/update; Revise脚本Json参数为:{"id":"1","name":"测试"}; 在Revise脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的msg参数值中存在“操作成功”字符串; 设置执行测试集Test_Revise; 截图要求:一共4张图,分别为:①用例Revise的Body界面截图,需要包含接口提交方式和URL以及raw中内容;②用例Revise的Authorization界面截图,需要包含接口提交方式和Type以及Token中内容;③用例Revise的Tests界面截图;④测试用例集Test_Revise执行结果界面截图。二、报告编写根据接口测试情况,参考接口测试报告模版,按要求截取接口测试脚本和结果截图并粘贴到接口测试报告中,完成接口测试报告。 展开更多...... 收起↑ 资源列表 GZ034 软件测试赛题第10套.doc GZ034 软件测试赛题第1套.doc GZ034 软件测试赛题第2套.doc GZ034 软件测试赛题第3套.doc GZ034 软件测试赛题第4套.doc GZ034 软件测试赛题第5套.doc GZ034 软件测试赛题第6套.doc GZ034 软件测试赛题第7套.doc GZ034 软件测试赛题第8套.doc GZ034 软件测试赛题第9套.doc GZ034软件测试赛项规程.doc