软件测试工程师笔试题以及答案汇总

合集下载

迪普软件测试工程师笔试题及答案

迪普软件测试工程师笔试题及答案

迪普软件测试工程师笔试题及答案一.选择题(每题4分)1.以下哪种情况需要编写测试软件需求() [单选题] *A.新项目无测试软件,引入自动测试软件时;B.测试软件发生变更时;C.软件调试过程中,测试软件需求不适用需要修改时;D.以上皆是。

(正确答案)2.通常由谁负责编写测试软件需求() [单选题] *A.PE;B.TE;(正确答案)C.TE主管;D.以上皆是。

3.以下哪种不属于软件需求模板中的内容() [单选题] *A.需求背景/目的;B.设备清单与硬件接口;C.需求描述;D.验证报告。

(正确答案)4.以下哪种设备必须提供通讯方式和相关通讯命令() [单选题] *A.OSA AQ6370C/D;B.功率计8163A/B;C.专用自制设备;(正确答案)D.衰减器8157A。

5.需求描述包括() [单选题] *A.产品概述;B.功能需求;C.具体需求;D.以上皆是。

(正确答案)6.具体需求可以不包含如下哪项内容?() [单选题] *A.详细定标/检查/测试方法步骤;B.产品工作模式;C.设备关键参数设置;D.缩写单词释义。

(正确答案)7.参考附件可以包含?() [单选题] *A.默认值表;B.命令清单;C.光路图;D.以上都是。

(正确答案)8.审批流程在哪个系统中?() [单选题] *A.无源部门系统。

(正确答案)B.PLM系统。

C.OA系统。

D.邮箱Notes系统。

9.审批流程附件名称包含如下哪项内容会导致审批人员无法打开附件?() [单选题] *A.数字;B.字母;C.#;(正确答案)D.以上都不会。

10.由谁负责跟进软件需求审批流程签批进度() [单选题] *A.PE;B.流程提交人;(正确答案)C.软件工程师;D.TE主管。

11.需要注明参数设置的设备有() [单选题] *A.光谱仪;B.功率计;C.示波器;D.以上都是。

(正确答案)12.以下属于特殊设备,需要在软件需求中给出通讯命令的有() [单选题] *A.自制泵源工装;B.新型号光谱仪;C.产线未使用过的设备;D.以上都是。

软件测试工程师笔试题及答案

软件测试工程师笔试题及答案

测试工程师笔试题一、计算机知识(30分)1、在Linux系统中,一个文件的访问权限是755,其含义是什么参考答案:755表示该文件所有者对该文件具有读、写、执行权限,该文件所有者所在组用户及其他用户对该文件具有读和执行权限。

2、Linux中,如何从root用户切换到普通用户参考答案:susu user1 切换到user1,但切换后的当前目录还是root访问的目录su – user1 切换到user1,并且当前目录切换到user1的根目录下(/home/user1/)3、简述一下C/S模式和B/S模式的区别参考答案:c/s 是客户端/服务器架构b/s 是浏览器/服务器架构C/S模式有以下特点:S模式将应用与服务分离,系统具有稳定性和灵活性S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性3.由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快4.在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客户机程序,系统升级和维护较为复杂B/S模式有以下特点:1.系统开发、维护、升级方便每当服务器应用程序升级时,只要在服务器上升级服务应用程序即可,用户计算机上的浏览器软件不需要修改,系统开发和升级维护方便S模式具有很强的开放性在B/S模式下,用户通过通用的浏览器进行访问,系统开放性好S模式的结构易于扩展由于Web的平台无关性,B/S模式的结构可以任意扩展,可以从包含一台服务器和几个用户的小型系统扩展成为拥有成千上万个用户的大型系统4.用户使用方便B/S模式的应用软件都是基于Web浏览器的,而Web浏览器的界面是类似的。

对于无用户交换功能的页面。

用户接触的界面都是一致的,用户使用方便4、Windows操作系统中PATH环境变量的作用是什么参考答案:PATH是Windows操作系统环境变量,PATH作用是用户在命令行窗口执行一个命令,则在PATH变量设置的目录下依次寻找该命令或对应的执行文件,若找到,则执行,若没有找到,则命令行窗口返回无效命令。

