




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LIDLLOADINGOADINGG第6章 测试教学单位教师介绍南京信息工程大学NANJING
UNIVERSITY
OFINFORMATIONSCIENCE&TECHNOLOGYInstructor:Bi
Shuoben(毕硕本)Email:Tel:
(H)Software
Engineering6.2软件测试基础6.1编码6.3单元测试6.4
6.5
6.6组装测试
确认测试
白盒测试6.7
6.8
6.9黑盒测试
系统测试 调试6.1
编码选择程序设计语言作为软件工程过程的一个阶段,编码是对设计的 进一步具体化,所选用的程序设计语言的特点及 编码风格也将对程序的可靠性、可读性、可测试 性和可维护性产生深远的影响。6.1
编码使用汇编语言编码需要把软件设计翻译成机器操作的序列,因此设计既困难又容易出差错。高级语言一般都容许用户给程序变量和子程序赋予含义鲜明的名字,通过名字很容易把程序对象和它们所代表的实体联系起来,因此用高级语言写的程序容易阅读,容易测试,容易调试,容易维护。6.1
编码下面是主要的使用标准:如果所开发的系统由用户负责维护,用户通常要求用他们熟悉的语言书写程序。运行目标系统的环境中的编译程序往往限制了可以选用的语言的范围。如果某种语言有支持程序开发的软件工具可以利用,则目标系统的实现和验证都变得比较容易。系统用户的要求可以使用的编译程序可以得到的软件工具6.1
编码如果工程规模很庞大,现有的语言又不完全适用,那么设计并实现一种供这个工程项目专用的程序设计语言,可能是一个正确的选择。如果和其他标准不矛盾,那么应该选择一种已经为程序员所熟悉的语言。如果目标系统将在几台不同的计算机上运行,那么选择一种标准化程度高、程序可移植性好的语言就是很重要的。选择语言时应该充分考虑目标系统的应用范围。工程规模程序员的知识软件可移植性要求软件的应用领域6.1
编码6.1.2
编码风格源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准。程序内部的文档选取含义鲜明的名字,使它能正确地提示程序对象所代表的实体。如果使用缩写,那么缩写规则应该一致,并且应该给每个名字加注解。利用适当的阶梯形式使程序的层次结构清晰明显。6.1
编码数据说明数据说明的次序应该标准化。有次序就容易查阅,因 此能够加速测试、调试和维护的过程。如果设计时使用了一个复杂的数据结构,则应该用注 解说明用程序设计语言实现这个数据结构的方法和特 点。语句构造构造语句时应该遵循的原则是,每个语句都应该简单 而直接,不能为了提高效率而使程序变得过分复杂。6.1
编码输入输出对所有输入数据都进行检验;检查输入项重要组合的合法性;保持输入格式简单;使用数据结束标记,不要要求用户指定数据的数目;效率效率主要指处理机时间和存储器容量两个方面。6.2
软件测试基础测试的目的就是在软件投入生产性运行之前,尽 可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤, 它是对软件规格说明、设计和编码的最后复审。仅就测试而言,它的目标是发现软件中的错误, 但是,发现错误并不是最终目的。软件工程的根 本目标是开发出高质量的完全符合用户需要的软 件,因此,通过测试发现错误之后还必须诊断并 改正错误,这就是调试的目的。6.2
软件测试基础软件测试在软件生命周期中横跨两个阶段。通常在编写出每个模块之后就对它做必要的测试(称为单元测试),模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段。在这个阶段结束之后,对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常由专门的测试人员承担这项工作。6.2
软件测试基础6.2.1
软件测试的重要性工程要求使用者提出的要求为在树上作一个晃板,是三层,有两个掉杆项目开发前的设想6.2
软件测试基础分析员的描述:
描述项目为一层,三个掉杆。分析员的描述对系统认识不正确,出现偏差6.2
软件测试基础完成的设计设计员理解6.2
软件测试基础程序员做出的产品6.2
软件测试基础现场的安装6.2
软件测试基础用户原来的设想6.2
软件测试基础测试是为了发现程序中的错误而执行程序的过程3成功的测试是发现了至今为止尚未发现的错误的测试6.2.2
软件测试的目标1
2好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案6.2
软件测试基础6.2.3
软件测试的方法黑盒测试把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程,是在程序接口进行的测试白盒测试按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作6.2
软件测试基础6.2.4
软件测试的过程单元测试组装测试确认测试系统测试集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。把已测试过的模块组装起来,主要对与设计相关的软件体检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以系结构的构 及软件配置是造进行测试。
否完全、正确。把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。6.2
软件测试基础6.2
软件测试基础6.2.5
测试阶段的信息流6.3
单元测试单元测试又称模块测试,是针对软件设计 的最小单位─程序模块,进行正确性检 验的测试工作。单元测试需要从程序的内部结构出发设计 测试用例。多个模块可以平行地独立进行 单元测试。6.3
单元测试单元测试的内容在单元测试时,测试者需要依据详细设计
说明书和源程序清单,了解该模块的I/O条 件和模块的逻辑结构,主要采用白盒测试
的测试用例,辅之以黑盒测试的测试用例, 使之对任何合理的输入和不合理的输入,
都能鉴别和响应。6.3
单元测试出错处理模块接口局部数据结构边界条件独立路径6.3
单元测试①模块接口测试在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;全局量的定义在各模块中是否一致;6.3
单元测试在做内外存交换时要考虑:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写/输入错误,I/O错误是否检查并做了处理。6.3
单元测试②局部数据结构测试不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值变量名拼写错或书写错不一致的数据类型全局数据对模块的影响6.3
单元测试③路径测试选择适当的测试用例,对模块中重要的执行路径进行测试。应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。对基本执行路径和循环进行测试可以发现大量的路径错误。6.3
单元测试④错误处理测试出错的描述是否难以理解出错的描述是否能够对错误定位显示的错误与实际的错误是否相符对错误条件的处理正确与否在对错误进行处理之前,错误条件是否已经引起系统的干预等6.3
单元测试⑤边界测试注意数据流、控制流中刚好等于、大于或小于确 定的比较值时出错的可能性。如果对模块运行时间有要求的话,还要专门进行 关键路径测试,以确定最坏情况下和平均意义下 影响模块运行时间的因素。6.3
单元测试6.3.2
单元测试的步骤模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去
模拟与被测模块相联系的其它模块。驱动模块(driver)桩模块(stub)──存根模块6.3
单元测试6.3
单元测试如果一个模块要完成多种功能,可以将这个模块 看成由几个小程序组成。必须对其中的每个小程 序先进行单元测试要做的工作,对关键模块还要 做性能测试。对支持某些标准规程的程序,更要着手进行互联 测试。6.3
单元测试正文加工系统的层次图6.3
单元测试因为正文编辑模块不是一个独立的程序,所以需 要有一个测试驱动程序来调用它:说明必要的变量;接收测试数据——字符串;设置正文编辑模块的编辑功能。因为在原来的软件结构中,正文编辑模块通过调 用它的下层模块来完成具体的编辑功能,所以需 要有存根程序简化地模拟这些下层模块。6.3
单元测试Ⅰ.TESTSTUB(*测试正文编辑模块用的存根程序*)初始化;输出信息“进入了正文编辑程序”;
输出“输入的控制信息是”CFUNCT;输出缓冲区中的字符串;IF
CFUNCT=CHANGETHEN把缓冲区中第二个字改为***ELSE在缓冲区的尾部加???END
IF;输出缓冲区中的新字符串;END
TEST
STUB6.3
单元测试Ⅱ.TEST DRIVER(*测试正文编辑模块用的驱动程序*)说明长度为2500个字符的一个缓冲区;把CFUNCT置为希望测试的状态;输入字符串;调用正文编辑模块;停止或再次初启;END
TEST
DRIVER6.4
组装测试在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。需要考虑的问题是:
在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;
一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。6.4
组装测试在单元测试的同时可进行组装测试,发现并排除 在模块连接中可能出现的问题,最终构成要求的 软件系统。子系统的组装测试特别称为部件测试,它所做的 工作是要找出组装后的子系统与系统需求规格说 明之间的不一致。把模块组装成为系统的方式有两种一次性组装方式增殖式组装方式6.4
组装测试一次性组装方式它是一种非增殖式组装方式。也叫做整体拼装。对每个模块分别进行模块测试把所有模块组装在一起进行测试得到要求的软件6.4
组装测试6.4.2
增殖式组装方式首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统。在组装的过程中边连接边测试,以发现连接过程中产生的问题。通过增殖逐步组装成为要求的软件系统。6.4
组装测试自顶向下的增殖方式将模块按系统程序结构,沿控制层次自顶向下进行组装。该方式在测试过程中较早地验证了主要的控制和判断点。选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。6.4
组装测试按深度方向组装的例子6.4
组装测试自地向上的增殖方式这种组装的方式是从程序模块结构的最底层的模 块开始组装和测试。对于一个给定层次的模块,它的子模块(包括子 模块的所有下属模块)已经组装并测试完成,所 以不再需要桩模块。6.4
组装测试混合增殖方式演变的自顶向下的增殖测试由主模块开始自顶向下进行增殖测试自底向上组装成为功能相当完整且相对独立的子系统对输入/输出模块和引入新算法模块进行测试首先
接着然后6.4
组装测试自底向上 自顶向下的增殖测试首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;然后对含写操作的子系统做自顶向下的组装与测试。回归测试这种方式采取自顶向下的方式测试被修改的模块及其子模块;然后将这一部分视为子系统,再自底向上测试。6.5
确认测试确认测试又称有效性测试。任务是验证软件的功 能和性能及其它特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书 中已经明确规定。它包含的信息就是软件确认测 试的基础。6.5
确认测试进行有效性测试(黑盒测试)是在模拟的环境(可能就是开发的环境)下,运用 黑盒测试的方法,验证被测软件是否满足需求规 格说明书列出的需求。首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。6.5
确认测试通过实施预定的测试计划和测试步骤,确定软件的特性是否与需求相符;所有的文档都是正确且便于使用;
对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试6.5
确认测试在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:说明软件的这部分功能或性能特征与需求规格说明书相符合。测试结果与预期结果说明软件的这部分功能或性能特征与需求规格说明不一致,要为它提交一份问题报告。相符不符6.5
确认测试6.5.2
验收测试在通过了系统的有效性测试及软件配置审查之后,应开始系统的验收测试:验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。验收测试由用户参加设计测试用例,使用生产中的实际数据进行测试。在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。6.6
白盒测试白盒测试即逻辑覆盖测试,是以程序内部的逻辑结构为基础的设计测试用例的技术。语句覆盖判定-条件覆盖判定覆盖条件组合覆盖条件覆盖路径覆盖6.6
白盒测试语句覆盖设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。在图例中,正好所有的可执行语句都在路径L1上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。6.6
白盒测试测试用例的设计格式如下【输入的(A,B,X),输出的(A,B,X)】为图例设计满足语句覆盖的测试用例是:【(2,
0,
4),(2,
0,
3)】覆盖ace【L1】6.6
白盒测试6.6.2
判定覆盖(分支覆盖)设计若干个测试用例,运行被测程序,使得程序
中每个判断的取真分支和取假分支至少经历一次。对于图例,如果选择路径L1和L2,就可得满足要求的测试用例:【(2,0,4),(2,0,3)】覆盖ace【L1】【(1,1,1),(1,1,1)】覆盖abd【L2】6.6
白盒测试
A
2
and
B
0
or
A
1
and
B
0
and
X
A
1
A
1
and
X
1
or
B
0
and
A
2
and
X
1
6.6
白盒测试如果选择路径L3和L4,还可得另一组可用的测试用例:【(2,
1,
1),(2,
1,
2)】覆盖abe【L3】【(3,
0,
3),(3,
1,
1)】覆盖acd【L4】
A
1
and
X
1
or
B
0
and
A
2
or
B
0
and
X
1
A
1
and
B
0
and
A
2
and
X
A
1
6.6
白盒测试条件A>1
取真为条件B=0
取真为,取假为,取假为6.6.3条件覆盖条件覆盖就是设计若干个测试用例,运行被测程 序,使得程序中每个判断的每个条件的可能取值 至少执行一次。在图例中,事先可对所有条件的取值加以标记。对于第一个判断:6.6
白盒测试为
,为
,取对于第二个判断:条件A=2
取真条件X>1
取真测试用例取假为假为覆盖分支条件取值T1T2T3T4【(2,0,4),(2,0,3)】L1(c,
e)【(1,0,1),(1,0,1)】L2(b,d)【(2,1,1),(2,1,2)】L3(b,e)T1T2
T3T4T1T2T3T46.6
白盒测试或者为测试用例
覆盖分支【(1,0,3),(1,
0,4)】L3(b,e)【(2,1,1),(2,
1,2)】L3(b,e)条件取值T1T2
T3T4T1T2T3T46.6
白盒测试【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)6.6.4
判定-条件覆盖设计足够的测试用例,使得判断中每个条件的所 有可能取值至少执行一次,同时每个判断中的每 个条件的可能取值至少执行一次。测试用例
覆盖分支
条件取值T1T2T3T4T1T2
T3T46.6
白盒测试
A
2
and
B
0
or
A
1
and
B
0
and
X
A
1
A
1
and
X
1
or
B
0
and
A
2
and
X
1
6.6
白盒测试A≯1,
B=0
作A≯1,
B≠0
作A=2,X≯1
作A≠2,
X>1
作A≠2,
X≯1
作设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。记①
A>1,B=0
作T1T2②
A>1,B≠0
作③④⑤⑥⑦⑧6.6.5
条件-组合覆盖T1T2T1T2T1T2A=2,X>1
作T3T4T3T4T3T4
T3T46.6
白盒测试测试用例 覆盖条件覆盖组合【(2,
0,
4), (2,
0,
3)】(L1)
T1T2T3T4
①,
⑤②,
⑥③,
⑦④,
⑧【(2,
1,
1), (2,
1,
2)】(L3)
T1T2T3T4【(1,
0,
3), (1,
0,
4)】(L3)
T1T2
T3T4
【(1,
1,
1), (1,
1,
1)】(L2)
T1T2
T3T46.6
白盒测试测试用例 通过路径【(2,
0,
4), (2,
0,
3)】
ace
(L1)【(1,
1,
1), (1,
1,
1)】
abd
(L2)【(1,
1,
2), (1,
1,
3)】
abe
(L3)【(3,
0,
3), (3,
0,
1)】
acd
(L4)6.6.6
路径覆盖设计足够的测试用例,覆盖程序中所有可能的路 径。覆盖条件T1T2T3T4T1T2
T3T4T1T2
T3T4T1T2
T3T4返回L1(a
c
e)
A
1
and
B
0
and
A
2
or
X
A
1
A
1
and
B
0
and
A
2
or
A
1
and
B
0
and
X A
1
A
2
and
B
0
or
A
1
and
B
0
and
X
A
1
返回L2
(a
b
d)=
A
1
and
B
0
and
A
2
or
X
1
A
1
or
B
0
and
A
2
and
X
1
=
A
1
and
A
2
and
X
1
or
B
0
and
A
2
and
X
1
A
1
and
X
1
or
B
0
and
A
2
and
X
1
返回L3(a
b
c)
A
1
and
B
0
and
A
2
or
X
1
A
1
or
B
0
and
A
2
or
X
1
A
1
and
X
1
or
B
0
and
A
2
or
B
0
and
X
1
A
1
and
X
1
or
B
0
and
A
2
or
B
0
and
X
1
返回L4
(a
c
d)
A
1
and
B
0
and
A
2
or
X
A
1
A
1
and
B
0
and
A
2
and
X
A
1
返回6.7
黑盒测试等价类划分等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值
的测试。等价类划分法是一种典型的黑盒测试方法,使用 这一方法时,完全不考虑程序的内部结构,只依 据程序的规格说明来设计测试用例。6.7
黑盒测试在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。等价类的划分有两种不同的情况: 有效等价类是指对于程序
的规格说明来
说,是合理的、有意义的输入
数据构成的集
合。无效等价类是指对于程序的规格说明来说,是不合理的、无意义的输入数据构成的集合。6.7
黑盒测试划分等价类的原则1.
如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。例如,在程序的规格说明中,对输入条件有一句话:“……项数可以从1到999……”则有效等价类是“1≤项数≤999”
两个无效等价类是“项数<1”或“项数>999”。在数轴上表示成:6.7
黑盒测试2.
如果输入条件规定了输入值的集合,或者是规定了
“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。例如,在Pascal语言中对变量标识符规定为
“以字母打头的……串”。那么所有以字母打头的构成有效等价类,而不以字母打头的归于无效等价类。6.7
黑盒测试如果输入条件是一个布尔量,则可以确定一个有效等 价类和一个无效等价类。如果规定了输入数据的一组值,而且程序要对每个输 入值分别进行处理。这时可为每一个输入值确立一个 有效等价类,此外针对这组值确立一个无效等价类, 它是所有不允许的输入值的集合。如果规定了输入数据必须遵守的规则,则可以确立一 个有效等价类(符合规则)和若干个无效等价类(从 不同角度违反规则)。6.7
黑盒测试确立测试用例–
在确立了等价类之后,建立等价类表,列出所有划分出的等价类。6.7
黑盒测试从划分出的等价类中按以下原则选择测试用例设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止为每一个等价类规定一个唯一编号6.7
黑盒测试例:在某一PASCAL语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。”并且规定:“标识符必须先说明,再使用。”
“在同一说明语句中,标识符至少必须有一个。”6.7
黑盒测试用等价类划分的方法,建立输入等价类表:6.7
黑盒测试6.7.2
边界值分析是一种黑盒测试方法,是对等价类划分方法的补 充。人们从长期的测试工作经验得知,大量的错误是 发生在输入或输出范围的边界上,而不是在输入 范围的内部。因此针对各种边界情况设计测试用 例,可以查出更多的错误。6.7
黑盒测试使用边界值分析方法设计测试用例,首先应确定 边界情况。应当选取正好等于,刚刚大于,或刚 刚小于边界的值做为测试数据,而不是选取等价 类中的典型值或任意值做为测试数据。–比如,在做三角形计算时,要输入三角形的三个边长:
A、B和C。这三个数值应当满足:A>0、B>0、C>
0、A+B>C、A+C>B、B+C>A,才能构成三角形。但如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。6.7
黑盒测试6.7.3
错误推测法靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。基本想法是:–列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。6.8
系统测试通过确认的软件计算机系统进行一系列的组装测试和确认测试作为基于计算机系统的元素计算机硬件、外设、数据、人员等6.8
系统测试α测试和β测试α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。目的是评价软件产品的FLURPS(即功能、局域 化、可使用性、可靠性、性能和支持)。尤其注 重产品的界面和特色。6.8
系统测试α测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。β测试是由软件的多个用户在实际使用环境下进
行的测试。这些
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中高压及特殊性能玻璃钢管合作协议书
- 六年级英语下册 Unit 1 How tall are you Part A第一课时教学实录1 人教PEP版
- 统编版二年级数学上册教学计划(及进度表)
- 40岁至50岁血糖标准
- n2200聚合物的表征
- mos管漏电流方向
- 湖南省初中体育 1-2 功夫青春教学实录
- 做好水务行业的科学研究计划
- 公司财务战略目标布局计划
- Module 8 Sports Life Unit 2 教学设计 2024-2025学年外研版九年级英语上册
- 聚酯生产技术 聚酯主要设备介绍
- 钣金结构件点检表
- 医疗安全(不良)事件汇总登记表(科室)
- 电子商务专升本考试(习题卷6)
- 铸造企业采购流程及管理制度
- 胸痛中心培训考试题(ACS医护人员版)附有答案附有答案
- 2023年副主任医师(副高)-皮肤与性病学(副高)考试历年真题拔高带答案必考
- 安全生产费用归集清单(安措费清单)
- 广东省五年一贯制语文考试题目
- 江苏省南京市2023届高三第一学期期初考试英语试题和答案
- 10kV电力线路改造工程量清单
评论
0/150
提交评论