




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、为了提高整个开发中心产品和项目的测试效率,保证产品与项目内部系统集成测试的顺利进行,现要求系统开发部各项目组在提交产品至项目监理部之前必须进行严格的单元测试,即 按照代码的单元组成逐个进行测试。具体说明如下:单元测试内容单元测试的依据是详细设计 ,应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试的测试类型主要包括:1模块接口测试;2模块局部数据结构测试;3模块边界条件测试;4模块中所有独立执行通路测试;5模块的各条错误处理通路测试;6模块的非法测试,例如在输入数字的地方输入字母;7代码重用测试,在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有 代码上
2、修改或修改不全面,而造成的错误;8系统兼容测试,例如有些程序在IE6能运行正常,到IE5下不能运行有些程序在 WIN2000下能运行,而到 WIN98却不能运行.单元测试力度要求测试力度满足:语句覆盖:使被测程序的每条语句至少执行一次;判定覆盖:使被测程序的每一分支执行一次;条件覆盖:要求判定中的每个条件均为“真”、“假”两种结果至少执行一次;条件组合覆盖:让条件覆盖中的结果的所有可能组合至少出现一次;单元测试步骤一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现各类错误的可能性。在确
3、定测试用例的同时,应给出期望结果。项目组完成单元测试,向项目监理部提交验收版本的同时必须一并递交单元测试案例及测试问题报告记录。测试部由项目监理部取得需测试系统的版本及相关文档,若在测试期间发现单元测试中记录的问题,如实记录。项目监理部视具体情况酌情对该项目组的绩效考核与项目评分加以控制.不同语言及架构的单元测试见附件。附件一 C+语言单元测试规范1. 基本要求1.1程序结构清析,简单易懂,单个函数的程序行数不得超过100行.1。2打算干什么,要简单,直接了当,代码精简,避免垃圾程序。1.3尽量使用标准库函数和公共函数.1.4不要随意定义全局变量,尽量使用局部变量。1.5使用括号以避免二义性。
4、2。可读性要求2.1可读性第一,效率第二.2.2保持注释与代码完全一致。2。3每个源程序文件,都有文件头说明,说明规格见规范。2。4每个函数,都有函数头说明, 说明规格见规范。2。5主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。2.7常量定义(DEFINE有相应说明。2.8处理过程的每个阶段都有相关注释说明.2.9在典型算法前都有注释.2。10利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为6个 字节。2。11循环、分支层次不要超过五层。2。12注释可以与语句在同一行, 也可以在上行。2.13空行和空白字符也是一种特殊注释。2。14 一目了然的语句不加
5、注释。2.15注释的作用范围可以为:定义、引用、条件分支以及一段代码。1/5 到 1/3 。2.16 注释行数 (不包括程序头和函数头说明部份)应占总行数的3。结构化要求3。1禁止出现两条等价的支路。3。2禁止GOTO语句.3。3用IF语句来强调只执行两组语句中的一组。禁止ELSE GOT和ELSE RETURN.。4用CASE实现多路分支。3.5避免从循环引出多个出口。3。6函数只有一个出口。3。7不使用条件赋值语句。 3。 8 避免不必要的分支。3.9 不要轻易用条件分支去替换逻辑表达式。4. 正确性与容错性要求4.1 程序首先是正确,其次是优美4。2 无法证明你的程序没有错误,因此在编写
6、完一段程序后,应先回头检查. 4。 3 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。4.4 所有变量在调用前必须被初始化。4。5 对所有的用户输入,必须进行合法性检查。4。 6 不要比较浮点数的相等, 如: 10.0 0.1 = 1.0 ,不可靠4.7 程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否 逻辑锁定、打印机是否联机等。4。8 单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。5。可重用性要求5.1 重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类。5.2 公共控件或类应考虑 OO 思想,减少外界联系,考虑独立性或封装
7、性。5.3 公共控件或类应建立使用模板.1 适用范围本标准适用于利用 Visul C+,Borland C+进行软件程序开发的人员 .。 2 变量命名命名必须具有一定的实际意义,形式为xAbcFgh,x由变量类型确定,Abc、Fgh表示连续意义字符串 ,如果连续意义字符串仅两个,可都大写。如 OK. 具体例程 :BOOL 类型bEn able;ch * charchTextc * 类对象cMain (对象实例) h *Handle (句柄)hWnd i * intn 无符号整型 p * 指针 sz,str * 字符串 w WORD x, y 坐标Char 或者 TCHAR 类型 与 Windo
8、ws API 有直接联系的用szAppName1 0 形式否则用FileName10 形式,单个字符也可用小写字母表示;Int类型 nCmdShow; LONG类型 类型 型 类型lParam; UINT 类型 lpCmdLi ne LPTST啖型 wParam, LPARAM 类型 hInstanceuNotify; DWORD 类型 lpszClassName; lParam HWND 类型dwStart; PSTR类型pszTip; LPSTRLPVOID 类型lpReserved WPARAM 类hDlg; HDC类型hDC; HINSTANCE型类量中可采用如下几个通用变量:nTem
9、p, nResult, I, J (一般用于循环变量)。其他资源句柄mHANDLE 型 hIcon; int类成员变量hInstance, HICON类dw* String , AnsiString str * 全局变量g_nMsg, g_bFlag局部变iTmp floatm_nVal,fTmp DWORDm_bFlag g_同上 。 3 常量命名和宏定义常量和宏定义必须具有一定的实际意义; 常量和宏定义在 include 和函数定义之间; 常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一 条定义的右侧必须有一简单的注释 ,说明其作用 ; 资源名字定义格式 :
10、菜单: IDM_XX 或者CM_XX 位图:IDB_XX对话框:IDD_XX字符串:IDS_XX DLGINIT DIALOG_XX ICON IDR_XX。4 函数命名 函数原型说明包括引用外来函数及内部函数,外部引用必须在右侧注明函数来源:模 块名及文件名, 如是内部函数,只要注释其定义文件名;第一个字母必须使用大写字母 ,要求用大小写字母组合规范函数命名,必要时可用下划线 间隔,示例如下:void UpdateDB_Tfgd (TRACK_NAME) ; file : /Module Name : r01/sdw 。 c void PrintTrackData (TRACK_NAME);
11、 file : /Module Name :r04 /tern 。c void ImportantPoint ( void) ; file:/Module Name :r01 /sdw.c void ShowChar (int , int , c htype) ; file : /Local Module void ScrollUp_V (int , int); file :/Local Module 。5 结构体命 名结构体类型命名必须全部用大写字母,原则上前面以下划线开始 ;结构体变量命名必须用 大小写字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。对于私有数据区 ,必 须 注
12、 明 其 所 属 的 进 程 . 全 局 数 据 定 义 只 需 注 意 其 用 途 。 示 例 如下:typedef struct charszProductName 20;charszAuthor20;charszReleaseDate 16;charszVersion 10;unsigned long MaxTables;unsigned long UsedTables; DBS_DATABA;SEDBS_DATABASE GdataBas;e6 控件的命名: 用小写前缀表示类别 用小写前缀表示类别: fm 窗口 cmd 按钮 cob combo , 下 拉 式 列 表 框 txt文 本
13、 输 入 框 lab labal , 标 签 imgimage , 图象 pic picture grd Grid ,网格 scr 滚动条 lst 列表框 frm fram 7 注释 原则上注释要求使用中文;文件开始注释内容包括 :公司名称、版权、作者名称、时间、模块用途、背景介绍等,复 杂的算法需要加上流程说明;函数注释包括 :输入、输出、函数描述、流程处理、全局变量、调用样例等,复杂的函数 需要加上变量用途说明 ;程序中注释包括:修改时间和作者、方便理解的注释等 ;引用一 : 文件开头的注释模板/* k'k'k * *'k * * * * * * * 文件名: Co
14、pyright (c) 1998 1999 * * *公司技术开发部 * 创建人: 日 期: 修改人 : * 日 期: * 描 述: * * 版 本:* * * * * 'k* * 'k 'k * * * * */引用二 : 函数开头的注释模板/ * * * * * * *'k * * k'k * k'k * * * * * 函数名:* 输 入: a,b,c * a* b- - c-* 输 出: x -* x 为 1, 表示。.。*x 为 0, 表示.。* 功能描述 : 全局变量 调用模块:* 作 者: * 日 期: * 修 改: * 日 期:
15、* 版本* * * 'k 'k 'k * * * * * * 'k * * * * / 引用三 : 程序中的注释模板/ - - - - - - - - - - - -/ /* 注释内容*/ /- - - - - - */ 8 程序a. 程序编码力求简洁 ,结构清晰, 避免太多的分支结构及太过于技巧性的程序,尽量不采用递归模式。b。 编写程序时,亦必须想好测试的方法,换句话说,”单元测试” 的测试方案应 在程序编写时一并拟好。 c. 注释一定要与程序一致。d. 版本封存以后的修改一定要将老语句用 /* / 封闭,不能自行删除或修改,并要 在文件 及函数的修改记录中
16、加以记录。e。 程序中每个block的开头” ”及” ”必须对齐,嵌套的 block每进一套, 缩进一个 tab, TAB为4个空格,block类型包括if、for、while、do等关键字引出的.f。对于比较大的 函数,每个 block 和特殊的函数调用 ,都必须注明其功能,举例如下 :count.divisor = 1193280 / freq ;/ compute the proper count OutByte(unsigned short )67, (unsigned char)182); / tell 8253 that a count is comingOutByte(unsig
17、ned short)66, count。 c0) ; / send low-order byte OutByte (unsigned short) 66, count。 c1); / send high order byte xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbcb, delphi 中的变量命名 : 遵循匈牙利命名法 ,命 名必须有意义,制定如下规定 窗体:以大写的 W 开始,如 About 版权窗体 , 命名为 WAbout 文件:以大写的 F 开始,如 About版权窗体,文件命名为FAbout。cpp按钮(Button ):如退出按钮,命名为
18、btnExit 基类:加base标记,如报表基类,窗体命名为:WBaseRep,文件命名为 FBaseRep cpp1. 在。h/.cpp的开头应有一段格式统一的说明,内容包括:> a。文件名(FileName) ; > b。创建人 ( Creater); > c。 文件创建时间 ( Date ); d. 简短说明文件功能、用途(Comment)。 好习惯 2. 除非极其简单,否则对函数应有注释说明。内容包括:功能、入口/出口参数,必 要 时还可有备注或补充说明。还是好习惯 3。 每列代码的长度推荐为80列,最长不得超过 120 列;折行以对齐为准 .太宽了,我的限制是 60
19、列,因为文本方式下屏幕一共80列,如果你用BC这一类的编辑 器,窗口边框等又要占据一定空间,所以 80 列太宽> 4. 循环、分支代码,判断条件与执行代码不得在同一行上 . 很对 5. 指针的定义, * 号既可以紧接类型 ,也可以在变量名之前。>> 例:可写做: int* pnsize; 也可写做 :int *pnsize ; >> 但不得写做: int pnsize;建议采用第二种,除非附加另外一条规定:一次只声明一个变量,否则就会让人混淆,比如: int* a , b;看起来 b 好像也是个指针,其实不是。 6。 在类的成员函数内调用非成员函数时,在非成员函数
20、名前必须加上":”。这一条我倒觉得并不是必需的,我的看法是决不要让你的类成员函数和全局函数的名称相同(或类似)> 7. 函数入口参数有缺省值时,应注释说明。 > 例: BOOL CWpsDib:: PaintDIB(CDC* pDC, CRect rc, int nBrightness, file : / =0 /> BOOL bGrayScale file:/=FALSE/ )每个变量写一行 ,必要时加上 /in, out*/ 注释 > 8。 else if 必须写在一行。 应该尽量避免 else if 这样的结构> 9.与, ?、, ?有关的各项规定
21、:>> 9。1,?、, ?应独占一行。在该行内可有注释。> 9。2 ,?必须另起一行,?之后的代码必须缩进一个Tab.,?与,?必须在 同> 一列上。 9.3 在循环、分支之后若只有一行代码,虽然可省略 ,?、, ?,但不推荐这么 > 做。若省略后可能引起歧义,则必须加上 , ?、, ?。 持保留意见 ,因为 GNU 的代码规范是这样的: if ( NULL = ptr ) / do something here 或者if ( NULL = ptr ) / do something here 争论哪个更好并没有意义,关键是统一,如果用VC当然你的办法最方便,可是如
22、果你用emacs或者vi,就不是这样了。> 10。与空格有关的各项规定。> 10.1 在所有两目、三目运算符的两边都必须有空格.在单目运算符两端不必空格。但 在, >?、, :: ?、 , 。 ?、 , ?、, ?等运算符前后,及, &?(取地址)、, * ?(取值)等运 算符之后不得有空格 . 10.2 for、 while、 if 等关键词之后应有 1 个空格,再接,( ?,之后无空格 ;在结 尾> 的, )?前不得有空格。我认为在括号两端加空格并不是什么错误 ,尤其是在一个条件十分复杂的 if 语句里 > 10。3 调 用函数、宏时, ,( ?、 ,
23、 ) ?前后不得有空格。 10。 4 类型强制转换时, ,( ?,)?前后不得 有空格 同上> 11. 与缩进有关的各项规定 > 11.1缩进以Tab为单位。1个Tab为4个空格我认为这个值应该更大, 我自己使用 8个空格,如果你的代码因为缩进幅度太大而导致 折行, 那么几乎可以肯定你的程序设计方案有问题。> 11。 2 下列情况,代码缩进一个 Tab: > 1.函数体相对函数名及' '、 '' 。 2。 if、 else、 for、 while、 do 等之后的代码。> 3. 一行之内写不下,折行之后的代码,应在合理的位置进行折行
24、。若有+ * / 等 运> 算符 , 则运算符应在上一行末尾,而不应在下一行的行首。这一条我反对,运算符应该放在下一行行首,以使人能清楚的知道这一行是续上一行的,比 如 if ( something & somethingelse otherthings ) 如 果 写 做 if ( something & somethingelse && otherthings ) 反而看不清楚> 11.3 下列情况,不必缩进: switch 之后的 case、 default。附件二 java 语言单元测试规范java语言的编程规范遵照公司的开发规范。1.基本要
25、求1。1 程序结构清析 ,简单易懂,单个函数的程序行数不得超过100 行。 1.2 代码精简,避免垃圾程序。1 。 3 尽量使用标准库函数和公共函数。1。4 不要随意定义全局变量,尽量使用局部变量。 1。 5 使用括号以避免二义性。2。可读性要求2.1 可读性第一,效率第二。 2。 2 保持注释与代码完全一致。2.3 每个源程序文件,都有文件头说明,说明规格见规范。2.4 每个函数,都有函数头说明 ,说明规格见规范。2。5 主要变量 (结构、联合、类或对象)定义或引用时,注释能反映其含义。2。 7 常量定义(DEFINE)有相应说明。2。8 处理过程的每个阶段都有相关注释说明。2.9 在典型算
26、法前都有注释。2.10利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为6个 字节。2。11 循环、分支层次不要超过五层。2.12 注释可以与语句在同一行, 也可以在上行。 2。13 空行和空白字符也是一种特殊注释。 2。14 一目了然的语句不加注释 .2。15 注释的作用范围可以为:定义、引用、条件分支以及一段代码。2.16 注释行数(不包括程序头和函数头说明部份)应占总行数的1/5 到 1/3 。3. 结构化要求3。 1禁止出现两条等价的支路。3。2禁止GOTO语句。3 。3 用 IF 语 句 来 强 调 只 执 行 两 组 语 句 中 的 一 组 。 禁止ELSE
27、GOTO ELSE RETURN. 3.用 CASE实现多路分支。3。5避免从循环引出多个出口。 3。6 函数只有一个出口。 3。 7 不使用条件赋值语句。 3。 8 避免不必要的分支。3.9 不要轻易用条件分支去替换逻辑表达式。4. 正确性与容错性要求4。1 程序首先是正确 ,其次是优美4.2 无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。4。 3 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。4.4 所有变量在调用前必须被初始化。4。 5 对所有的用户输入 ,必须进行合法性检查。4。 6 不要比较浮点数的相等,如: 10。 0 * 0.1 = 1.0
28、 , 不可靠4。 7 程序与环境或状态发生关系时, 必须主动去处理发生的意外事件,如文件能否 逻辑锁定、打印机是否联机等。4。8 单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。5。可重用性要求5。1 重复使用的完成相对独立功能的算法或代码应抽象为公共控件或类. 5。 2 公共控件或类应考虑 OO 思想,减少外界联系,考虑独立性或封装性。5.3 公共控件或类应建立使用模板。 命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。 (这些规范并不是一定要绝对遵守,但是一定要让程序有良好 的可读性)Package的命名Pa
29、ckage的名字应该都是由一个小写单词组成.Class的命名Class的名字必须由大写字母开头而其他字母都小写的单词组成Class变量的命名变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。Static Final 变量的命名Static Final 变量的名字应该都大写,并且指出完整含义。参数的命名参数的名字必须和变量的命名规范一致。 数组的命名 数组应该总是用下面的方式来命名:byte buffer;而不是:byte buffer ; 方法的参数使 用 有 意义 的 参 数命 名 ,如 果可 能 的 话 , 使 用 和 要 赋值 的 字 段 一样 的 名 字:SetCounter
30、(int size) this.size = size; Java 文件样式 所有的 Java(*。 java) 文件都必须遵守如下的样式规则版权信息版权信息必须在 java 文件的开头,比如:/ Copyright ? 2000 Shanghai XXX Co。 Ltd. All right reserved 。 */ 其他不需要出现在 javadoc 的信息也可以包含在这里。Package/Importspackage 行要在 import 行之前, import 中标准的包名要在本地的包名之前,而且按照字母顺 序 排 列 . 如 果 import 行 中 包 含 了 同 一 个 包 中
31、的 不 同 子 目 录 , 则 应 该 用 * 来 处 理。 package hotlava。net.stats; import java。io。*;import java 。 util 。 Observable; import hotlava.util 。 Application ; 这里 java。 io.* 使用来代替 InputStream and OutputStream 的。Class接下来的是类的注释 ,一般是用来解释类的。/* A class representing a set of packet and byte counters It is observable to a
32、llow it to be watc hed, but only * reports changes when the current set is complete /接下来是类定义,包含了在不同的行 的 extends 和 implements public class CounterSet extends Observable implements Cloneable C lass Fields接下来是类的成员变量: /* * Packet counters /protected int packets;public 的成员变量必须生成文档(JavaDoc)。 Proceted、priv
33、ate 和 package 定义的成员变量如果名字含义明确的话 ,可以没有注释。存取方法接下来是类变量的存取的方法.它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。 /* Get the counters* return an array containing the statistical data 。 This array has been * freshly allocated and can b e modified by the caller 。*/public int getPackets ( ) return copyArray ( packets, offset
34、); public int getBytes() return copyArray(bytes, offset) ; public int getPackets () return packets ; public void setPackets ( int packets) this 。 packets = packets; 其它的方法不要写在一行上构造函数接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。访问类型 ("public ” , "private"等。)和任何"static ”,” fin al” 或” synchroni
35、zed"应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读. publicCounterSet(int size) this.size = size;克隆方法 如果这个类是可以被克隆的,那么下一步就是 clone 方法: publicObject clone() try CounterSet obj =( CounterSet)super.clone() ; obj.packets = (int )packets 。clone(); obj.size = size; return obj;catch(CloneNotSupportedException e )throw
36、 new InternalError (” UnexpectedCIoneNotSUpportedException : ” + e。getMessage(); 类方法 下面开始写类的方法: /* Set the packet counters* (such as when restoring from a database) */protected finalvoid setArray (int r1, int r2, int r3, int r4) throws IllegalArgumentException / Ensure the arrays are of equal size /
37、if (r1.length != r2.length | r1.length!= r3.length | r1.length != r4.length ) throw new IllegalArgumentException("Arrays must be of t he same size"); System.arraycopy( r1, 0, r3, 0, r1.length); System。arraycopy (r2, 0, r4, 0, r1。 length);toString 方法无论如何,每一个类都应该定义 toString 方法: publicString
38、toString( )String retval = ” CounterSe:t ”;for (int I = 0 ; I < data 。 length ( );i+ ) retval += data.bytes 。 toString() ; retval += data.packets.toString () ; return retval ;main 方法如果 main(String) 方法已经定义了, 那么它应该写在类的底部 . 代码编写格式 代码样式代码应该用 unix 的格式 ,而不是 windows 的(比如:回车变成回车+换行)文档化必须用 javadoc 来为类生成文档
39、 .不仅因为它是标准 ,这也是被各种 java 编译器都认可的方 法。使用author标记是不被推荐的,因为代码不应该是被个人拥有的。缩进缩进应该是每行2个空格.不要在源文件中保存Tab字符。在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度。如果你使用UltrEdit作为你的Java源代码编辑器的话,你可以通过如下操作来禁止保存 Tab 字符, 方法是通过 UltrEdit 中先设 定Tab使用的长度室2个空格,然后用Format|Tabs to Spaces菜单将Tab转换为空格.页宽页宽应该设置为 80 字符 . 源代码一般不会超过这个宽度 , 并导致无法完整显
40、示 , 但这一设置 也可以灵活调整。 在任何情况下 , 超长的语句应该在一个逗号或者一个操作符后折行。一条语句折行后, 应该比原来的语句再缩进 2个字符 . 对 中的语句应该单独作为一行。 例如, 下面的第 1 行是错误的, 第 2 行是正确的 : if (i0) I + ; / 错误, 和 在同一行 if (i0) I +; / 正确 , 单独作为一行 语句永远单独作为一行。如果 语句应该缩进到与其相对应的 那一行相对齐的位置。括号 左括号和后一个字符之间不应该出现空格 , 同样 , 右括号和前一个字符之间也不应该出现空 格。 下面的例子说明括号和空格的错误及正确使用 : CallProc( Ap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农作物种子繁育员资格考试的核心课程设置试题及答案2024
- 2025餐馆转让合同协议书协议合同协议书书
- 2025年商业店铺租赁合同范本简约
- 如何高效管理模具项目试题及答案
- 企业文化在模具设计中的作用试题及答案
- 救生员心理健康的重要性及试题及答案
- 游泳救生员资格试题及答案的发布
- 2024年行政管理师考试的标准化流程试题及答案
- 2024年种子繁育员的市场战略与实施试题及答案
- 模具设计中的团队合作试题及答案
- 术后恶心呕吐指南解读
- DBJ50-T-189-2014地下工程地质环境保护技术规范
- 医疗护理医学培训 神经外科常用药物课件
- 2025年社区计生工作计划(三篇)
- 药物及电解质紊乱对心电图的影响(高陆主任)
- 政务大厅窗口工作人员政务服务培训心得体会
- 印刷出版行业返利
- 2025年贵州路桥集团招聘笔试参考题库含答案解析
- 银行销售技巧和话术培训
- 智能物流行业无人机配送解决方案
- T-GDCKCJH 091-2024 微生物电化学法水质生物毒性现场快速检测技术规范
评论
0/150
提交评论