软件工程师笔试题及答案

软件工程师笔试题及答案

软件工程师笔试题及答案一、选择题(每题5分,共50分)1. 在Java中,以下哪个关键字用于定义一个类?A. classB. structC. interfaceD. enum答案:A2. 下列关于Python中的列表推导式描述错误的是?A. 可以用于创建列表B. 可以用于列表元素的过滤C. 只能用于创建列表D. 可以用于列表元素的转换答案:C3. 在C++中,以下哪个操作符用于实现多态?A. &B. *C. newD. ::答案:D4. 在数据库设计中,以下哪个原则用于避免数据冗余?A. 范式设计B. 反范式设计C. 索引设计D. 视图设计5. 在HTML中,以下哪个标签用于定义文档的头部?A. <head>B. <title>C. <header>D. <h1>答案:A6. 在JavaScript中,以下哪个方法用于将字符串转换为小写?A. toUpperCase()B. toLowerCase()C. split()D. join()答案:B7. 在Unix/Linux系统中,以下哪个命令用于查看当前工作目录?A. pwdB. lsC. cdD. mkdir答案:A8. 在软件工程中,以下哪个阶段是软件开发生命周期的最后一个阶段?A. 需求分析B. 设计C. 测试D. 维护答案:D9. 在面向对象编程中,以下哪个概念用于描述对象的状态和行为?B. 继承C. 封装D. 多态答案:A10. 在网络编程中,以下哪个协议用于传输电子邮件?A. HTTPB. FTPC. SMTPD. TCP答案:C二、简答题(每题10分,共50分)1. 请简述什么是软件工程?答:软件工程是一门应用计算机科学、数学、逻辑学等学科知识,通过工程化方法进行软件开发、运行和维护的学科。

2. 什么是敏捷开发?答:敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法论,强调团队合作、客户反馈和对变化的适应性。

最新软件测试工程师笔试题以及答案汇总

最新软件测试工程师笔试题以及答案汇总

一、判断题1.软件测试的目的是尽可能多的找出软件的缺陷。

(Y)2.Beta测试是验收测试的一种。

(Y)3.验收测试是由最终用户来实施的。

(N)4.项目立项前测试人员不需要提交任何工件。

(Y)5.单元测试能发现约80%的软件缺陷。

(Y)6.代码评审是检查源代码是否达到模块设计的要求。

(N)7.自底向上集成需要测试员编写驱动程序。

(Y)8.负载测试是验证要检验的系统的能力最高能达到什么程度。

(N)9.测试人员要坚持原则,缺陷未修复完坚决不予通过。

(N)10.代码评审员一般由测试员担任。

(N)11.我们可以人为的使得软件不存在配置问题。

(N)12.集成测试计划在需求分析阶段末提交。

(N)二、选择题1.软件验收测试的合格通过准则是:(ABCD)A.软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。

B.所有测试项没有残余一级、二级和三级错误。

C.立项审批表、需求分析文档、设计文档和编码实现一致。

D.验收测试工件齐全。

