《《软件测试题》word版.docx》由会员分享,可在线阅读,更多相关《《软件测试题》word版.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程师不可不知的10个概念出色的软件工程师善用设计模式,勤于代码重构,编写单元测试,并对简单有宗教般的追求。除了这些,优秀的软件工程师还要通晓10个概念,这10个概念超越了编程语言与设计模式,软件工程师应当从更广的范围内明白这些道理。关系数据库 (Relational Databases)关系数据库因为在大规模 Web 服务上缺乏可扩充性而颇受微词,然而,关系数据库仍然是近20年来计算机技术中最伟大的成就。关系数据库对处理订单,公司数据方面有着出色的表现。关系数据库的核心是以记录表示数据,记录存放在数据库表,数据库使用查询语言(SQL)对数据进行搜索与查询,同时,数据库对各个数据表进行关联
2、。数据库的标准化技术(normalization)讲的是使用正确的方式对数据进行分存以降低冗余,并加快存取速度。安全 (Security)随着黑客的崛起与数据敏感性的上升,安全变得非常重要。安全是个广义的概念,涉及验证,授权与信息传输。验证是对用户的身份进行检查,如要求用户输入密码。验证通常需要结合 SSL (secure socket layer)进行;授权在公司业务系统中非常重要,尤其是一些工作流系统。最近开发的 OAuth 协议可以帮助 Web 服务将相应信息向相应用户开放。Flickr 便使用这种方式管理私人照片和数据的访问权限。另外一个安全领域是网络设防,这关系到操作系统,配置与监控
3、。不仅网络危险重重,任何软件都是。Firefox 被称为最安全的浏览器,仍然需要频频发布安全补丁。要为你的系统编写安全代码就需要明白各种潜在的问题。云计算 (Cloud Computing)RWW 最近的关于云计算的文章 Reaching For The Sky Through Compute Clouds 讲到了云计算如何改变大规模 Web 应用的发布。大规模的并行,低成本,与快速投入市场。并行算法发明以来,首先迎来的是网格计算,网格计算是借助空闲的桌面计算机资源进行并行计算。最著名的例子是 Berkley 大学的 SETIhome 计划,该计划使用空闲的 CPU 资源分析太空数据。金融机构
4、也大规模实施网格计算进行风险分析。空闲的资源,加上 J2EE 平台的崛起,迎来了云计算的概念:应用服务虚拟化。就是应用按需运行,并可以随着时间和用户规模而实时改变。云计算最生动的例子是 Amazon 的 Web 服务,一组可以通过 API 进行调用的应用,如云服务(EC2),一个用来存储大型媒体文件的数据库(S3),索引服务(SimpleDB),序列服务(SQS)。并发 (Concurrency)并发是软件工程师最容易犯错的地方,这可以理解,因为我们一直遵从线形思维,然而并发在现代系统中非常重要。并发是程序中的并行处理,多数现代编程语言包含内置的并发能力,在 Java,指的是线程。关于并发,最
5、经典的例子是“生产/消费”模式,生产方生产数据和任务,并放入工作线程消费或执行。并发的复杂性在于,线程需要经常访问共同数据,每个线程都有自己的执行顺序,但需要访问共同数据。Doug Lea 曾写过一个最复杂的并发类,现在是 core Java 的一部分。缓存(Caching)缓存对现代 Web 程序不可或缺,缓存是从数据库取回,并存放在内存中的数据。因为数据库直接存取的代价非常高,将数据从数据库取回并放在缓存中访问就变得十分必要。比如,你有一个网站,要显示上周的畅销书,你可以从数据将畅销书榜一次性取回放在缓存中,而不必在每次访问时都去数据库读数据。缓存需要代价,只有最常用的内容才可以放入缓存。
6、很多现代程序,包括 Facebook,依靠一种叫做 Memcached 的分布式缓存系统,该系统是 Brad Firzpatrick 在工作于 LiveJournal 项目时开发的,Memcached 使用网络中空闲的内存资源建立缓存机制,Memcached 类库在很多流行编程语言,包括 Java 和 PHP 中都有。散列法(Hashing)Hashing 的目的是加速访问速度。如果数据是序列存储的,从中查询一个项的时间取决于数据列的大小。而散列法对每一个项计算一个数字作为索引,在一个好的 Hashing 算法下,数据查找的速度是一样的。除了存储数据,散列法对分布式系统也很重要。统一散列法(u
7、niform hash )用来在云数据库环境下,在不同计算机之间分存数据。Google 的索引服务就是这种方法的体现,每一个 URL 都被散列分布到特定计算机。散列函数非常复杂,但现代类库中都有现成的类,重要的是,如何对散列法进行细调以获得最好的性能。算法的复杂性 (Algorithmic Complexity)关于算法的复杂性,软件工程师需要理解这样几件事。第一,大O标记法(big O notation);第二,你永远都不应该使用嵌套式循环(循环里面套循环),你应该使用 Hash 表,数组或单一循环;第三,如今优秀类库比比皆是,我们不必过分纠缠于这些库的效能的差别,我们以后还有机会进行细调;
8、最后,不要忽视算法的优雅及性能,编写紧凑的,可读的代码可以让你的算法更简单,更干净。分层 (Layering)用分层来讨论软件架构是最容易的。John Lakos 曾出版过一本关于大型 C+ 系统的书。Lakos 认为软件包含了层,书中介绍了层的概念,方法是,对每个软件组件,数一下它所依赖的组件数目就可以知道它的复杂程度。Lakos 认为,一个好的软件拥有金字塔结构,就是说,软件组件拥有层层积累的复杂度,但每个组件本身必须简单,一个优秀的软件包含很多小的,可重复使用的模块,每个模块有自己的职责。一个好的系统中,组件之间的依赖性不可交叉,整个系统是各种各样的组件堆积起来,形成一个金字塔。Lako
9、s 在软件工程的很多方面都是先驱,最著名的是 Refactoring (代码重构)。代码重构指的是,在编程过程中需要不断地对代码进行改造以保证其结构的健壮与灵活。惯例与模板 (Conventions and Templates)命名惯例和基础模板在编程模式中常被忽视,然而它可能是最强大的方法。命名惯例使软件自动化成为可能,如,Java Beans 框架在 getter 和 setter 方法中,使用简单的命名惯例。del.icio.us 网站的 URL 命名也使用统一的格式,如 会将用户带到所有标签为 software 的页。很多社会网络均使用简单命名,如,你的名字是 johnsmith ,那
10、你的头像可能命名为 johnsmith.jpg,而你的 rss 聚合文件的命名很可能是 johnsmith.xml 。命名惯例还用于单元测试,如,JUnit 单元测试工具会辨认所有以 test 开头的类。我们这里说的模板(templates )指的并不是 C+ 或 Java 语言中的 constructs,我们说的是一些包含变量的模板文件,用户可以替换变量并输出最终结果。Cold Fusion 是最先使用模板的程序之一,后来,Java 使用 JSP 实现模板功能。Apache 近来为 Java 开发了非常好用的通用模板, Velocity。PHP 本身就是基于模板的,因为它支持 eval 函数
11、。界面(Interfaces)软件工程中最重要的概念是界面。任何软件都是一个真实系统的模型。如何使用简单的用户界面进行模型化至关重要。很多软件系统走这样的极端,缺乏抽象的冗长代码,或者过分设计而导致无谓的复杂。在众多软件工程书籍中,Robert Martin 写的敏捷编程值得一读。关于模型化,以下方法对你会有帮助。首先,去掉那些只有在将来才可能用得着的方法,代码越精练越好。第二,不要总认为以前的东西是对的,要善于改变。第三,要有耐心并享受过程。软件测试工程师笔试试题以及答案测试人员_考试试卷(考试时间100分钟,满分100分) 姓名:_部门:_员工号:_ 一、判断题(每题1分,12 分,正确的
12、,错误的) 1软件测试的目的是尽可能多的找出软件的缺陷。() 2Beta 测试是验收测试的一种。() 3验收测试是由最终用户来实施的。() 4项目立项前测试人员不需要提交任何工件。() 5单元测试能发现约80%的软件缺陷。() 6代码评审是检查源代码是否达到模块设计的要求。() 7自底向上集成需要测试员编写驱动程序。() 8负载测试是验证要检验的系统的能力最高能达到什么程度。() 9测试人员要坚持原则,缺陷未修复完坚决不予通过。() 10代码评审员一般由测试员担任。() 11我们可以人为的使得软件不存在配置问题。() 12集成测试计划在需求分析阶段末提交。() 二、不定项选择题(每题2 分,1
13、0分) 1软件验收测试的合格通过准则是:() A 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。 B 所有测试项没有残余一级、二级和三级错误。 C 立项审批表、需求分析文档、设计文档和编码实现一致。 D 验收测试工件齐全。 2软件测试计划评审会需要哪些人员参加?() A项目经理 BSQA 负责人 C配置负责人 D测试组 3下列关于alpha 测试的描述中正确的是:() Aalpha 测试需要用户代表参加 Balpha 测试不需要用户代表参加 Calpha 测试是系统测试的一种 Dalpha 测试是验收测试的一种 4测试设计员的职责有:() A制定测试计划 B设计测试用例
14、C设计测试过程、脚本 D评估测试活动 5软件实施活动的进入准则是:() A需求工件已经被基线化 B详细设计工件已经被基线化 C构架工件已经被基线化 D项目阶段成果已经被基线化 三、填空题(每空1分,24 分) 1软件验收测试包括、三种类型。 2系统测试的策略有功能测试、易用性测 试、 、等15 种方法。 3设计系统测试计划需要参考的项目文档有、和迭代计划。 4对面向过程的系统采用的集成策略有、两种。 5通过画因果图来写测试用例的步骤为、及把因果图转 换为状态图共五个步骤。 四、简答题(共37分) 1 阶段评审与同行评审的区别。(4 分) 2 什么是软件测试。(3 分) 3 简述集成测试的过程。
15、(5 分) 4 怎样做好文档测试?(4 分) 5 白盒测试有那几种方法?(6 分) 6 系统测试计划是否需要同行评审,为什么?(4 分) 7 Alpha 测试与beta 测试的区别。(4 分) 8 比较负载测试、容量测试和强度测试的区别。(6 分) 9 测试结束的标准是什么?(3 分) 五、 设计题(共15分) 对下面给出的程序控制图,分别以各种不同的测试方法写出最少的测试用例。 测试人员_考试试卷(考试时间100分钟,满分100分) 姓名:_部门:_员工号:_ 一、填空题:(每一空格2分,共60分) 1、 软件实施活动的输出工件有 、 、 、 。 2、 代码评审主要做 工作。 3、 软件实施
16、活动中集成员的职责是 。 4、 验证与确认软件实施活动主要有 、代码评审、 、 、 、SQA 验证。 5、 表明测试已经结束。 6、 软件测试的目的是 。 7、 软件测试主要分为 、 、 、 四类测试。 8、 软件测试活动有制定测试计划、 、 、 、 、 、测 试评估、测试结束八个步骤。 9、 软件测试活动的输出工件有_ 、 、 、 、 。10、软件测试角色有 、 、 、 。 二、不定项选择题:(每题3 分,共15分) 1、 软件实施活动的进入准则是() A、 需求工件已经被基线化 B、 详细设计工件已经被基线化 C、 构架工件已经被基线化 D、 项目阶段成果已经被基线化 2、 下面角色不属于
17、集成计划评审的是() A、 配置经理 B、 项目经理 C、 测试员 D、 编码员 3、软件测试设计活动主要有() A、 工作量分析 B、 确定并说明测试用例 C、 确立并结构化测试过程 D、 复审并评估测试覆盖 4、不属于集成测试步骤的是() A、 制定集成计划 B、 执行集成测试 C、 记录集成测试结果 D、 回归测试 5、属于软件测试活动的输入工件的是() A、 软件工作版本 B、 可测试性报告 C、 软件需求工件 D、 软件项目计划 三、问答题:(共25 分) 1、 项目的集中管理在软件公司的哪一个层面?(2 分) 2、 请描述软件测试活动的生命周期。(8 分) 3、 什么是测试评估,测
18、试评估的范围是什么?(5 分) 4、 阐述工作版本的定义。(2 分) 5 、 请画出软件测试活动的流程图。(8 分) 测试人员考试试卷(考试时间90分钟,满分100分) 姓名:_部门:_员工号:_ 一、 判断题(每题2分,正确的“”,错误的“”) 1 、 好的测试员不懈追求完美。( ) 2、 测试程序仅仅按预期方式运行就行了。( ) 3、 不存在质量很高但可靠性很差的产品。( ) 4、 软件测试员可以对产品说明书进行白盒测试。( ) 5、 静态白盒测试可以找出遗漏之处和问题。( ) 6、 总是首先设计白盒测试用例。( ) 7、 可以发布具有配置缺陷的软件产品。( ) 8、 所有软件必须进行某种
19、程度的兼容性测试。( ) 9、 所有软件都有一个用户界面,因此必须测试易用性。( ) 10、 测试组负责软件质量。( ) 二、 简答题 1、 软件的缺陷等级应如何划分?(3 分) 2、 如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么?(5 分) 3、 你认为一个优秀的测试工程师应该具备哪些素质?(3 分) 4、 产品测试到什么时候就算是足够了?(2 分) 5、 测试计划的目的是什么?(2 分) 6、 为什么要进行软件测试?软件测试的目的是什么? (5 分) 7、 软件测试应该划分几个阶段?简述各个阶段应重点测试的点?各个阶段的含义?(5 分) 8、 如何做一名合格的测试人员?(3 分
20、) 9、 针对缺陷采取怎样的管理措施?(5 分) 三、 专业词语解释(每题2 分) 测试: 测试: 驱动模块: 桩模块: 白盒测试: 静态测试: 四、 选择题(每题2分) 1.下面哪些属于动态分析( ) A 代码覆盖率 B 模块功能检查 C 系统压力测试 D 程序数据流分析 2.下面哪些属于静态分析( ) A、 代码规则检查 B、 序结构分析 C、 序复杂度分析 D、 内存泄漏 五、 设计题(10分) 在三角形计算中,要求三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示错误,可构成三角 形时计算三角形周长。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角形”。画出
21、程 序流程图、控制流程图、找出基本测试路径 ,对此设计一个测试用例。 六、 论述题 1、 试叙述对一个软件项目测试的全过程。(10 分) 2、 简述你对测试工作的认识过程、在以后的工作的一些建议。(6 分) 3 、 述静态测试和动态测试的区别?(5 分)答案:1 什么是软件测试,以及软件测试的意义? 2 什么是软件测试静态分析,软件测试动态分析, 3 下面那些属于静态分析() A、 编码规则检查 B、 程序结构分析 C、 程序复杂度分析 D、 内存泄漏 4 下面那些属于动态分析() A、 代码覆盖率 B、 模块功能检查 C、 系统压力测试 D、 程序数据流分析 5 从测试技术角度,正确的选择是
22、(),给出各自的含义? A、 静态测试 B、 黑盒测试 C、 动态测试 D、 白盒测试 6 从测试阶段角度,测试正确的顺序是(),同时给出所选择的正确策略含义和被测对象是什么? A、 单元测试 B、 集成测试 C、 系统测试 D、 确认测试 7 针对缺陷采取怎样的管理措施? 8 在测试生命周期,测试过程分为几个阶段,以及各个阶段的含义? 9 简要写出自己在理解的基础质上所认为引入测试管理的意义 10 在三角形计算中,要求三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示错误, 可构成三角形时计算三角形周长。若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等 边三角形”。画出
23、程序流程图、控制流程图、计算圈复杂度V(g),找出基本测试路径软件测试笔试题判断题1软件测试的目的是尽可能多的找出软件的缺陷。(Y)2Beta 测试是验收测试的一种。(Y)3验收测试是由最终用户来实施的。(N)4项目立项前测试人员不需要提交任何工件。(Y)5单元测试能发现约80%的软件缺陷。(Y)6代码评审是检查源代码是否达到模块设计的要求。(N)7自底向上集成需要测试员编写驱动程序。(Y)8负载测试是验证要检验的系统的能力最高能达到什么程度。(N)9测试人员要坚持原则,缺陷未修复完坚决不予通过。(N)10代码评审员一般由测试员担任。(N)11我们可以人为的使得软件不存在配置问题。(N)12集
24、成测试计划在需求分析阶段末提交。(N)二、选折1软件验收测试的合格通过准则是:(ABCD)A 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。B 所有测试项没有残余一级、二级和三级错误。C 立项审批表、需求分析文档、设计文档和编码实现一致。D 验收测试工件齐全。2软件测试计划评审会需要哪些人员参加?(ABCD)A项目经理BSQA 负责人C配置负责人D测试组3下列关于alpha 测试的描述中正确的是:(AD)Aalpha 测试需要用户代表参加Balpha 测试不需要用户代表参加Calpha 测试是系统测试的一种Dalpha 测试是验收测试的一种4测试设计员的职责有:(BC)A
25、制定测试计划B设计测试用例C设计测试过程、脚本D评估测试活动5软件实施活动的进入准则是:(ABC)A需求工件已经被基线化B详细设计工件已经被基线化C构架工件已经被基线化D项目阶段成果已经被基线化三、填空1.软件验收测试包括:正式验收测试,alpha测试,beta测试。2.系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,(有的可以合在一起,分开写只要写出15就满分哦)3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划。
26、4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。5.(这题出的有问题哦,详细的5步骤为)通过画因果图来写测试用例的步骤为:(1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系? 根据这些关系,画出因果图。(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。(4)把因果图转换成判定表。(5)把判定表的每一列拿出来作为依据,设计测
27、试用例。四、简答(资料是搜集整理的,感谢前辈的解题)无1.区别阶段评审的与同行评审同行评审目的:发现小规模工作产品的错误,只要是找错误;阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格同行评审内容:内容小 一般文档 40页, 代码 500行阶段评审内容: 内容多,主要看重点同行评审时间:一小部分工作产品完成阶段评审时间: 通常是设置在关键路径的时间点上!2.什么是软件测试为了发现程序中的错误而执行程序的过程3简述集成测试的过程系统集成测试主要包括以下过程:1.
28、 构建的确认过程。2. 补丁的确认过程。3. 系统集成测试测试组提交过程。4. 测试用例设计过程。5. 测试代码编写过程。6. Bug的报告过程。7. 每周/每两周的构建过程。8. 点对点的测试过程。9. 组内培训过程。4 怎么做好文档测试仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。P142检查文档的编写是否满足文档编写的目的内容是否齐全,正确内容是否完善标记是否正确5 白盒测试有几种方法总体上分为静态方法和动态方法两大类。静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。6系统测试计划是否需要同
29、行审批,为什么需要,系统测试计划属于项目阶段性关键文档,因此需要评审。7Alpha测试与beta的区别Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。8比较负载测试,容量测试和强度测试的区别负载测试:在一定的工作负荷下,系统的负荷及响应时间。强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。容量测试:容量测试目的是通
30、过测试预先分 析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。9测试结束的标准是什么?用例全部测试。覆盖率达到标准。缺陷率达到标准。其他指标达到质量标准10描述软件测试活动的生命周期?测试周期分为计划、设计、实现、执行、总结。其中:计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安
31、排人力物力资源,安排进度等;设计:完成测试方案,从技术层面上对测试进行规划;实现:进行测试用例和测试规程设计;执行:根据前期完成的计划、方案、用例、规程等文档,执行测试用例。总结:记录测试结果,进行测试分析,完成测试报告。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可输入区域和只读区域没有明显的区分标志