




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
QTP笔记第一天笔记一、 手工测试与自动化测试的区别1、 手工测试的价值手工测试的核心价值:能够发现更多的问题、需求分析、用例设计2、 自动化测试的优势1)、效率2)、回归测试问题3)、通过加大用例覆盖度,提高软件质量4)、通过减缓人的疲劳提高,提高软件质量5)、解决手工测试不能解决的问题3、手工测试需要解决的问题操作、检查(将实际见到的与经验得来的东西做对比)、用例多但不复杂4、自动化解决的问题自动操作、自动检测、数据的存储、构建数据。自动化不仅解决功能测试还要解决性能测试的问题。解决输入数据的问题。操作步骤、数据、检查点需要做自动化。5、什么样的任务适合做自动化测试项目是否适合做自动化取决于团队的技术能力,项目特点,需求变更程度适合不适合需求稳定需求变更较快任务重复次数大于4次重复次数较少(一个任务重复的次数少于4次,自动化的成本收不回来)团队已经掌握技术难度大,团队还未掌握二、自动化测试的工具C/S功能测试工具:WinRunner、Rational Robot、SilkTest、QTP、AutoIT、按键小精灵、TestComplete、MITAB/S功能测试工具: Rational Robot、SilkTest、QTP、 Selenium B/S性能测试工具:loadrunner、Jprobe、jmeter、WAIS单元测试工具:cppunit,junit, python unit三、手工测试与自动化测试的发展轨迹1、手工测试的发展轨迹:测试执行-自己编写用例-系统测试-集成测试-单元测试-自动化测试(用工具进行自动化测试)-自动化测试开发(自动化测试的工具)2、自动化:自动化脚本(实施用例)(自动化工程师)(80%)-测试开发工程师(开发测试工具)-框架设计师测试开发经理3、自动化工程师的能力:1)、手工用例转化为自动化用例的需求2)、函数设计能力四、VBS知识1、定义变量Dim 变量名注意:a变量名不区分大小写 b 没有定义数据类型 c dim 不是必须的 d 变量的数据类型由赋值决定的RandomNumber.Value(1,2000)随机数 其中(1,2000)表示随机数的取值范围2、定义函数Function 函数名(参数列表)函数体函数名=中间值End FunctionEg:Function Function1()a=RandomNumber.Value(1,2000)Function1=aEnd Function3、调用函数的方法变量名=函数名(参数列表)4、显示结果Ires=usum(a,b)Msgbox a & stroper & b & “=”& ires注意:变量不加双引号5、过程(无返回值)定义过程:sub 过程名 (参数列表)语句体End sub调用:表示方法一:call 过程名(参数列表)表示方法二:过程名 参数列表6、随机选取运算符Mid (“字符串”,起始值,长度)7、分支语句Select case 变量Case 表达式值语句体Case 表达式值语句体Case 表达式值语句体End select8、循环语句For 变量:起始值 to 终值(必须是值而不是变量)循环体NextDo循环体Loop Until 条件9、条件语句If 条件 then语句体End if10、inputbox (“输入次数”,“次数”)Cstr:把非字符串转换为字符串五、VBS编程举例两个数的四则运算:Dim numberOne,numberTwo,ires1,ires2,ires3,ires4numberOne=RandomNumber.Value(1,2000)numberTwo=RandomNumber.Value(1,2000)ires1=uSum(numberOne,numberTwo)ires2=uSub(numberOne,numberTwo)ires3=uDiv(numberOne,numberTwo)ires4=uMin(numberOne,numberTwo)msgbox numberOne & + & numberTwo & = & ires1msgbox numberOne & - & numberTwo & = & ires2msgbox numberOne & / & numberTwo & = & ires3msgbox numberOne & * & numberTwo & = & ires4Function uSum(numberOne,numberTwo) uSum=numberOne+numberTwoEnd FunctionFunction uSub(numberOne,numberTwo) uSub=numberOne-numberTwoEnd FunctionFunction uDiv(numberOne,numberTwo) uDiv=numberOne/numberTwoEnd FunctionFunction uMin(numberOne,numberTwo) uMin=numberOne*numberTwoEnd Function用select语句实现:Dim numberOne,numberTwo,ires,opernumberOne=RandomNumber.Value(1,2000)numberTwo=RandomNumber.Value(1,2000)tempVal=RandomNumber.Value(1,4)oper=mid(+-*/,tempVal,1)Call op(oper,numberOne,numberTwo)Sub op(Byval strOper,numberOne,numberTwo) Select Case cStr(strOper) Case + ires=uSum(numberOne,numberTwo) msgbox numberOne & strOper & numberTwo & = & iresCase - ires=uSub(numberOne,numberTwo) msgbox numberOne & strOper & numberTwo & = & iresCase * ires=uMin(numberOne,numberTwo) msgbox numberOne & strOper & numberTwo & = & iresCase / ires=uDiv(numberOne,numberTwo) msgbox numberOne & strOper & numberTwo & = & iresCase elsemsgbox 非法操作符: & strOper End SelectEnd SubFunction uSum(numberOne,numberTwo) uSum=numberOne+numberTwoEnd FunctionFunction uSub(numberOne,numberTwo) uSub=numberOne-numberTwoEnd FunctionFunction uMin(numberOne,numberTwo) uMin=numberOne*numberTwoEnd FunctionFunction uDiv(numberOne,numberTwo) uDiv=numberOne/numberTwoEnd Function用循环语句实现:Dim numberOne,numberTwo,ires,opercnt=inputbox(四则运算次数,四则运算)For i=1 to cnt numberOne=RandomNumber.Value(1,2000) numberTwo=RandomNumber.Value(1,2000) tempVal=RandomNumber.Value(1,4) oper=mid(+-*/,tempVal,1) Call op(oper,numberOne,numberTwo)NextSub op(Byval strOper,numberOne,numberTwo) Select Case cStr(strOper) Case + ires=uSum(numberOne,numberTwo) msgbox numberOne & strOper & numberTwo & = & iresCase - ires=uSub(numberOne,numberTwo) msgbox numberOne & strOper & numberTwo & = & iresCase * ires=uMin(numberOne,numberTwo) msgbox numberOne & strOper & numberTwo & = & iresCase / ires=uDiv(numberOne,numberTwo) msgbox numberOne & strOper & numberTwo & = & iresCase elsemsgbox 非法操作符: & strOper End SelectEnd SubFunction uSum(numberOne,numberTwo) uSum=numberOne+numberTwoEnd FunctionFunction uSub(numberOne,numberTwo) uSub=numberOne-numberTwoEnd FunctionFunction uMin(numberOne,numberTwo) uMin=numberOne*numberTwoEnd FunctionFunction uDiv(numberOne,numberTwo) uDiv=numberOne/numberTwoEnd Function六、作业要求:代码要求:0. 实现多组测试,使用inputbox输入组数1、实现任意组数据四则运算(有可能+或-或*或/)2、在运算过程中使用的数据必须是随机生成的3、操作数据的时候,即点击数据时,例如123,使用循环输入, 3.1 Window(计算器).WinButton(变量).Click 3.2 Len(cstr(随机生成数的变量名)计算字符串长度:计算循环次数4、第3步实现必须设计成一个过程,名字为operateNumClick主程序逻辑:1、输入组数2、开始组数循环3、循环体内 a随机生成操作数1、操作数2、运算符 b. 调用过程operateNumClick操作数据1 c. 点随机生成的运算符 d. 调用过程operateNumClick操作数据2 e.按等号 f.按c4. window(计算器).close第一种方法:Dim numberOne,numberTwo,resulta=inputbox(“请输入计算次数,每组将产生2个操作数并作四则运算”,“计算器测试次数”)For n=1 to anumberOne=RandomNumber.Value(0,2000)numberTwo=RandomNumber.Value(0,2000)var=RandomNumber(1,4)opt=mid(“+-*/”,var,1)call operate(numberOne,numberTwo,opt)NextSub operate()第二天笔记一、 SQL与VBSSQLVBS_代表单个任意字符+前面的字符重复1到任意次数%代表多个任意字符第一个字符必须是后面定义的$最后一个字符必须是前面定义的0_9任意一位数字二、 函数与过程的区别1、 过程无返回值,函数有返回值2、 过程调用:方法一:call 过程名 (参数列表)方法二:过程名 参数列表3、 函数调用:方法一:变量名=函数名(参数列表)方法二:call 函数名 (参数列表)目的:不返回函数值,将函数当过程调用三、 对象1、 属性值决定了对象2、 能够区别于其他对象的属性值3、 要区别于其他对象,必须有一个或多个的属性组成,前提条件是类相同四、 测试对象1、 测试对象是基于某一个类2、 测试对象要区别于其他测试对象需要有一个或多个属性及其属性值组成3、 测试对象有名字,其名字是根据某一属性和属性值命的名4、 测试对象的名字是可以更改的,但是属性它的一切属性和属性值都是未发生变化的5、 测试对象是基于某一个类,由区别于其他对象的一个或多个属性或属性值组成测试对象,且在对象仓库中定义类对象属性属性值五、 判断1、 测试对象的名字是固定的(X)2、 测试对象的属性值发生变化时,其对象名发生变化(X)1)、测试对象添加到对象仓库时,其缺省名字是由某个属性值决定的2)、测试对象的名字发生变更时,其相关属性值不发生变化六、录制脚本QTP角度操作层次测试对象(录制下了点击过的对象)点击对象类名.(“测试对象名”)子类名.(“子测试对象名”).方法操作步骤由多个第二步组成了脚本七、脚本回放原理1、执行脚本2、执行脚本过程中当遇到测试对象时,先在对象仓库中获取该测试对象的属性和属性值3、测试对象的属性及其属性值和运行的被测程序的属性和属性值进行匹配4、如果匹配成功,则继续;如果不匹配成功,否则失败八、脚本执行成功所具备的条件1、脚本中涉及到的测试对象要在对象仓库中定义2、运行时,被测程序的属性和属性值必须与对象仓库中定义的匹配九、运行时的对象:RuntimeObject测试对象:Test Object1、 运行时对象是动态的,每次执行时,属性值有可能发生变更2、 测试对象是静态的,是在对象仓库中预先定义的,不修改不发生变化十、清空内存当不使用set赋过值的变量时,务必使用set 变量=nothing,释放引用内存十一、类(“测试对象名”).GetROProperty(“属性”):获取运行时对象的某个属性值类(“测试对象名”).GetTOProperties:获取测试对象的区别于其他对象的所有属性和属性值GetTOProperty(“属性”)Set:十二、如何添加测试对象1、 启动被测程序:C:Program FilesHPQuickTest Professionalsamplesflightapp下的flight4b2、 点击3、 将要区别的对象置顶4、 按住和图片中的+(没有释放CTRL)5、 移动鼠标到确定需要添加的对象处松开CTRL6、 弹出如图所示的框十三、在对象库中添加对象Object Repository Manager的操作步骤与前面一致十四、使用Object Repository与使用Object Repository Manager往对象库中添加对象的区别1、 Object Repository中的测试对象是与test相关的2、 Object Repository Manager中的测试对象是与文件相关的,若想被test使用必须通过Object Repository toolsassociate Repositories相关联3、 对象侦探:临时识别对象的,对象不会保存在对象仓库中十六、1、逻辑步骤1) 启动被测程序2) 操作测试对象3) 使用测试数据给对象赋值4) 检查对象(结果输出)5) 打扫现场2、启动程序的方法1)从录制脚本处的路径选择处启动程序2)程序中启动3、操作对象完整的语句行4、检查对象的方法:exist(超时值,时间是秒)Checkproperty(属性,预期输出属性,超时值)(运行时用的)5、结果输出的方法Reporder.reportEeven micpassReporder.reportEeven micfail十七、问题:1、对对象仓库中的对象持疑惑态度?步骤和步骤所涉及到的对象2、类(“测试对象名”).子类(“子测试对象名”).方法先分解子类,如果有父类就在前面追加,然后再子类后面添加方法,可以把子类和父类看做一个整体,然后对象后加方法3、对象成功,脚本没有问题,运行失败4、闪亮功能时程序需要启动吗?被测程序需要启动密码获取的方法十九、作业:用户名正确,密码错误,登录失败SystemUtil.Run C:Program FilesHPQuickTest Professionalsamplesflightappflight4b.exeDialog(Login).ActivateWinEdit(Agent Name:).Set(test) 对象之间是存在父子关系的dialog(Login).WinEdit(Agent Name:).Set(aaas)dialog(Login).WinEdit(Password:).SetSecure (4d26694a5914de99598fef6d2cd930e372dc)dialog(Login).WinButton(OK).Clickdialog(Login).dialog(Flight Reservations).WinButton(确定).Clickisok=dialog(Login).dialog(Flight Reservations).CheckProperty(text, Flight Reservations,2000)If isok ThenReporter.ReportEvent micPass,存在用户名和错误密码登录测试,测试通过print 存在用户名和正确密码登录测试,测试通过Else Reporter.ReportEvent micFail,存在用户名和错误密码登录测试,测试未通过end ifwindow(Flight Reservations).Close用户名少于4个字符,密码正确,登录失败。设计成为一个过程:Call testLogin1()Sub testLogin1()SystemUtil.Run C:Program FilesHPQuickTest Professionalsamplesflightappflight4b.exeDialog(Login).ActivateWinEdit(Agent Name:).Set(test) 对象之间是存在父子关系的Dialog(Login).WinEdit(Agent Name:).Set(ds)Dialog(Login).WinEdit(Password:).SetSecure(4d2682121546f25c37482438258d831869db8a69)Dialog(Login).WinButton(OK).ClickIf Dialog(Login).dialog(Flight Reservations).Exist(2)ThenStaticText=Dialog(Login).dialog(Flight Reservations).Static(prompt).GetroProperty(text)If StaticText=Agent name must be at least 4 characters long. ThenReporter.ReportEvent micPass,用户名小于4个字符登录测试,测试通过print 用户名小于4个字符登录测试,测试通过Else Reporter.ReportEvent micFail,用户名小于4个字符登录测试,测试未通过 print 用户名小于4个字符登录测试,测试未通过end ifDialog(Login).dialog(Flight Reservations).CloseEnd IfDialog(Login).CloseEnd Sub使用checkproperty设计脚本Call test01()Call test02()Call test03()Call test04()WinEdit(Agent Name:).Set(test) 对象之间是存在父子关系的Sub test01() SystemUtil.Run C:Program FilesHPQuickTest Professionalsamplesflightappflight4b.exe Dialog(Login).Activatedialog(Login).WinEdit(Agent Name:).Set(aaas)dialog(Login).WinEdit(Password:).SetSecure (4cdf736a021f3e5c2cc8d24f64840eb2035000ec)dialog(Login).WinButton(OK).Clickisok=window(Flight Reservation).CheckProperty(text, Flight Reservation,2000)If isok ThenReporter.ReportEvent micPass,存在用户名和正确密码登录测试,测试通过print 存在用户名和正确密码登录测试,测试通过Else Reporter.ReportEvent micFail,存在用户名和正确密码登录测试,测试未通过end ifwindow(Flight Reservation).CloseEnd Sub第三天知识一、 对于类相同,父子关系相同,绝大部分属性和属性值相同,少量不同,尽管可以通过增加属性的方法来将这些所有测试对象都添加到对象仓库中,但是会造成对象仓库中对象很多,处理方法是:仅增加一个对象,并改测试对象名字,通过获取运行时对象属性值做检查二、1、什么时候去冗余2、去冗余的目的是什么减少存储,便于维护3、去了以后怎么做检查三、如何扩充QTP类中用户自定义的方法1、 使用insertfunction definition generator按照操作界面文字过程或者函数界面中:name:填写函数或者过程名 type:确定function或subScope:public register to a test object:准备扩充方法的类2、 在专家视图中修改脚本原型,另外要使用register usefunction来注册四、对象仓库共享1、对象仓库共享的目的:1)减少存储2)减少重复开发2、如何进行对象仓库共享(创建TSR文件,将TSR文件关联到test的action中)1)创建A、使用仓库管理器的“+”将关注的对象添加到管理器中B、使用file save或save as导出tsr文件到目录文件2)分享A、打开你想操作的test文件B、使用object reporitorytools -associate reporitiesC、将希望共享的tsr文件添加进来,选中你希望使用该tsr文件的action3)修改使用对象仓库管理器修改tsr文件4、如何验证共享成功查看对象仓库中的属性是否变为灰色的,灰色则为共享成功五、时间同步点1、窗口的空间非常丰富时,每个控件刷新都需要时间2、不同进程之间进行切换时加时间同步点3、窗口存在与否加了同步点,不代表其中所有的控件都判断过,所以窗口中其他关键对象也需要加同步点同步:等待一件代码完成后另一个代码执行异步:保证并发用的,不保证程序,脚本就退出怎么测同步异步:启动一个非常大的程序1、exist(秒)2、wait(秒)(等的是本条语句,等的目的是wait下面一条语句中的对象出现需要花费较长时间,或者有其他意图)3、checkproperty(“属性”,“期望值”,毫秒)六、参数化1、从局部表某一列取值Datatable.localsheet.getparameter(“列名”)Datatable(“列名”,dtlocalsheet)2、对局部表某一列修改值Datatable.value(“列名”,dtlocalsheet)=修改值3、输出datatableDatatable.export(“文件名”)4、如何遍历局部数据表Rowcount=datatable.localsheet.GetRowCountFor i=1 to rowcountDatatable.localsheet.SetCurrentRow(i)(定义行)其他语句行Next增加环境变量获取环境变量值:environment.Value(“programpath”)第四天知识一、编程:1、参数化设计设计datatable:用例编号 用例描述 输入值列n 预期值1.。n 实际值1.n 测试通过否 测试失败原因 测试执行消耗时间2、脚本结构函数实现的逻辑:启动被测程序操作对象检查对象测试结果输出打扫现场主程序调用函数实现打扫整个测试的现场整个测试结果的输出了解被测对象,熟悉需求1) 做自动化需求分析,解决:找出逻辑的公共点这个任务究竟是数据驱动还是非数据驱动2) 设计针对公共做函数提取若是数据驱动,做数据表的设计3) 新建一个test使用对象库添加对象(不要漏对象)或者引用共享对象库文件4) 写脚本实现公共函数和实现data table表二、完成插入订单正确性的用例用例和要求如下:1、 输入正确的用户名和正确的密码2、 单击ok后,点击左上角第一个按钮3、 Date of flight 使用取当天日期的第二天,fly from字段随机取一个值,fly to字段随机取一个值,flights也随机取值,name也随机取任何长度的值,tickets输入一个1-10的随机值,class随机取一个值4、 点击insert order按钮5、 检查若左下角的insert done 显示出来才表示插入成功6、 获取右下角的order No,并输出出来程序如下:作者:51tesing培训老师_日期:年/月/日脚本说明:Call testLogin()Sub initEvn() Set wmi=getobject(winmgmts:) Set pro_s=wmi.instancesof(win32_process) findProcess=False For each p in pro_s If strcomp(,flight4b.exe)=0 Then findProcess=True Exit for End If Next If not findProcess Then systemutil.Run C:Program FilesHPQuickTest Professionalsamplesflightappflight4b.exe End IfEnd SubSub testLogin() initEvn() If dialog(Login).Exist(4 ) Then dialog(Login).Activate Else Reporter.ReportEvent micFail,登陆窗口未打开,测试未通过 Exit sub end if dialog(Login).WinEdit(Agent Name:).Set (aaas) dialog(Login).WinEdit(Password:).SetSecure(4d2a7f4e3e21dbb1fb6ca0155fa20b80a21f7b88) dialog(Login).WinButton(OK).Click If window(Flight Reservation).Exist(10) Then isok=window(Flight Reservation).CheckProperty(text, Flight Reservation) If isok Thenwindow(Flight Reservation).WinButton(insert).Clickwindow(Flight Reservation).WinObject(Date of Flight:).Type getNextDate()itemscount= Window(Flight Reservation).WinComboBox(Fly From:).GetItemsCount()num= RandomNumber.Value(0,itemscount - 1)Window(Flight Reservation).WinComboBox(Fly From:).Select numitemscount= Window(Flight Reservation).WinComboBox(Fly To:).GetItemsCount()num= RandomNumber.Value(0,itemscount - 1)Window(Flight Reservation).WinComboBox(Fly To:).Select numWindow(Flight Reservation).WinButton(FLIGHT).Click If window(Flight Reservation).dialog(Flights Table).Exist Thenitemscount= Window(Flight Reservation).Dialog(Flights Table).WinList(From).GetItemsCount()num= RandomNumber.Value(0,itemscount - 1)Window(Flight Reservation).Dialog(Flights Table).WinList(From).Select numWindow(Flight Reservation).Dialog(Flights Table).WinButton(OK).Click window(Flight Reservation).WinEdit(Name:).set getAnyString(10) num = RandomNumber.Value(1,3)If num=1 Then Window(Flight Reservation).WinRadioButton(any).SetTOProperty text,Firstelseif num = 2 Then Window(Flight Reservation).WinRadioButton(any).SetTOProperty text,Businesselse Window(Flight Reservation).WinRadioButton(any).SetTOProperty text,EconomyEnd IfWindow(Flight Reservation).WinRadioButton(any).Setwindow(Flight Reservation).WinButton(Insert Order).Click window(Flight Reservation).WinObject(Insert Done).WaitProperty text, Insert Done., 15000 no=window(Flight Reservation).WinEdit(Order No:).GetROProperty(text)print getAnyString(10) +的订单号是:+ noend if end if window(Flight Reservation).Close End IfEnd SubFunction getNextDate() nextdate = DateAdd(d, 1, Date)mj=month(nextdate) If mj10 Thenmj= 0 & mjEnd If dj=day(nextdate)If dj10 Thendj=0 &djEnd IfgetNextDate=mj & dj & right(year(nextdate),2)End FunctionFunction getAnyString(Strlen) tempStr=For i=1 to StrlentempStr=tempStr + mid(abcdefghijklmnopqrstuvwxyz,randomnumber.value(1,26),1)NextgetAnyString=tempStrEnd Function上述程序中的技术难点: Function getNextDate() nextdate = DateAdd(d, 1, Date) mj=month(nextdate) If mj10 Then mj= 0 & mj End If dj=day(nextdate) If djsetting-environment-自定义变量 environment.value(自定义变量名) 1。随机函数 RandomNumber.Value(0,itemscount - 1) 2。下列表如何随机置数据 Dim itemscount,num 随机选择Fly From itemscount = Window(Flight Reservation).WinComboBox(Fly From:).GetItemsCount() num = RandomNumber.Value(0,itemscount - 1) Window(Flight Reservation).WinComboBox(Fly From:).Select num 3。同一类型测试对象,如何从对象仓库中去冗 num = RandomNumber.Value(1,3) If num=1 Then Window(Flight Reservation).WinRadioButton(any).SetTOProperty text,First elseif num = 2 Then Window(Flight Reservation).WinRadioButton(any).SetTOProperty text,Business else Window(Flight Reservation).WinRadioButton(any).SetTOProperty text,Economy End If Window(Flight Reservation).WinRadioButton(any).Set 4。等待insert done.出现,该处存在同步点 window(Flight Reservation).WinObject(InsertDone).WaitProperty text, Insert Done., 10000三、对象去冗余:对于同一类,父子关系相同,属性值绝大多数也相同,少数不同,在对象仓库中设置一个公共的prompt上节课:保留的对象为相同属性,脚本运行时,这一类对象每次只运行一个本节课:保留的对象为不同属性,脚本运行时,这一类对象同时出现四、自定义数据库检查点Function queryAccess(byVal strSql) Dim conn,res Set conn=cre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年飞行汽车考试题及答案
- 2025年度调度规程考试题库及答案
- 高铁隧道施工劳务合同(3篇)
- 高速工程施工合同(3篇)
- 高频焊檩条采购合同模板(3篇)
- n3级级护士手考试试题及答案
- 航空航天单位员工航天技术聘用合同
- 互联网餐厅厨师承包服务与管理协议
- 2025公务员真实面试题及答案
- 深圳市绿色环保产业门面租赁及市场推广协议
- 2025-2030滑雪培训行业市场发展分析及前景趋势预测与投资可行性评估报告
- 课堂高效学习的主阵地 教学设计-2023-2024学年高中上学期主题班会
- 2025年放射工作人员培训考试试题(附答案)
- 高考熟词生义解密(复习讲义)-2026年高考英语一轮复习(北京专用)挖空版
- 2025年北京市中考英语试卷(含答案与解析)
- 浙江名校协作体(G12)2025年9月2026届高三返校联考英语(含答案)
- 2025年环保法律法规基础知识考试卷及答案
- 2026届新人教版高考物理一轮复习讲义:静电场及其应用(含答案)
- 检测基础知识培训课件
- 采购管理大师谢勤龙讲义《供应链管理的问题多多与解决之道》
- 国企招聘笔试题及答案-投资专员、投资经理B卷
评论
0/150
提交评论