2.软件测试计划评审会需要哪些人员参加?(ABCD)A.项目经理B.SQA负责人C.配置负责人D.测试组3.下列关于alpha测试的描述中正确的是:(AD)A.alpha测试需要用户代表参加B.alpha测试不需要用户代表参加C.alpha测试是系统测试的一种D.alpha测试是验收测试的一种4.测试设计员的职责有:(BC)A.制定测试计划B.设计测试用例C.设计测试过程、脚本D.评估测试活动5.软件实施活动的进入准则是:(ABC)A.需求工件已经被基线化B.详细设计工件已经被基线化C.构架工件已经被基线化D.项目阶段成果已经被基线化6、为保证测试活动的可控性,必须在软件测试过程中进行软件测试配置管理,一般来说,软件测试配置管理中最基本的活动包括_A_____A.配置项标识、配置项控制、配置状态报告、配置审计B.配置基线确立、配置项控制、配置报告、配置审计C.配置项标识、配置项变更、配置审计、配置跟踪D.配置项标识、配置项控制、配置状态报告、配置跟踪7、__B____方法根据输出对输入的依赖关系设计测试用例。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以下是收集的最新的软件测试工程师题目,希望对大家有帮助;一、判断题1.软件测试的目的是尽可能多的找出软件的缺陷;Y2.Beta测试是验收测试的一种;Y3.验收测试是由最终用户来实施的;N4.项目立项前测试人员不需要提交任何工件;Y5.单元测试能发现约80%的软件缺陷;Y6.代码评审是检查源代码是否达到模块设计的要求;N7.自底向上集成需要测试员编写驱动程序;Y8.负载测试是验证要检验的系统的能力最高能达到什么程度;N9.测试人员要坚持原则,缺陷未修复完坚决不予通过;N10.代码评审员一般由测试员担任;N11.我们可以人为的使得软件不存在配置问题;N12.集成测试计划在需求分析阶段末提交;N二、选择题1.软件验收测试的合格通过准则是:ABCDA.软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求; B.所有测试项没有残余一级、二级和三级错误;C.立项审批表、需求分析文档、设计文档和编码实现一致;D.验收测试工件齐全;2.软件测试计划评审会需要哪些人员参加 ABCDA.项目经理B.SQA负责人C.配置负责人D.测试组3.下列关于alpha测试的描述中正确的是:ADA.alpha测试需要用户代表参加B.alpha测试不需要用户代表参加C.alpha测试是系统测试的一种D.alpha测试是验收测试的一种4.测试设计员的职责有:BCA.制定测试计划B.设计测试用例C.设计测试过程、脚本D.评估测试活动5.软件实施活动的进入准则是:ABCA.需求工件已经被基线化B.详细设计工件已经被基线化C.构架工件已经被基线化D.项目阶段成果已经被基线化6、为保证测试活动的可控性,必须在软件测试过程中进行软件测试配置管理,一般来说,软件测试配置管理中最基本的活动包括_A_____A.配置项标识、配置项控制、配置状态报告、配置审计B.配置基线确立、配置项控制、配置报告、配置审计C.配置项标识、配置项变更、配置审计、配置跟踪D.配置项标识、配置项控制、配置状态报告、配置跟踪7、__B____方法根据输出对输入的依赖关系设计测试用例;A.路径测试B.等价类 C.因果图D.边界值8、在C++语言中,若类C中定义了一个方法int fint a,int b,那么方法___A___不能与该方法同时存在于类C中A.int fint x,int y B.int ffloat a,int bC.float fint x,float y D.int fint x,float y9、下列关于软件验收测试的合格通过准则错误的是:__C____A.软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求;B.所有测试项没有残余一级、二级和三级错误;C.立项审批表、需求分析文档、设计文档和编码实现不一致;D.验收测试工件齐全三、填空题1.软件验收测试包括:正式验收测试,alpha测试,beta测试;2.系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,有的可以合在一起,分开写只要写出15就满分哦3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划;4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种;5.通过画因果图来写测试用例的步骤为:1分析软件规格说明描述中,哪些是原因即输入条件或输入条件的等价类,哪些是结果即输出条件,并给每个原因和结果赋予一个标识符;2分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系根据这些关系,画出因果图;3由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现;为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件;4把因果图转换成判定表;5把判定表的每一列拿出来作为依据,设计测试用例;四、简答题1.区别阶段评审的与同行评审同行评审目的:发现小规模工作产品的错误,只要是找错误;阶段评审目的:评审模块阶段作品的正确性可行性及完整性同行评审人数:3-7人人员必须经过同行评审会议的培训,由SQA指导阶段评审人数:5人左右评审人必须是专家具有系统评审资格同行评审内容:内容小一般文档< 40页,代码< 500行阶段评审内容:内容多,主要看重点同行评审时间:一小部分工作产品完成阶段评审时间:通常是设置在关键路径的时间点上2.什么是软件测试为了发现程序中的错误而执行程序的过程3简述集成测试的过程系统集成测试主要包括以下过程:1.构建的确认过程;2.补丁的确认过程;3.系统集成测试测试组提交过程;4.测试用例设计过程;5.测试代码编写过程;6. Bug的报告过程;7.每周/每两周的构建过程;8.点对点的测试过程;9.组内培训过程;4怎么做好文档测试仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例;P142检查文档的编写是否满足文档编写的目的内容是否齐全,正确内容是否完善标记是否正确5白盒测试有几种方法总体上分为静态方法和动态方法两大类;静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖;6系统测试计划是否需要同行审批,为什么需要,系统测试计划属于项目阶段性关键文档,因此需要评审;7Alpha测试与beta的区别Alpha测试在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更;这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成;Beta测试当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到;这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成;8比较负载测试,容量测试和强度测试的区别负载测试:在一定的工作负荷下,系统的负荷及响应时间;强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响;容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值如最大并发用户数、数据库记录数等,系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行;容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量;容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理;容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量;9测试结束的标准是什么用例全部测试;覆盖率达到标准;缺陷率达到标准;其他指标达到质量标准10描述软件测试活动的生命周期测试周期分为计划、设计、实现、执行、总结;其中:计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安排人力物力资源,安排进度等;设计:完成测试方案,从技术层面上对测试进行规划;实现:进行测试用例和测试规程设计;执行:根据前期完成的计划、方案、用例、规程等文档,执行测试用例;总结:记录测试结果,进行测试分析,完成测试报告;11软件的缺陷等级应如何划分A类—严重错误,包括以下各种错误: 1.由于程序所引起的死机,非法退出 2.死循环3.数据库发生死锁 4.因错误操作导致的程序中断 5.功能错误 6.与数据库连接错误 7.数据通讯错误B类—较严重错误,包括以下各种错误: 1.程序错误 2.程序接口错误 3.数据库的表、业务规则、缺省值未加完整性等约束条件C类—一般性错误,包括以下各种错误: 1.操作界面错误包括数据窗口内列名定义、含义是否一致 2.打印内容、格式错误 3.简单的输入限制未放在前台进行控制 4.删除操作未给出提示 5.数据库表中有过多的空字段D类—较小错误,包括以下各种错误: 1.界面不规范 2.辅助说明描述不清楚 3.输入输出不规范 4.长操作未给用户提示 5.提示窗口文字未采用行业术语 6.可输入区域和只读区域没有明显的区分标志E类—测试建议五、用例设计随意选取一个简单物品,假定是一个喝水的带广告图案的花纸杯,设计出尽可能多的测试用例;测试项目:杯子需求测试:查看杯子使用说明书界面测试:查看杯子外观功能度:用水杯装水看漏不漏;水能不能被喝到安全性:杯子有没有毒或细菌可性:杯子从不同高度落下的损坏程度可移植性:杯子再不同的地方、温度等环境下是否都可以正常使用兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等易用性:杯子是否烫手、是否有防滑措施、是否方便饮用用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述疲劳测试:将杯子盛上水案例一放24小时检查泄漏时间和情况;盛上汽油案例二放24小时检查泄漏时间和情况等压力测试:用根针并在针上面不断加重量,看压强多大时会穿透跌落测试: 杯子加包装有填充物,在多高的情况摔下不破损震动测试: 杯子加包装有填充物,六面震动,检查产品是否能应对恶劣的铁路\公路\航空运输测试数据:测试数据具体编写此处略;其中应用到:场景法、等价类划分法、因果图法、错误推测法、边界值法等方法期望输出:该期望输出需查阅国标、行标以及使用用户的需求说明书测试: 检查说明书书写准确性六、网络、操作系统、语言知识1请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图答:七层结构从上到下依次是:7 应用层 ;6 表示层 ;5 会话层 ;4 传输层 ;3 网络层 ;2 数据链路层 ;1 物理层五层结构是5 应用层;4 运输层;3 网络层; 2 链路层;1 物理层;2请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用 TCP与UDP呢答:UDP,TCP在传输层,IP在网络层,TCP/IP是英文Transmission Control Protocol/Internet Protocol的缩写,意思是"传输控制协议/网际协议";TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议例如T1和X.25、以太网以及RS-232串行接口之上;确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDPUser Datagram Protocol协议、ICMPInternet Control Message Protocol协议和其他一些协议的协议组;TCP/IP协议并不完全符合OSI的七层参考模型;传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务;该模型的目的是使各种硬件在相同的层次上相互通信;这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层;而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求;这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输SMTP、文件传输协议FTP、网络远程访问协议Telnet等;传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议TCP、用户数据报协议UDP等,TCP和UDP给数据包加入传输数据并把它传输到3请问交换机和路由器分别的实现原理是什么分别在哪个层次上面实现的一般意义上说交换机是工作在数据链路层;但随着科技的发展,现在有了三层交换机,三层交换机已经扩展到了网络层;也就是说:它等于“数据链路层 + 部分网络层”;交换机中传的是帧;通过存储转发来实现的; 路由器是工作在网络层;路由器中传的是IP数据报;主要是选址和路由;4请问C++的类和C里面的STRUCT有什么区别答:除关键字不同外class,struct的唯一区别是,结构在默认情况下的成员是公共public的,而类在默认情况下的成员是私有private的;在C++中,结构是特殊的类;class是从struct发展而来的;之所以将struct和class都保留,是因为:1、提出class是为了强调一种概念;2、保留struct是为了照顾到大多数人的习惯;struct和class是有区别的;struct保证成员按照声明顺序在内存中存储;class不保证等等而它们都可以继承,实现多态等;但也有少许区别;比如:struct A { };class B : A{ }; //private继承struct C : B{ }; //public继承这是由于class默认是private,struct默认是public;一般说来,struct和class可以换用当然要注意一些语法问题;而struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体,对私有成员进行保护,还提供与外界的接口;从习惯上更喜欢用class;5请讲一讲析构函数和虚函数的用法和作用答:置于“~”是析构函数;析构函数因使用"~"符号逻辑非运算符,表示它为腻构造函数,加上类名称来定义;;析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用;有适放内存空间的做用虚函数是C++多态的一种表现例如:子类继承了父类的一个函数方法,而我们把父类的指针指向子类,则必须把父类的该函数方法设为virturl虚函数;使用虚函数,我们可以灵活的进行动态绑定,当然是以一定的开销为代价;如果父类的函数方法根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数方法设为virturl 函数名=0我们把这样的函数方法称为纯虚函数;如果一个类包含了纯虚函数,称此类为抽象类6全局变量和局部变量有什么区别实怎么实现的操作系统和编译器是怎么知道的答:主要的区别是变量的作用范围不同;全局变量在全局范围内都有效,而局部变量只在声明此变量的作用域内有效;全局变量是属于实例的,在初始化对象的时候初始化,生命周期与该实例相同,之所以叫全局变量是因为该实例中的所有方法或属性都可以引用;局部变量是在实例方法内或static块中,生命周期从调用该方法到该方法退出,并且只有该方法能够引用之;全局变量和局部变量的区别是在存储器中位置不同,具体说,全局变量存储在数据段中,局部变量都有可能,一般来说在堆栈段7一些寄存器的题目,主要是寻址和内存管理等一些知识;答:寻址方式表示指令中操作数所在的方法称为寻址方式;8086/8088有七种基本的寻址方式:立即寻找,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址加变址寻址,相对基址加变址寻址;直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址和相对基址加变址寻址,这五种寻址方式属于存储器寻址,用于说明操作数所在存储单元的地址;由于总线接口单元BIU能根据需要自动引用段寄存器得到段值,所以这五种方式也就是确定存放操作数的存储单元有效地址EA的方法;有效地址EA是一个16位的无符号数,在利用这五种方法计算有效地址时,所得的结果认为是一个无符号数;除了这些基本的寻址方式外,还有固定寻址和I/O端口寻址等;内存管理主要包括内存的分配和回收整理等,实现内存的高效利用;Q8:8086是多少位的系统在数据总线上是怎么实现的答:16位系统,8位数据传送,通过总线控制逻辑实现数据线和地址线的分时复用.8086是Inter的16位微处理器有16根数据线和20根地址线,它既能处理16位数据,也能处理8位数据内部数据总线都是按16位设计的,单外部数据总线只有8条七、其他一、谈谈你了解的软件测试流程及工具一般测试流程:1.需求分析阶段:对业务的学习,分析需求点;2.测试计划阶段:测试组长根据SOW开始编写测试计划,其中包括人员,软件硬件资源,测试点,集成顺序,进度安排和风险识别等内容;3.测试设计阶段:测试方案一般由对需求很熟的高资深的测试工程师设计,测试方案要求根据SRS上的每个需求点设计出包括需求点简介,测试思路和详细测试方法三部分的方案;测试方案编写完成后也需要进行评审;4.测试方案阶段:主要是对测试用例和规程的设计;测试用例是根据测试方案来编写的,通过测试方案阶段,测试人员对整个系统需求有了详细的理解;这时开始编写用例才能保证用例的可执行和对需求的覆盖;测试用例需要包括测试项,用例级别,预置条件,操作步骤和预期结果;其中操作步骤和预期结果需要编写详细和明确;测试用例应该覆盖测试方案,而测试方案又覆盖了测试需求点,这样才能保证客户需求不遗漏;同样,测试用例也需要评审;5.测试执行阶段:执行测试用例,及时提交有质量的Bug和测试日报,测试报告等相关文档; 流程:需求分析→测试计划→测试设计→测试环境搭建→测试执行→测试记录→缺陷管理→软件评估→RTM.测试工具:C/S及B/S架构相关的软件产品,那么对不同操作系统,如Windows系列、unix、linux甚至苹果OS等测试环境都是必须的常用的软件测试工具分为:开源测试管理工具:Bugfree、Bugzilla、TestLink、mantis开源功能自动化测试工具:Watir、Selenium、MaxQ、WebInject开源性能自动化测试工具:Jmeter、OpenSTA、DBMonster、TPTEST、Web ApplicationLoadSimulatorTestDirector:企业级测试管理工具,也是业界第一个基于Web的测试管理系统;Quality Center:基于Web的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括指定测试需求、计划测试、执行测试和跟踪缺陷;QuickTest Professional:用于创建功能和回归测试;LoadRunner:预测系统行为和性能的负载测试工具;二、如何发现客户端软件中的内存泄露检测内存泄漏的问题应该尽早进行,它绝不应该是系统测试时的主要目标;也就是说,检查是否存在内存泄漏,应该从编码时就要考虑,单元测试和集成测试时要重点检查;如果前期没有考虑,等到了系统测试才想起检查或者才发现泄漏,为时已晚,此时再去定位泄漏的位置,太难太难了,它可能会让你的交付日期delay不确定的时间; 最近看了一些自动错误预防AEP 的理论,我深受启发;作为测试人员的我们,从“发现错误”转变到“帮助开发人员预防错误”,这将是一个巨大的转变;所以说,下面我的答案中的第一点,我先说如何预防内存泄漏的问题,然后再讲如何发现;1 如何在开发过程中有效预防内存泄漏第一步:遵循“好”的编程规则“好”的编程规则是各位前辈经验和教训的集合,好的编程规则堪称开发者的“圣经”;遵循统一的编程规则,可以让开发新手少走好多弯路,可以让项目整体的质量维持一个起码的“质量底线”;有关内存泄漏方面的规则主要是“内存管理”方面的,举几个简单的,如下×用malloc或new申请内存之后,立即检查指针值是否为NULL防止使用指针值为NULL的内存×动态内存的申请与释放是否配对防止内存泄漏×ma lloc语句是否正确无误例如字节数是否正确类型转换是否正确×是否出现野指针,例如用free或delete释放了内存之后,忘记将指针设置为NULL... ...第二步:积极主动检测“内存泄漏”严格遵循好的编程规则,可以让程序员在代码中尽量少的引入bug,但一旦不小心引入了,怎么办这就要求我们在单元测试和集成测试中严格把关;在这个阶段,单靠程序员或者测试员通过“代码走查”的方式检查内存泄漏,客户的实践和我的经验告诉我,这将是“不切实际”的,无论效率还是时间;如果能够借助于一些专业的工具的话,情况可能就不一样了;如果你的程序是用Visual C++ 6.0开发,那么Numega的BoundsChecker将是你检测“内存泄漏”最好的选择,如果是Visual C++,可以试一下Compuware的DevPartner;如果你的程序基于Unix或者Linux平台,使用C或者C++,可以考虑一下开源的工具valgrind,我的朋友跟我说,它在一定程度上比Rational的Purify更出色;上面的工具都要求程序能够动态运行起来,而且测试用例需要你自己准备;如果你正处于单元测试或集成测试阶段,程序代码量已经足够大,而且还不能够动态运行,要尽早检测代码中的“内存泄漏”问题,该怎么办此时你可以试用一下目前最新的静态分析技术:×它不要求代码能够动态运行×也不需要你来编写测试用例×只需要代码能够正常编译,就可以发现代码只有在执行过程中才出现的错误,当然也包括内存泄漏;这方面的工具有Klocwork的K7,Coverity的SQS,以及C++test中的BugDetective,其中最“物美价廉”的就是c++test的BugDetective;2 如何发现客户端软件的“内存泄漏”如果开发过程中已经按照我上面提到的去做,相信发布后的程序存在“内存泄漏”的可能性几乎为零;如果开发过程已经到了后期,系统测试已经开始做了,还要发现内存泄漏,这个时候我希望你能够拿到源代码;如果有源代码,你还可以考虑1中的第二步,借助于专业的工具协助,虽然可能效果不一定特别理想,但总比下面我提到的方法更好一些;当然作为测试人员,我当然也理解事情总没有想像那么完美;我们通常会碰到“需要在系统测试阶段检测是否有内存泄漏,而且没有源代码”的难题;我曾经也遇到过;记得那还是2002年的事情了;当时我承接的项目是一个电力行业的自动化系统,分为server 端和client端,典型的c/s模式,老板要求在测试功能的同时顺便检查内存泄漏的问题,因为这个client端在客户那里可能是长时间不间断运行的,虽然客户很少操作;我当时很为难,因为没有源代码,我甚至无法做“代码走查”;在做功能测试的同时,我一直在琢磨...... 采用什么手段呢最后,借助于WinRunner,我出色的完成了任务,起码我的老板相信我的测试是可信的;我的方法是这样的;×首先咨询开发方,了解到关于内存操作频繁的功能点和模块×从我的功能测试用例中挑选出和这些功能点和模块相关的测试用例×找到一个“纯净”的机器,上面除了操作系统和被测的client端外,没有任何其他应用,这样做是为了排除其他应用可能存在的干扰;×借助于WinRunner,自动化这些用例,形成自动化的脚本;在脚本的最后,添加“切换到Windows任务管理器”“记录该client进程所占用内存数据到文件”的操作脚本;×连续运行N个小时×最后我打开这个数据文件,可以发现在该客户端运行过程中,每次执行完特定的测试用例后,记录的内存占用数据;当时我得出的结论是该client程序有“少许”的内存泄漏,因为在连续运行了72小时后,内存使用增加了近百分之十几;我会把这些数据导入到EXCEL中绘成了一个图表,这样更直观一些;经过简单的计算内存的增量/用例循环次数,得到用例每次执行后增加的内存使用值,即泄漏的内存数量,然后把操作过程和这个结果一起交给开发方,最后开发方根据我的信息,真的找到了一处有内存泄漏的地方,虽然泄漏的数量很少;以上就是我有过的一个类似的经历,我觉得可以提供给大家参考,同时也可以“举一反三,融会贯通”;如B/S的客户端控件,可以用QTP协助完成;在测试的最后阶段要去发现甚至定位内存泄漏挺难的,但只要发挥我们测试人员的主观能动性,总是找到一些“旁门左道”的测试手段;最后,我个人认为,从时间成本和各种风险考虑,要避免内存泄漏的问题,还是要回到前期的预防,即编程过程的规则检查和单元测试阶段主动的检测;一家之言,欢迎讨论;。

相关文档
最新文档