软件测试工程师笔试题及答案.docx
《软件测试工程师笔试题及答案.docx》由会员分享,可在线阅读,更多相关《软件测试工程师笔试题及答案.docx(7页珍藏版)》请在冰豆网上搜索。
软件测试工程师笔试题及答案
软件测试工程师笔试题及答案
测试工程师笔试题
一、计算机知识(30分)
1、在Linux系统中,一个文件的访问权限是755,其含义是什么?
参考答案:
755表示该文件所有者对该文件具有读、写、执行权限,该文件所有者所在组用户及其它用户对该文件具有读和执行权限。
2、Linux中,如何从root用户切换到普通用户?
参考答案:
su
suuser1切换到user1,但切换后的当前目录还是root访问的目录
su–user1切换到user1,而且当前目录切换到user1的根目录下(/home/user1/)
3、简述一下C/S模式和B/S模式的区别?
参考答案:
c/s是客户端/服务器架构
b/s是浏览器/服务器架构
C/S模式有以下特点:
1.C/S模式将应用与服务分离,系统具有稳定性和灵活性
2.C/S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性
3.由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快
4.在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客户机程序,系统升级和维护较为复杂
B/S模式有以下特点:
1.系统开发、维护、升级方便
每当服务器应用程序升级时,只要在服务器上升级服务应用程序即可,用户计算机上的浏览器软件不需要修改,系统开发和升级维护方便
2.B/S模式具有很强的开放性
在B/S模式下,用户经过通用的浏览器进行访问,系统开放性好
3.B/S模式的结构易于扩展
由于Web的平台无关性,B/S模式的结构能够任意扩展,能够从包含一台服务器和几个用户的小型系统扩展成为拥有成千上万个用户的大型系统
4.用户使用方便
B/S模式的应用软件都是基于Web浏览器的,而Web浏览器的界面是类似的。
对于无用户交换功能的页面。
用户接触的界面都是一致的,用户使用方便
4、Windows操作系统中PATH环境变量的作用是什么?
参考答案:
PATH是Windows操作系统环境变量,PATH作用是用户在命令行窗口执行一个命令,则在PATH变量设置的目录下依次寻找该命令或对应的执行文件,若找到,则执行,若没有找到,则命令行窗口返回无效命令。
5、TCP和UDP有什么区别?
参考答案:
TCP-有连接,因此握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换
UDP-非可靠连接,会丢包,没有校验,速度快,无须握手过程
TCP
UDP
是否连接
面向连接
面向非连接
传输可靠性
可靠的
不可靠的
应用场合
传输大量数据
少量数据
速度
慢
快
6、DNS是什么?
它是如何工作的?
参考答案:
域名解析服务。
用于将域名解析为IP,或反和将IP解析为域名。
客户机可指定DNS服务器来解析,或用本机hosts文件进行解析。
7、说出4种及以上常见的操作系统及其主要的应用范围(微软的操作系统除外)。
参考答案:
Linux(RedHat、SUSE、Debian、TruboLinux):
主要用于搭建各类服务器
MACOS:
苹果机的操作系统,用于图像处理
Unix(AIX:
IBM服务器的专用操作系统;
Solaris:
Sun操作系统;FreeBSD、NetBSD)
8面向对象程序设计有哪些特点?
参考答案:
面向对象程序设计以需求当中的数据作为中心,来进行设计,具有良好的代码重用性。
封装性:
也叫数据隐藏,用户无需知道内部工作流程,只要知道接口和操作就能够的,C++中一般用类来实现封装。
继承性:
一种支持重用的思想,在现有的类型派生出新的子类,例如新型电视机在原有型号的电视机上增加若干中功能而得到,新型电视机是原有电视机的派生,继承了原有电视机的属性,并增加了新的功能。
多态性:
指在一般类中定义的属性或行为,被特殊类继承之后,能够具有不同的数据类型或表现出不同的行为。
动态联编:
指一个计算机程序自身彼此关联的过程,按照联编所进行的阶段不同,可分为两种不同的联编方法:
静态联编和动态联编。
9、一条软件缺陷记录都包含哪些内容?
参考答案:
bug编号
bug发现人
bug发现时间
bug状态
bug严重程度
bug所属版本
bug所属模块
bug处理人
bug修改日期
bug简单描述
bug详细描述
bug相关附件
bug初步分析
10、一套完整的测试应该由哪些阶段组成?
参考答案:
测试计划、测试设计与开发、测试实施、测试评审与测试结论
二、测试知识(50分)
1、您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?
如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。
(10分)
参考答案:
1.拿到新版本
2.进行测试发现BUG后提交SUBMIT(测试)
3.由相应人员置为NEW的状态
4.修改BUG,FIXED(开发)(当然也有可能被判定为不是BUG或者需要讨论决定的)
5.回归测试,修改BUG状态,FIXEDVERIFIED或者REOPEN(测试)
6.REOPEN的话开发继续修改,FIXEDVERIFIED的话由相应人员CLOSE这个BUG。
2、请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
(10分)
参考答案:
黑盒测试:
把测试对象当成一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。
白盒测试:
把测试对象当成一个透明的盒子,允许测试人员利用程序内部逻辑结构及相关信息,设计或选择测试用例,对程式所有逻辑路径进行测试。
单元测试:
白盒测试的一种,对软件设计中的单元模块进行测试。
集成测试:
在单元测试的基础上,对单元模块之间的连接和组装w进行测试。
系统测试:
在所有都考虑的情况下,对系统进行测试。
验收测试:
第三方进行的确认软件满足需求的测试
3、你所熟悉的测试用例设计方法有哪些?
分别以具体的例子说明在实际测试中的应用。
(10分)
参考答案:
1.等价类划分
划分等价类:
等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:
测试某等价类的代表值就等于对这一类其它值的测试.因此,能够把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就能够用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:
有效等价类和无效等价类.
2.边界值分析法
边界值分析方法是对等价类划分方法的补充。
测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,能够查出更多的错误.
使用边界值分析方法设计测试用例,首先应确定边界情况.一般输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
3.错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.
错误推测方法的基本思想:
列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据她们选择测试用例.例如,在单元测试时曾列出的许多在模块中常见的错误.以前产品测试中曾经发现的错误等,这些就是经验的总结.还有,输入数据和输出数据为0的情况.输入表格为空格或输入表格只有一行.这些都是容易发生错误的情况.可选择这些情况下的例子作为测试用例.
4.因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等.考虑输入条件之间的相互组合,可能会产生一些新的情况.但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,她们之间的组合情况也相当多.因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例.这就需要利用因果图(逻辑模型).因果图方法最终生成的就是判定表.它适合于检查程序输入条件的各种组合情况.
4、画出软件测试的V模型图。
(5分)
参考答案:
5、软件的安全性应从哪几个方面去测试?
(5分)
参考答案:
(1)用户认证机制:
如数据证书、智能卡、双重认证、安全电子交易协议
(2)加密机制
(3)安全防护策略:
如安全日志、入侵检测、隔离防护、漏洞扫描
(4)数据备份与恢复手段:
存储设备、存储优化、存储保护、存储管理
(5)防病毒系统
6、描述软件产生内存泄露的原因以及检查方式。
(能够结合一种开发语言进行描述)(5分)
参考答案:
内存泄露的原因,主要是由于开发过程当中申请了计算机资源(例如对象、内存等),可是使用资源完成以后没有及时释放资源导致的。
例如在C语言当中使用了malloc申请了内存,可是未使用free来释放内存。
7、简述软件自动化测试工具的原理。
(5分)
参考答案:
测试工具的优势在于可部分地替代人工的测试过程,经过测试工具来模拟人的手工操作,这个过程中会记录操作的对象和操作的顺序,然后在回放时按照录制的顺序操作这些对象。
能重复不断地执行,能精确判断数值和字符对象。
自动化测试工具把测试用例用自动的方式执行,例如,自动地产生数据,自动地打开应用程序,自动地查找控件,自动地输入数据,自动地操作控件,自动地收集测试结果,自动地与预期结果进行比较等。
三、数据库(10分)
为管理业务培训信息,建立3个表:
S(S#,SN,SD,SA)S#,SN,SD,SA分别代表学号,学员姓名,所属单位,学员年龄
C(C#,CN)C#,CN分别代表课程编号,课程名称
SC(S#,C#,G)S#,C#,G分别代表学号,所选的课程编号,学习成绩
(1)使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名?
答:
selects#,snfromswhereS#in(selectS#fromc,scwherec.c#=sc.c#andcn=’税收基础’)
(2)使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位?
答:
selectsn,sdfroms,scwheres.s#=sc.s#andsc.c#=’c2’
(3)使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位?
答:
selectsn,sdfromswheres#notin(selects#fromscwherec#=’c5’)
(4)查询选修了课程的学员人数
答:
select学员人数=count(distincts#)fromsc
(5)查询选修课程超过5门的学员学号和所属单位?
答:
selectsn,sdfromswheres#in(selects#fromscgroupbys#havingcount(distinctc#)>5)
四、编程题(10分)
编程输出1/1+1/3+1/5+……+1/99的和。
参考答案:
publicclassSum{
publicstaticvoidmain(String[]args){
floatsum=0.0f;
for(floati=1.0f;i<=99.0f;i=i+2)
{
sum=1/i+sum;
}
System.out.println(sum);
}
}
附加题
谈谈软件测试技术,以及一个优秀的软件测试人员