注:如无特殊说明,试卷中涉及工具均为QTP。
一、选择题(8分):
1、模块的耦合度描述了__D____。
A.模块内各种元素结合的程度 B.模块内多个功能之间的接口
C.模块之间公共数据的数量 D.模块之间相互关联的程度
2、内聚是一种指标,表示一个模块__B____。
A.代码优化的程度 B.代码功能的集中程度
C.完成任务时及时程度 D.为了与其他模块连接所要完成的工作量
3、在UNIX操作系统中,把输入/输出设备看作是____D__。
A.普通文件 B.目录文件 C.索引文件 D.特殊文件
1) 普通文件——内部无结构的一串平滑的字符.这种文件既可以是系统文件,也可以是库文件或用户文件.
(2) 目录文件——由文件目录项构成的文件.对它的处理(读,写,执行)在形式上与普通文件相同.
(3) 特殊文件——由一切输入输出慢速字符设备构成的文件.这类文件对于查找目录,存取权限验证等的处理与普通文件相似,而其它部分的处理针对设备特性要求做相应的特殊处理.
4、“science”是一个XML 元素的定义,其中元素标记的属性值是___C___。
A.title B.style C.italicD.science
5、___C___描述数据的局部逻辑视图,是数据库用户的数据视图,它是与某一应用有关的数据逻辑表示。
A.模式 B.逻辑模式C.外模式D.内模式
三级模式结构:外模式、模式和内模式
一、模式(Schema)
定义:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
理解:
① 一个数据库只有一个模式;
② 是数据库数据在逻辑级上的视图;
③ 数据库模式以某一种数据模型为基础;
④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系。
二、外模式(External Schema)
定义:也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
理解:
① 一个数据库可以有多个外模式;
② 外模式就是用户视图;
③ 外模式是保证数据安全性的一个有力措施。
三、内模式(Internal Schema)
定义:也称存储模式(Storage Schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。
理解:
① 一个数据库只有一个内模式;
② 一个表可能由多个文件组成,如:数据文件、索引文件。
它是数据库管理系统(DBMS)对数据库中数据进行有效组织和管理的方法
其目的有:
① 为了减少数据冗余,实现数据共享;
② 为了提高存取效率,改善性能。
6、在网络应用测试中,网络延迟是一个重要指标。以下关于网络延迟的理解,正确的是_____
A.指响应时间
B.指报文从客户端发出到客户端接收到服务器响应的间隔时间
C.指报文在网络上的传输时间
D.指从报文开始进入网络到它开始离开网络之间的时间
理解:
在各式各样的数据在网络介质中通过网络协议(如TCP/IP)进行传输,如果信息量过大不加以限制,超额的网络流量就会导致设备反映缓慢,造成网络延迟。
定义:在传输介质中传输所用的时间,即从报文开始进入网络到它开始离开网络之间的时间。
7、______可以作为软件测试结束的标志。
A.使用了特定的测试用例B.错误强度曲线下降到预定的水平
C.查出了预定数目的错误 D.按照测试计划中所规定的时间进行了测试
二、简答题:(3*10=30分)
1、什么是软件测试,为什么要进行软件测试?软件测试与调试的区别?
答案:(1) 软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
(2) 因为没有经过测试的软件很难在发布之前知道该软件的质量,就像ISO质量认证一样,软件同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。
(3) 在软件开发的过程中,调试和测试是两个不同的过程,分别由程序开发人员和测试人员来完成。
第一,调试的过程是随机的不可重复的;而测试的过程是有计划的、可以重复的过程。
第二,调试的目的是为了隔离和确认问题的所在,并加以解决,使得程序能够正常运行;而测试的目的是为了找出与软件实现定义的规格和标准不符合的问题,保证软件能都满足用户需求。
但二者也有相同之处,最终目的都是为了提高软件质量。
2、α测试与β测试的区别?静态测试与动态测试的区别?
答案:(1)Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试;Beta测试(β测试)是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。总而言之,前者是内部模拟上线,后者是真正上线,让用户参与测试。
(2) 静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。
3、QTP有哪几种录制模式?
答案:正常录制模式、模拟录制模式(Analog Recording)和低级录制模式(Low Level Recording)。
4、QTP如何对下拉框中的数据进行参数化?
答案:
两种方式可以实现:
a) 通过下拉框对应项的实际值参数化
Browser("****").Page("****").WebList("****").Select "****”
将select“****”的值参数化,可以将下拉框中的每一个选项都写到数据表中
b) 通过下拉框对应项的索引号参数化
Browser("****").Page("****").WebList("****").Select "#"&IndexNum
如下拉框有5个选项:
Rnd 是在vb中返回一个随机数的值
IndexNum = Int((5- 1 + 1) * Rnd + 1) 或 IndexNum = RandomNumber(1,5)
以上代码生成1到5之间的随机数,5是上界,1是下界。
5、用QTP录制脚本后如何修改脚本能够增加其灵活性?
答案:1)数据驱动测试(使用QTP的Data Table参数化、Action参数化、环境变量参数化等脚本参数化的方法。)
2)将可重用的操作抽象出来,封装成方法,这样通过传递不同的操作我们就可以完成不同的软件行为;(Action的复用)
3)将测试脚本与测试数据文件分离开来,这样一个脚本就可以驱动不同的测试数据进行测试;
4)在对象识别上,应该将对象识别的过程和对象的特征相分离。避免将所有的脚本都线性化的写到一起,提高脚本的可维护性。
6、如何设置使对象库不产生重复对象
答案:Tools->Options->Web->Page/Frame Options
根据需要更改设置,若要一直不出现重复名称,则两个RadioButton都选第二项。
7、如何修改共享对象库中的值并使之生效?
答案:打开QTP,点击Resources菜单,进入Object Repository,右键点击要修改的共享对象库的对象,并点击copy to Local,然后可以进行相应的修改。
8、Action1中参数传递到Action2中有哪几种方式,请分别加以说明。
答案:共有三种方式,1)通过DataTable共享, DataTable对于每个Action都是可见的,如通过全局数据表(Global Data Table)来共享数据;
2)通过环境变量共享,环境变量也是Test工程的共享变量。如自定义一个环境变量name,并为其赋值,则Test中不同Action都可以使用该参数;
3)通过Action Parameters的参数传递,对Action的属性设置和对调用的属性设置来进行参数传递,只有有调用关系才能共享。如:在Action1中执行如下语句:
RunAction "Action2", oneIteration ,Value
并进行相关参数设置,可实现对Action2的调用。
9、正则表达式:\(?0\d{2}[) -]?\d{8}表示什么内容?
答案:表示国内电话号码。
其中\表示转义(,?表示前面字符出现0-1次,d{2}数字重复两次,[) -]?表示方括号中连字符出现0-1次,\d{8}表示0-9的数字重复出现8次。
10、请将下面操作用另外一种描述性编程实现(通过Description对象): Window("Error").WinButton("text:=OK", "index:=1").Click
答案:
Set MyDescription = Description.Create()
MyDescription("text").Value = "OK"
MyDescription("index").Value = 1
Window("Error").WinButton(MyDescription).Click
Set MyDescription = Nothing
三、QTP脚本开发题(30分):
1、 如果运行Fight4a的登录脚本前(脚本中需要QTP自动打开登录框),被测对象已经存在多个(如图),这将导致后续步骤出错,如何能够先将已经打开的登录框关闭再执行登录,请将脚本中关闭多余登录框功能补充完整。
Dim loginO
oX#c h ]X$r4B38300Set _____________________
} Q�qmd.f38300loginO( "regexpwndtitle").value="Login"
Nux(Zd R3U8q38300Set
_________________________51testing软件测试博客5Ov�^jMP
For__________________
______________
�uq?1L/{*\38300Next
Dim login0
Set login0=Description.Create()
login0("text").value="Login"
Set T=Desktop.ChildObjects(login0)
For i=0 to T.count-1
T(i).close
Next
2、 录制QTP自带软件Flight4a系统的订票功能,要求:对所订机票的机舱类型进行参数化,即实现定购如下图所示3张不同机舱类型(如图)的飞机票,如何实现(至少给出三种实现方式)?
录制订单张机票代码如下:
With Window("Flight Reservation")
.Activate
.WinObject("Date of Flight:").Type "111111"
.WinComboBox("Fly From:").Select "Denver"
.WinComboBox("Fly To:").Select "Los Angeles"
.WinButton("FLIGHT").Click
With .Dialog("Flights Table")
.WinList("From").Select "1753 DEN 02:57 PM LAX 03:55 PM NW $119.20"
.WinButton("OK").Click
End With
.Activate
.WinEdit("Name:").Set "rr"
.WinRadioButton("Business").Set
.WinButton("Insert Order").Click
.Activate
.WinButton("Button").Click
End With
3、 如果将DataTable中原本写在Global的参数改写在Action中,则需要加上怎样的代码达到原来的迭代效果?注:均为默认设置,Action1迭代设为一次,Global为所有行迭代。
答案:
For i=1 to DataTable.GetSheet("Action1").GetRowCount
Dialog("Login").WinEdit("Agent Name:").Set DataTable("aa", dtLocalSheet)
DataTable.GetSheet("Action1"). SetNextRow
Next
4、 用QTP打开Word并录入内容。
答案:
EditWord "D:\text.doc","QTP是一款功能强大的测试软件"
Sub EditWord(filepath,content)
Set WordApp =Createobject("Word.Application")
WordApp.Visible=True
Set WordDoc=WordApp.Documents.Open(filepath)
WordDoc.Content =content ' 给Word添加内容
WordDoc.Save '保存Word的内容
Set WordDoc=Nothing
Set WordApp=Nothing
End Sub
5、 用QTP实现将记事本中用逗号分隔的用户名和密码两列参数导入DataTable。
答案:
Function FileToDT(filename)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set OF = FSO.OpenTextFile(filename, 1)
crow = 1
DataTable.LocalSheet.AddParameter "name", ""
DataTable.LocalSheet.AddParameter "pass", ""
OF.SkipLine '读文件时跳到下一行
DO While OF.AtEndOfStream <> True
DataTable.LocalSheet.SetCurrentRow crow
NewString = OF.ReadLine
a = Split(NewString, ",")
Cpass=Crypt.Encrypt(a(1))
'MsgBox e_password
DataTable.Value(1,dtLocalSheet) = a(0)
DataTable.Value(2,dtLocalSheet) = Cpass
crow = crow + 1
Loop
'DataTable.LocalSheet.SetCurrentRow 1
OF.Close
Set FSO = Nothing
End Function
四、问答题:(20分)
1.等价划分法包含有效等价类和无效等价类,用一般三角形的三条边(ABC)举例,划分这两种等价类ABC所满足的条件。
答案:
2、用边界值分析法,假定X为整数,范围是【10,100】,列出X在测试中所取的值。
答案:X=9,X=10,X=11,X=99,X=100,X=101;
如果考虑单缺陷原理,则X=9,X=10,X=99,X=100。
3、V模型是重要的测试模型,请描述V模型中,各个重要阶段的对应关系,并画出他们。
答案:V模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。
4、请针对以下邮箱注册页面设计测试用例。
答案:有效邮箱:6~18个字符,包括数字、字母、下划线,以字母开头,字母或数字结尾。
有效等价类:
(1)以"A-Z"、"a-z"、"0-9"、"_"组合的字符串
(2)长度为6~18个字符
(3)以"A-Z"、"a-z"字符开头
(4)以"A-Z"、"a-z"或"0-9"字符结尾
无效等价类:
(5)邮箱名组成有"A-Z"、"a-z"、"0-9"、"_"以外的字符
(6)邮箱名长度小于6个字符
(7)邮箱名长度大于30个字符
(8)邮箱名以"0-9"字符开头
(9)邮箱名以"_"字符开头
(10)邮箱名以"_"字符结尾
(11)邮箱名为空
五、数据库(12分)
1.已建立两个学生基本信息表,表的结构如下:
Test1
No Name Sex Age Department Place
2002001 张三 男 20 计算机系 北京
2002002 李四 女 20 数学系 山东
2002003 王五 男 21 计算机系 北京
2002004 小红 女 21 数学系 河北
2002005 小李 男 20 数学系 辽宁
2002006 小王 男 22 计算机系 浙江
Test2
No Grade(N型) Courses
2002001 67 英语
2002002 81 数学
2002003 75 操作系统
2002004 91 网络
2002005 70 数据库
2002006 85 C语言
1)用SQL语句找出是计算机系并籍贯是北京的学生的所有记录
select * from test where department='计算机系' and place='北京'
2)用SQL语句把计算机系的学生的Department改为信息学院
update test set department='信息学院' where department='计算机系';
3)用SQL连接查询找出成绩大于等于75分的学生的No,Nname,Grade,Courses 字段的记录
select test.name1,test.number,test1.grade,test1.courses from test,test1
where test.number=test1.number and test1.grade>75
六、智力题 (附加题30分)
1、 有十个小球,形状完全相同,其中一个质量不同。问怎么用天平测出那个质量不同的小球,只能测三次,那个小球是比其他任何一个重还是轻?
答案1:先把它分成三份,其中一份四个,另外两份三个,1.然后用天平把两个同样数量的求放上称。如果它们平等,2.就把四个球的那份分成两份,放上,如果事那个球质量轻,就看哪边的向上翘,3.然后在把它们分成两份,再看看哪边上翘就可以了
答案2:把它们分成4堆,前面三个都是3个一堆,,标号为1,2,3,剩下一个为一堆,标号4。先称1,2,3这三堆。放上1,2,有两种情况:
a、如果平,那么这两个都是标准的,那么换下2,称1和3,如果还是平,那么很明显第4堆那仅有的一个就是了,要看它重还是轻,随意选一个标准的和它一称就知道。如果不平,那么就是第三堆里有那个不一样的球。看天平往哪边偏。如果偏向3,那么那个球比其他球重,如果偏向1,那么则轻。在第3堆里,任意选两个,如果平了,那么目标球是剩下的,如果不平,根据前面的判断,看天平的偏向,就可判断哪个是目标球了。
b、如果不平,看天平偏向哪边,记下。那么换下2,称1和3,如果平,目标球则在2,如果不平,还是看天平的偏向,如果仍然偏向1,那么目标在3,偏向3时目标球在1。但无论偏向哪里,都已经可以知道目标球是重还是轻了。于是在从有目标球那一堆里,任意拿两个,这一步就和1里最后的步骤一样了。
2、 有三个人面试,经理有五顶帽子,三白色的两黄色的,三个人面壁而立,经理给他们每人各戴一顶帽子,看谁能最快猜出自己头上戴的是什么颜色的帽子。三人回过头来你看我我看你,看到另外两个都戴白色帽子,开始都没人猜出来,突然有人说自己戴的是白帽子,经理录用了他,问他是怎么知道自己的是白帽子的?
答案:a,b,c三个人:
a想,如果我是黄帽子,b就会猜想,如果我也是黄帽子,c就肯定知道自己是白帽子了;但c一直没有说,说明假设错误;
b就会继续推理自己是白帽子,但b没有说,a就可以判断自己不是黄帽子了;
a就可以判断自己是白帽子
3、 在太平洋的一个小岛上生活着土人,他们不愿意被外人打扰,一天,一个探险家到了岛上,被土人抓住,土人的祭司告诉他,你临死前还可以有一个机会留下一句话,如果这句话是真的,你将被烧死,是假的,你将被五马分尸,可怜的探险家如何才能活下来?
答案:探险家说:我将被五马分尸。
如五马分尸了,此话是真就应被烧死.如用烧死的,他说的是假话,又当五马分尸。如此循环,土人祭司也没办法了,只能让他活下来。
网友评论