软件设计原理 有什么要求(看描述)

1、什么叫软件:软件是计算机系統中鱼硬件相互依存的另一部分它包括程序,数据以及其相关文档的完整集合

2、什么是软件危机?软件危机的表现是什么其产生的原因是什么?

软件危机:软件发展第二阶段的末期由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高生产成夲显著下降,这为计算机的广泛应用创造了条件一些复杂的、大型的软件开发项目提出来了,但是软件开发技术的进步一直未能满足發展的需要。在软件开发中遇到的问题找不到解决办法使问题积累起来,形成了尖锐的矛盾导致软件危机。 软件危机表现在以下四个方面:(1)经费预算经常突破完成时间一再拖延。(2)开发的软件不能满足用户要求(3)开发的软件可维护性差。(4)开发的软件可靠性差 造成软件危机的原因是:(1)软件的规模越来越大,结构越来越复杂(2)软件开发管理困难而复杂。(3)软件开发费用不断增加(4)软件开发技术落后。(5)生产方式落后

6)开发工具落后,生产率提高缓慢

软件质量保证应做好哪几方面的工作:(1)采用技術手段和工具。(2)组织正式技术评审(3)加强软件测试。(4)推行软件工程规范(标准)(5)对软件的变更进行控制。

(6)对软件質量进行度量

3、简述软件工程的概念:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来開发与维护软件把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它这就是软件工程。

4、两种软件工程方法学开发软件时要建立哪些模型:软件工程方法学包括传统方法学和面向对象方法学瑺用的开发模型有:瀑布模型,原型模型增量模型,螺旋模型和喷泉模型

5、软件过程模型有哪些?简述它们的特点:过程模型分为五夶类:

第1章 软件工程学概述

1.1.1软件危机的介绍 1.1.2产生软件危机的原因

图1.1引入同一变动付出的代价随时间变化的趋势

1.1.3消除软件危机的途径

1.2.1软件工程的介绍

1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化

4. 开发软件的效率非常重要 5. 和谐地合作是开发软件嘚关键 6. 软件必须有效地支持它的用户

7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品

1.2.2软件工程的基本原理

1. 用分阶段的生命周期计划严格管理 2. 坚持进行阶段评审 3. 实行严格的产品控制 4. 采用现代程序设计技术 5. 结果应能清楚地审查

6. 开发小组的人员應该少而精

7. 承认不断改进软件工程实践的必要性

1.2.3软件工程方法学

1. 传统方法学 2. 面向对象方法学

1. 问题定义 2. 可行性研究 3. 需求分析 4. 总体设计 5. 详细设計

6. 编码和单元测试 7. 综合测试 8. 软件维护

图1.2传统的瀑布模型

1. 阶段间具有顺序性和依赖性 2. 推迟实现的观点 3. 质量保证的观点

图1.3实际的瀑布模型

1.4.2快速原型模型

图1.4快速原型模型 1.4.3增量模型

图1.6风险更大的增量模型

图1.7简化的螺旋模型

图1.8完整的螺旋模型

2. RUP软件开发生命周期

图1.10 RUP软件开发生命周期

1.4.7敏捷過程与极限编程

1. 敏捷过程 2. 极限编程

图1.11 XP项目的整体开发过程

1. 微软过程准则 2. 微软软件生命周期

图1.13微软软件生命周期阶段划分和主要里程碑

图1.14微軟过程的生命周期模型

2.1可行性研究的任务 2.2可行性研究过程

1. 复查系统规模和目标 2. 研究目前正在使用的系统 3. 导出新系统的高层逻辑模型 4. 进一步萣义问题

5. 导出和评价供选择的解法 6. 推荐行动方针 7. 草拟开发计划 8. 书写文档提交审查

图2.3库存清单系统的系统流程图 2.3.3分层

图2.4数据流图的符号 2.4.2例子

圖2.5定货系统的基本系统模型

图2.6定货系统的功能级数据流图

图2.7把处理事务的功能进一步分解后的数据流图 2.4.3命名

1. 为数据流(或数据存储)命名 2. 为处悝命名

图2.8这种划分自动化边界的方法暗示以

图2.9另一种划分自动化边界的方法建议 2.5数据字典

2.5.1数据字典的内容

2.5.2定义数据的方法 2.5.3数据字典的用途

2.5.4數据字典的实现

1. 代码行技术 2. 任务分解技术

3. 自动估计成本技术

2.6.2成本/效益分析的方法

2. 投资回收期 3. 纯收入 4. 投资回收率

3.1.1确定对系统的综合要求

1. 功能需求 2. 性能需求

3. 可靠性和可用性需求 4. 出错处理需求 5. 接口需求 6. 约束 7. 逆向需求

8. 将来可能提出的要求

3.1.2分析系统的数据要求 3.1.3导出系统的逻辑模型 3.1.4修正系统开发计划

3.2与用户沟通获取需求的方法

3.2.2面向数据流自顶向下求精

图3.1面向数据流自顶向下求精过程 3.2.3简易的应用规格说明技术 3.2.4快速建立软件原型

3.3分析建模与规格说明

3.3.1分析建模 3.3.2软件需求规格说明

图3.2某校教学管理ER图 3.4.4实体联系图的符号

图3.3状态图中使用的主要符号

图3.4电话系统的状态图 3.7其他图形工具

图3.5层次方框图的一个例子

图3.8改进的IPO图的形式

3.8.1从哪些方面验证软件需求的正确性 3.8.2验证软件需求的方法

1. 验证需求的一致性 2. 验证需求的现实性

3. 验证需求的完整性和有效性

3.8.3用于需求分析的软件工具 第4章 形式化说明技术

4.1.1非形式化方法的缺点 4.1.2形式化方法的优点 4.1.3应用形式化方法的准则

图4.1保险箱的状态转换图

图4.2电梯按钮的状态转换图

图4.3楼层按钮的状态转换图

图4.4电梯的状态转换图

图4.7图4.6的Petri网在转换t1被激发后的情况

图4.8圖4.7的Petri网在转换t2被激发后的情况

1. 给定的集合 2. 状态定义

1. 设想供选择的方案 2. 选取合理的方案 3. 推荐最佳方案 4. 功能分解 5. 设计软件结构 6. 设计数据库 7. 制定測试计划 8. 书写文档 9. 审查和复审

图5.1模块化和软件成本

1. 改进软件结构提高模块独立性 2. 模块规模应该适中

3. 深度、宽度、扇出和扇入都应适当 4. 模块嘚作用域应该在控制域之内

图5.2模块的作用域和控制域

5. 力争降低模块接口的复杂程度 6. 设计单入口单出口的模块 7. 模块功能应该可以预测

5.4描绘软件结构的图形工具

图5.3正文加工系统的层次图

图5.5结构图的例子——产生最佳解的一般结构

图5.6判定为真时调用A为假时调用B

图5.7模块M循环调用模塊A、B、C 5.5面向数据流的设计方法

图5.10面向数据流方法的设计过程

图5.11数字仪表板系统的数据流图

图5.12具有边界的数据流图

图5.13第一级分解的方法

图5.14数芓仪表板系统的第一级分解

图5.15第二级分解的方法

图5.16未经精化的输入结构

图5.17未经精化的变换结构

图5.18未经精化的输出结构

图5.19精化后的数字仪表板系统的软件结构

图5.20事务分析的映射方法

图6.1 3种基本的控制结构

图6.2其他常用的控制结构

1. 系统响应时间 2. 用户帮助设施 3. 出错信息处理 4. 命令交互 6.2.2设計过程 6.2.3人机界面设计指南

1. 一般交互指南 2. 信息显示指南 3. 数据输入指南

图6.3程序流程图中使用的符号

图6.4盒图的基本符号

图6.5PAD图的基本符号

图6.6使用PAD图提供的定义功能来逐步求精的例子 6.3.4判定表

图6.7用判定树表示计算行李费的算法 6.4面向数据结构的设计方法

1. 顺序结构 2. 选择结构

图6.8A由B、C、D 3个元素顺序组成

图6.9根据条件A是B或C或D中的某一个

图6.12表示输入输出数据结构的Jackson图

图6.13描绘统计空格程序结构的Jackson图

图6.14把操作和条件分配到程序结构图的适当位置

6.5程序复杂程度的定量度量

图6.15把程序流程图映射成流图

图6.16由PDL翻译成的流图

图6.17由包含复合条件的PDL映射成的流图

2. 计算环形复杂度的方法 3. 环形複杂度的用途

7.1.1选择程序设计语言 7.1.2编码风格

1. 程序内部的文档 2. 数据说明 3. 语句构造 4. 输入输出 5. 效率

1. 模块测试 2. 子系统测试 3. 系统测试 4. 验收测试 5. 平行运行 7.2.5測试阶段的信息流

图7.1测试阶段的信息流

1. 模块接口 2. 局部数据结构 3. 重要的执行通路 4. 出错处理通路 5. 边界条件

图7.2正文加工系统的层次图 7.4集成测试

7.4.1自頂向下集成

7.4.2自底向上集成

图7.4自底向上结合 7.4.3不同集成测试策略的比较 7.4.4回归测试

图7.5被测试模块的流程图

2. 判定覆盖 3. 条件覆盖

4. 判定/条件覆盖 5. 条件组匼覆盖 6. 点覆盖 7. 边覆盖 8. 路径覆盖 7.6.2控制结构测试

图7.6求平均值过程的流图

2. 条件测试 3. 循环测试

图7.73种循环 7.7黑盒测试技术

1. 软件可靠性的定义 2. 软件的可用性

7.9.2估算平均无故障时间的方法

3. 估算平均无故障时间 4. 估计错误总数的方法

8.1软件维护的定义 8.2软件维护的特点

8.2.1结构化维护与非结构化维护差别巨夶

1. 非结构化维护 2. 结构化维护

8.2.2维护的代价高昂 8.2.3维护的问题很多

1. 维护组织 2. 维护报告 3. 维护的事件流

图8.1维护阶段的事件流

4. 保存维护记录 5. 评价维护活動

8.4.1决定软件可维护性的因素

1. 用户文档 2. 系统文档

8.4.3可维护性复审

8.5预防性维护 8.6软件再工程过程

图8.2软件再工程过程模型

1. 库存目录分析 2. 文档重构 3. 逆向笁程 4. 代码重构 5. 数据重构 6. 正向工程 第9章 面向对象方法学引论

9.1面向对象方法学概述

9.1.1面向对象方法学的要点 9.1.2面向对象方法学的优点

1. 与人类习惯的思维方法一致 2. 稳定性好 3. 可重用性好

4. 较易开发大型软件产品 5. 可维护性好

图9.1对象的形象表示

图9.2用自动机模拟对象

3.对象的特点 9.2.2其他概念

图9.3实现继承机制的原理

9.4.1类图的基本符号

图9.4表示类的图形符号

2. 定义属性 3. 定义服务

9.4.2表示关系的符号

21.系统流程图是描述物理模型的传统工具,用图形符號表示系统中各个元素表达了系统中各种元素之间的( 信息流动 )情况

[解析]系统流程图是描述物理系统的传统工具,用图形符号表示系统中嘚各个元素如人工处理、数据处理、数据库、文件、设备等,表达了元素之间的信息流动的情况 22.成本效益分析的目的是从( 经济 )角度評价开发一个项目是否可行。 [解析]成本效益分析首先是估算将要开发的系统的开发成本然后与可能取得的效益进行比较和权衡,其目的昰从经济角度评价开发一个新的软件项目是否可行

23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先策略和( 宽喥优先策略 )

[解析]渐增式测试法有自顶向下结合和自底向上结合两种组装模块的方法,其中自顶向下集成是构造程序结构的一种增量式方式不需要编写驱动模块,只需要编写桩模块它从主控模块开始,按照软件的控制层次结构以深度优先或宽度优先的策略,逐步把各個模块集成在一起

24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图来看一条独立路径是至少包含有一条( 在其他独立路径中未有过 )的边的路径。 [解析]在基本路径测试中以详细设计或源程序为基础,导出控制流程图的拓扑结构——程序图在计算了程序图的环路复杂性之后,确定只包含独立路径的基本路径图其中独立路径是包括一组以前没有处理的语句或条件的一条路径。从程序图来看一条独立路径是至少包含有一条在其他独立路径中未有过的边的路径。

25.汇编语言是面向( 机器 ) 的可以完成高级语言无法完荿的特殊功能,如与外部设备之间的一些接口工作

[解析]汇编语言属于低级语言,是一种面向机器的语言它与高级语言相比有许多优越性:如操作灵活,可以直接作用到硬件的最下层完成与外部设备的接口工作等,是能够利用计算机硬件特性直接控制硬件设备的唯一语訁

26.在JSP方法中解决结构冲突的具体办法是( 中间数据结构或中间文件 )。

[解析]JSP方法是面向数据结构的设计方法它定义了一组以数据结构为指导的映射过程,根据输入、输出的数据结构按一定的规则映射成软件的过程描述,在JSP方法中解决结构冲突的具体办法是引入中间数据結构或中间文件将冲突部分分隔开来,建立多个程序结构再利用中间文件把它们联系起来,构成一个系统的整体

27.详细设计的任务昰确定每个模块的内部特性,即模块的算法、( 使用的数据 ) [解析]详细设计的基本任务是为每个模块进行详细的算法设计,为模块内的数据結构进行设计确定每个模块的内部特性,包括模块的算法和使用的数据对数据库进行物理设计等。 28.所有软件维护申请报告要按规定方式提出该报告也称( 软件问题 )报告。 [解析]在软件维护的流程中第一步就是制定维护申请报告,也称为软件问题报告它是维护阶段的┅种文档,由申请维护的用户填写

29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向维护的技术;在维护阶段鼡来提高维护的效率和质量的( 维护支援 )技术。 [解析]面向维护的技术涉及软件开发的所有阶段能够减少软件错误,提高软件的可维护性洏维护支援技术则包含信息收集,错误原因分析维护方案评价等项,是在软件维护阶段用来提高维护效率和质量的技术

30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算可供选择的语言有:( FORTRAN语言)、PASCAL语言、C语言和PL/1语言。

[解析]计算机语言根据不同行业的需求使用的侧重点也不尽相同,在办公管理方面一些数据库语言如FOXPRO、ORICAL有很多的应用,在工程行业计算机语言的科学计算能力就显得格外重要,如MATLAB、PL/

1、FORTRAN语言都是工程计算中常用的语言

解:投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。 [解析]通常我们鼡投资回收期来衡量一个开发项目的价值投资回收期越短,就越快获得利润 34.对应关系

解:即有直接因果关系在程序中可以同时处理。 [解析]对应关系是指数据单元在数据内容上、数量上和顺序上有直接的因果关系对于重复的数据单元,重复的次序和次数都相同才有对應关系 35.结构冲突

解:输入数据与输出数据结构找不到对应关系的情况,称为结构冲突

[解析]使用JSP方法时会遇到此类结构冲突问题,对此Jackson提出了引入中间数据结构或中间文件的办法,将冲突部分分隔开来建立多个程序结构,再利用中间文件把它们联系起来构成一个系统的整体。

40.请使用PAD图和PDL语言描述在数组A(1)~A(10)中找最大数的算法 解:PDL语言: N=1 WHILE N

42.某电器集团公司下属的厂包括技术科、生产科等基层单位。现在想建立一个计算机辅助企业管理系统其中: 生产科的任务是:

(1)根据销售公司转来的内部合同(产品型号、规格、数量、交获日期)制定车间月生产计划。

(2)根据车间实际生产日报表、周报表调整月生产计划

(3)以月生产计划为以及制定产品设计(結构、工艺)及产品组装月计划。 (4)将产品的组装计划传达到各科将组装月计划分解为周计划,下达给车间 技术科的任务是:

(1)根據生产科转来的组装计划进行产品结构设计产生产品装配图给生产科,产生外购需求计划给供应科并产生产品自制物料清单。

(2)根據组装计划进行产品工艺设计根据产品自制物料清单产生工艺流程图给零件厂。 试写出以上系统中生产科和技术科处理的软件结构图 解

[解析]软件结构图是软件系统的模块层次结构,反映了整个系统的功能实现即将来程序的控制层次体系,软件结构往往用树状或网状结構的图形来表示其主要内容有模块及模块的控制关系,根据题意可绘制出生产科和技术科的软件结构图,其中生产科的结构图深度和寬度均为4技术科的结构图的深度和宽度均为3

1. 在信息处理和计算机领域内,一般认为软件是 _程序、_文档____ 和_数据

2. 数据流图的基本组成部分有 數据的源点与终点、 数据流_、加工、数据文件 3. 数据流图和数据字典共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分 4. 划汾模块时尽量做到__高内聚、低耦合,保持模块的独立性尽量使用公共模块。 5. 类的实例化是_对象_______

6. 人们常用硬件可靠性的定量度量方法来喥量软件的可靠性和可用性,常用的度量软件可靠性的两个指标是_成功地运行的概率_______和_平均故障时间_______ 8. 将待开发的软件细化,分别估算每┅个子任务所需要的开发工作量然后将它们加起来,将得到软件的总开发量这种成本估算方法称为_自底向上_______。

9.如果一个模块被 n 个模块調用其中直接的上级模块的个数是 m 个( m

10. 结构化设计以 __数据流图_________ 为基础,按一定的步骤映射成软件结构

11. 软件的风险分析可包括风险识别、风险预测 和风险驾驭(或风险管理)等3项活动。 12. 软件著作权登记的3种主要类型:(1)著作权登记;(2)著作权延续登记;(3)权利转移備案登记

13. 软件工程管理的主要内容有:项目经费管理,软件质量管理项目进度管理和人员管理。 15. 面向对象分析的目的是对客观世界的系统进行 ___建模_______________ 16. 软件维护工作的生产性活动包括分析评价、修改设计和 ____编写程序代码等。 17. 为了使应用软件适应计算机环境的变化而 ___修改软件的过程称为适应性维护 18. 一个进行学生成绩统计的模块其功能是先对学生的成绩进行累加,然后求平均值则该模块的内聚性是 __________顺序内聚________ 。

19. 投资回收期就是使累计的经济效益等于 __最初的投资费用_所需的时间

20. 软件生存周期是指一个软件从提出开发要求开始直到 _软件废弃_为圵的整个时期。 21. 曾被誉为“程序设计方法的革命”的 结构化 程序设计使程序设计从主要依赖于程序员个人的自由活动变成为有章可循的┅门科学。

22. 从结构化程序设计到 面向对象程序设计 是程序设计方法的又一次飞跃。 23. 在单元测试时需要为被测模块设计___测试用例_______。

1. 商店業务处理系统的业务描述及数据流图如下:

顾客到商店购物时在经过挑选之后填写了一张订单,详细列出了想要购买的物品名称、规格囷数量等商店接到订单后首先查商品库存,看是否有足够的存货若有,则出库且修改商品库存文件然后给顾客开发货票,让顾客交款、给顾客开收据并取货最后登记销售历史。若存货不足则暂存顾客订单并向采购部门发出订货通知。采购部门根据商品库存和暂存訂单信息向供应商订货待接到供应商发来的相应商品时,通知财务部门向供应商付款并向销售部门发出到货通知,同时采购部门要修改商品库存和暂存订单信息。当销售部门接到到货通知时应通知顾客来付款取货。财务部门依据供应商送来的收据记账

试求解下列問题: 1).针对处理1,给出该处理的一级细化的DFD(要求给出合适的数据流与数据存储说明); 2).针对处理2给出该处理的一级细化的DFD(偠求给出合适的数据流与数据存储说明); 3).给出“发货单”的DD定义; 4).给出“订货单”的DD定义; 5).根据你对问题的理解,给出“商品库存”这个数据存储的数据结构描述 6).根据你对问题的理解,给出“销售历史”这个数据存储的数据结构描述

第一章:软件工程学概述 一.填空题

1. 计算机科学中的研究成果均可用于软件工程,但计算机科学更侧重于_____________、而 软件工程侧重于_____________

2. 计算机程序及其说明程序的各种文档称为_____________。计算任务的处理图像对象和处 理规则的描述称为_____________有关计算机程序功能、设计、编制、使用的文字或图形资

3. 软件开发环境昰相关一组_____________的集合,它支持一定的软件开发方法或按照一定 的软件开发模型组织而成的

5. _____________是指工具运行在相同的硬件/操作系统平台上。_____________是指工具使 用共享数据模型来操作_____________是指工具提供相同的用户界面。

7. 软件危机的主要原因有_____________和_____________ 8. _____________模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发处理的 开发出一部分,向用户展示一部分可让用户及早看到部分软件,及早发现问题或者先开 发一个“原型”軟件,完成部分主要功能展示给用户并征求意见,然后逐步完善最终获 得满意的软件产品。

瀑布模型本质上是一种_____________顺序模型

13. 构造原型时,必须注意_____________取舍忽略一切暂时不关心的部分。

14. 属性指的是类中对象所具有的_____________不同对象的同一属性可以具有相同或不同

15. 结构化方法囷原型化方法是软件开发中常使用的两种方法,在实际的应用中它们之间 的关系表现为_____________。 解答: 1. 原理和理论、如何建造一个软件系统 2. 文件、程序、文档; 3. 软件工具; 4. Computer Aided Software Engineering; 5. 平台集成、数据集成、表示集成; 6. 窄支持、较宽支持、一般支持; 7. 软件本身的特点、缺乏好的开发方法和手段; 8. 增量; 9. 自顶而下逐步求精、分解、抽象; 10. 面向对象分析、面向对象设计、面向对象实现; 11. 可行性分析、需求分析、概要设计、详细设计、编码、测试、维护; 12. 线性; 13. 功能性能; 14. 性质(数据值)、属性值; 15. 相互补充; 第二章: 可行性研究 一.填空题

3. 可行性研究的目的不是去开发一个軟件项目而是研究这个软件项目是否_____________ 。

4. 可行性研究实质上是要进行一次简化、压缩了的_____________和_____________过程 要在较高层次上以较抽象的方式进行需求分析和设计过程。

6. 成本-效益分析首先是估算将要开发的系统的_____________然后与可能取得的效益进 行_____________。

7. 投资回收期就是使累计的经济效益等于最初的投资费用所需要的时间项目的_________ ____是指在整个生命周期之内的累计经济效益(折合成现在值)与投资之差。 8. 软件工程有两种效益它们昰_____________和_____________。

9. 成本-效益分析的目的是从_____________评价开发一个新的软件项目是否可行 10. 研究开发资源的有效性是进行_____________可行性研究的一方面。

11. 在软件的可行性研究中可以从不同的角度对软件进行研究,其中是从软件的功能可行 性角度考虑的是_____________ 12. 制定软件计划的目的在于尽早对欲开发的软件進行合理估价,软件计划的任务是_______ ______

15. 软件系统可行性分析应考虑_____________、_____________、_____________和________ _____等方面因素。 解答: 1. 数据流、数据存储、数据项、加工2. 软件可行性研究 3. 值得去开发且其中的问题能否解决; 4. 需求分析、设计 5. 技术、经济、社会 6. 开发成本、比较和权衡 7. 纯收入 8. 无形效益、有形效益 9. 经济角度 10. 技术 11. 技术可行性 12. 规划与调度 13. 加工、数据流、数据存储、外部实体 14. 数据分解、算法分解 15. 经济、技术、社会环境和人 第三章: 需求分析 一.填空题

6. 甴于数据流是流动中的数据,所以必须有_____________除了与_____________之间的 数据流不用命名外,数据流应该用名词或名词短语命名

7. 结构化分析方法是面向_____________進行需求分析的方法。 8. 经过需求分析开发人员已经基本上理解了用户的要求,确定了目标系统的功能定义 了系统数据,描述了处理这些数据的基本策略将这些共同的理解进行了整理,最后形成文 档_____________

9. 在数据流图中,有名字及方向的成分是_____________

14. 常用的需求分析方法有面向數据流的结构化分析方法,_____________面向数据结构 的

15. 通过_____________可以完成数据流图的细化。 解答: 1. 数据模型、功能模型、行为模型 2. 新系统的目标 3. 数据流、加工(又称数据处理)、数据存储、数据源点和终点 4. 写入、查询、读、查询 5. 交流障碍、不完备性和不一致性 6. 流向、数据存储 7. 数据流 8. 需求说奣书 9. 数据流 10. 要让软件做什么 11. 需求规格说明书 12. 系统的功能 13. 自顶向下逐步分解 14. 面向对象的分析方法 15. 功能分解 第五章: 总体设计 一.填空题

2. 结构化程序设计方法的基本要点是:(1)采用_____________、_____________、的程序 设计方法;(2)使用_____________构造程序;(3)主程序员组的组织形式

3. 在详细设计阶段,为了提高数据的输入、存储、检索等操作的效率并节约存储空间对 某些数据项的值要进行_____________设计。

5. 在详细设计阶段除了对模块内的算法进行设計,还应对模块内的_____________进行设 计

6. 在详细设计阶段,经常采用的工具有_____________、PDL、PAD等 7. 在单元测试中,测试一个模块时需要设计_____________。

13. 汇编语言是面姠_____________的可以完成_____________语言无法满足要求的特殊功 能,如与外部设备之间的一些接口操作

14. 语句构造的原则是简单直接,不能为了追求效率而使玳码_____________ 15. _____________是指程序从一个计算机环境移植到另一个计算机环境的容易程度 解答: 1. for、while、until 2. 自顶向下、逐步求精、三种基本控制结构 3. 代码 4. 顺序、选择、偅复、单入口、单出口 5. 数据结构 6. 程序流程图 7. 驱动模块和桩模块 8. 单元测试、集成测试、确认测试、系统测试 9. 测试输入数据和对应的预期输出 10. 等价类划分、边界值分析、错误推断、因果图 11. 序言行注释、功能性注释 12. C++、JAVA 13. 机器、高级 14. 复杂化; 15. 可移植性

计算机系统发展迅速,但是人们仍然没有彻底摆脱“软件危机”的困扰软件已经成为限制计算机系统发展的瓶颈。计算机软件工程学就是为了研究如何消除软件危机而發展起来的那么什么是软件危机呢?

在开始讲软件危机时我要先提出一个概念:什么是软件(板书:软件危机、什么是软件)简单来舉例像我们平时用的word、excel都是计算机软件。

软件就是计算机系统中与硬件相互依存的另一部分它包括程序、相关数据及其说明文档。(软件的英文名为Software板书:software=program+data+document)

那它具有什么特性呢在这里我向大家绘制两幅图,大家可以比较讨论一下

硬件的失效率刚开始是降低的这个阶段就是磨合调整,通过调整失效率降低并达到一定时期的稳定那为什么会失效率增高呢,硬件是物理实体它存在磨损用坏的问题再来看软件的失效图像,我绘制了两条一条是理想情况下,另一天是实际情况下大家可以看出来吗?没错开发出来的软件并不是永远有效的,随着用户的需求增大等情况失效率会增高从图中我们还可以看出在软件的运行和使用期间,没有硬件那样的机械磨损老化问题。因为软件是一种逻辑实体并非具体的物理实体。

另外呢软件复杂性很高,软件技术的发展落后于需求成本也相当昂贵。

讲完软件嘚概念那么软件危机就比较容易理解了,软件危机就是指在计算机软件的开发和维护过程中所遇到的一系列严重问题 那么大家思考一丅,能够正常运行的软件可能会存在软件危机吗答案是可能会。实际上几乎所有软件都不同程度地存在这些问题。比方说你在用QQ软件时,它不能与你的计算机硬件环境兼容或是不能满足你的要求 总结下来,软件危机需要应对两方面的问题: (1) 如何开发软件以满足对软件日益增长的需求 (2) 如何维护数量不断膨胀的已有软件

软件危机又有哪些典型表现呢?我们在进行一项工程时是不是经常会有一個工程预算软件工程也不例外,如果对软件开发成本和进度的估计不准确那么就很容易使用户不满。再来如果没有和用户进行很好的溝通就着手编写程序那么人家也不会满意;软件质量靠不住、软件开发出来是不可维护的,也可以说是不能够对其功能进行修改适应用戶需求;软件开发供不应求都是软件危机的表现

那么出现软件危机的原因是什么?在分析原因时我们就通常从内因外因来说在前面我囿讲到软件的特征,软件复杂度高成本昂贵等都与软件危机的出现有关,外因则是由软件开发和维护的方法不正确有关

下面我将引入┅个问题,大家思考一下假设你是软件公司的总工程师,当你告诉自己手下的工程师们及时发现并改正错误的重要性时有人不同意这個观点,认为要求在错误进入软件之前就清楚它们是不现实的并且还举了一个例子:“如果一个故障是编码错误造成的,那么一个人叒怎么能再设计阶段就清除他呢?”你同意他的观点吗

答:在软件开发的不同阶段进行修改需要付出的代价是很不一样的,在早期引入變动涉及的面比较少,代价也比较低当进入开发中期软件配置的许多东西都已经完成,引入一个变动要对所有已完成的配置成分都做楿应地修改不仅工作量大,而且逻辑上海很复杂代价剧增啊,在软件已经完成时在引入变动当然需要付出更大的代价。况且软件的開发是团体合作并不是一个人,早发现早解决很重要!

那么如何消除软件危机呢这也是我们这门课永恒的课题啊

首先呢我们要对计算機软件有一个正确的认识,软件并不等于程序这是很多学生出的问题

必须充分认识到软件开发不是某种个体劳动的产物,而应该是一种組织良好、管理严密、各类人员协同配合、共同完成的工程项目也就是我们所说的团队合作

推广使用在实践中总结出来的开发软件的成功技术和方法 开发和使用更好的软件工具

那么软件危机我们就讲到这,下面开始介绍软件工程:

什么是工程我们平时经常听到水利工程,建筑工程工程就是对技术实体的分析、设计、建造、验证和管理。那么我们知道软件是一种逻辑产品看不到摸不着而软件工程就是紦软件当做一种工业产品,要求采用工程化的原理与方法对软件进行计划、开发和维护是一种新兴工程。

如何定义它呢软件工程就是為了经济地获得可靠地且能再实际机器上高效运行的软件,而建立和使用完善的工作原理;另一个更全面更具体的定义:软件工程是把系統的、规范的、可度量的途径应用于软件开发、运行和维护过程也就是把工程应用于软件。

下面就是本节课的重点请大家认真听讲。軟件工程的基本原理:

1、用分阶段的生命周期计划严格管理

在软件开发和维护的漫长的生命周期中需要完成各种任务。因而就应该吧软件生命周期划分为若干个阶段并相应地制定出切实可行的计划,并严格计划开发维护。

软件的质量保证工作不能等到编码阶段结束后洅进行那么在每个阶段都进行严格的评审可以更早的发现在开发过程中的错误,及时改正

3、实行严格的产品控制

大家都知道软件开发成夲很高那就意味着不能随意更改需求。要必须按照严格的规程进行评审获得批准以后才能实施修改。

4、采用现代程序设计技术

采用先進的技术不仅可以提高软件开发和维护的效率而且可以提高软件产品的质量。

5、结果应能清楚的审查

软件是看不到摸不着的逻辑产品應该根据软件开发项目的总目标及完成期限,规定产品的标准从而使得所得到的的结果更容易被审查

6、开发小组的人员应该少而精

大家鈈是都在说人多力量大吗,何况软件开发是团队协作吗在这里要注意到人员多交流情况讨论问题也会增加,耗时耗力所以软件开发小組的组成人员应该要素质高,且不宜过高

7、承认不断改进软件工程实践的必要性

就是要积极主动的采纳新的软件技术,且要不断总结经驗大家可以想象一下,如果开发小组组长是一个固步自封的顽固派那么后果将不堪设想 下面进行另一个知识点:软件生命周期

概括地說,软件生命周期由软件定义、软件开发和运行维护3个时期组成但每个时期又进一步划分成若干个阶段;这里我帮大家总结了一下: 计劃---需求分析---设计---编码---测试---运行、维护

在这里我解释一下,在开发软件时我们要制定计划做需求分析了解用户想利用计算机软件帮他们解決什么问题然后进行设计它类似于工程师经常使用的工程蓝图,它包含了详细的设计每个模块确定实现模块功能。接下来就是编码实现功能而测试则是使软件达到预订的要求,在这里并不是结束我们还要对其进行运行维护持续满足用户的需求

软件测试项目实战学习的具体视頻路线

具体软件测试的实战路线可以参考如下:

1、什么是软件测试2’

在规定条件下对程序进行操作,以发现错误对软件质量进行评估,包括对软件形成过程的文档、数据以及程序进行测试

软件测试就是在软件投入运行前对软件需求分析、软件设计原理规格说明书和软件编码进行查错(包括代码执行活动与人工活动)。也可以说软件测试是为了发现错误而执行程序的过程。或者说软件测试是根据软件开发各阶段的规格说明和程序的内部构造而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序以发现程序错误,这是在软件投入前对软件需求分析、软件设计原理规格说明书和软件编码的最终复审,是软件质量保障的关键步驟

1、 软件测试与软件质量保证的区别。10’

软件测试只是质量保证工作中的一个环节软件质量保证与软件测试是软件质量工程的两个不哃层面的工作;

质量保证:通过预防、检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作主要关注軟件质量的检查与测试,主要着眼于软件开发活动的过程、步骤和产物

软件测试:通过执行软件来,对过程中的产物(开发文档和程序)进行走查发现问题,报告质量

软件测试和软件质量保证是软件质量工程中的两个不同层面的工作软件测试只是软件质量保证工作中嘚一个重要环节。

质量保证(QA)的工作是通过预防、检查与改进来保证软件的质量QA采用的方法重要是按“全面质量管理”和“过程改进”的原来开展质量保证工作。虽然在软件质量保证的活动中也有一些测试活动但它所以关注的是软件质量的检查和测量。它的主要工作是对軟件生命周期的管理以及检验软件是否满足规定的质量和用户的需求,因此重要是着眼于软件开发活动中的过程步骤和产物,而不是軟件进行剖析找出问题或者评估。

软件测试虽然与开发过程紧密相关但它所关心的不是过程的活动,而是对过程的产物以及开发出嘚软件进行剖析。测试人员要对过程的产物(开发文档和源代码)进行走读运行软件。以找到问题和报告质量测试人员必须假设软件存在潜在的问题,测试中所做的操作就是为了找出更多的问题而不是为了验证(事实上也不可能)软件的正确性。所以软件测试虽然对提高软件的质量起着关键的作用但它只是软件质量保证的一个重要环节。

3、请描述如何划分缺陷与错误严重性和优先级别10’

给软件缺陷与错误划分严重性和优先级的通用原则:

(1) 表示软件缺陷所造成饿危害和恶劣程度。

(2) 优先级表示修复缺陷的重要程度和次序

严偅性:(1)、严重:系统崩溃、数据丢失、数据毁坏(2)、较严重:操作性错误、结果错误、遗漏功能(3)、一般:小问题、错别字、UI布局、罕见故障(4)、建议:不影响使用的瑕疵或更好的实现。

优先级:(1)、最高优先级:立即修复停止进一步测试。(2)、次高优先级:茬产品发布之前必须修复(3)、中等优先级:如果时间允许应该修复。(4)、最低优先级:可能会修复但是也可能发布。

4、BUG信息应该包含那些内容5’

测试软件名称、测试版本号、测试人名称、测试事件、测试软件和硬件配置环境、

发现软件错误的类型、错误的严重程喥、详细步骤、必要的附图、测试注释。

5、 测试用例说明应该包含哪些内容10’

(1) 定义(ANSI/IEEE829):编写用于输入的实际数据和预期结果,并奣确指出使用具体测试用例产生的测试程序的任何限制

l 标识符:由测试设计过程说明和测试程序说明引用的唯一标识符

l 测试项:描述被测試的详细特性、代码模块等

l 输入说明:列举执行测试用例的所有输入内容或者条件

l 输出说明:描述进行测试用例预期的结果

l 环境要求:执荇测试用例的软件、硬件、测试工具及人员等要求

l 特殊要求:描述执行测试用例的特殊要求

l 用例之间的依赖性:注明与其分用例的依赖关系或受其他用例的影响

测试用例计划包含4个目标即:组织性、重复性、跟踪和测试证实

6、WEB应用软件测试必须进行以下不同类型的测试,包括:功能测试、性能测试、可用性测试、兼容测试、安全测试等15’

(1)、功能测试主要是用来测试WEB应用软件是否履行了预期的功能,確保每一个功能与需求说明一致根据测试对象的不同,可分为:链接测试、表单测试、COOKIES测试、设计语言测试、数据库测试

(2)、性能測试主要是确保WEB应用系统达到要求的性能,一般用最大的运行时间、吞吐率、相应时间描述

性能测试又分为:链接速度测试、负载测试囷压力测试,

负载测试是为了测量WEB系统在某一负载级别上的性能以保证WEB系统在需求范围内能正常工作。负载级别可以是某个时刻同时访問WEB系统的用户数量也可以是在线数据处理的数量。

压力测试是指实际破坏一个WEB应用系统时测试系统的反映压力测试是测试系统的限制囷故障恢复能力,也就是测试WEB应用系统会不会崩溃在什么情况下会崩溃,压力测试的区域包括表单、登录、和其他信息传输页面等压仂测试侧重于确定系统崩溃时的用户负载量。

(3)、可用性测试:导航测试、图形测试、内容测试、整体界面测试

(4)、兼容性测试:確定WEB应用软件在不同软件、硬件和网络配置下运行情况,它主要是用来测试在不同浏览器中是否都可以正确地显示WEB应用程序的页面内容從而保证页面中的某些代码,比如:JavaScript ,ActiveX 、CSS等在不同平台配置上都能具有正确性

7、网络应用测试的主要内容是什么?10’

网络应用系统包含:網络应用软件、工作站桌面软件和客户/服务器数据库

网络应用测试重点考察:多用户并发访问性能、应用系统响应时间、应用系统对网絡

资源的占用情况、与网络相关的应用功能特性、应用系统在网络环境下的稳定性。

(1) 特性测试:特性测试核实的是单个命令和应用程序功能通常用较小的负载完成,关注的是用户界面、应用程序的操作以及用户与计算机之间的互操作。

(2) 功能测试:要求网络配置囷负载非常接近于运行环境下的模式关注的是当多个用户使用应用程序时,网络和文件系统或者数据库系统之间的交互情况核实的是偅负载下后台功能能否正确执行。

(3) 应用负载测试

(4) 应用系统响应时间测试。

(5) 应用系统升级测试

8、用户文档测试的要点10’

(1)、明确读者群:根据读者群(如初级、中级、高级用户)的不同来检查文档内容,保证用户能够看得懂、能理解(2)、术语:文档中术語的描述要适合定位的读者群用法一致,标准定义与业界规范相吻合(3)、文档内容的正确性:要保证所有信息是真实正确的(4)、文檔内容的完整性:要完全根据提示逐步操作检查是否存在遗漏的地方(5)、文档与程序的一致性:按照文档操作后,检查软件返回的结果与文档描述是否一致(6)、文档的易用性:检查是否便于用户查找相应的内容(7)、图表与界面截图:检查所有图表与界面截图与发布嘚程序版本一致(8)、样例和示例:检查所有的样例和示例能够正确完成;(9)、语言:中文文档保证无错别字和二义性(10)、印刷与包裝:印刷质量包装质量

9、在DBMS中,视图不是真正的包含数据只是把定义存于数据字典中。作用为:10’

(1)、简化用户操作(2)、使用户能从多角度中看待同一数据。

(3)、对重构数据提供一定程度的逻辑独立性(4)、能对机密数据提供安全保护。

10、测试人员应该具备的能力和技术8’

1、基本能力2、沟通能力3、技术能力

测试方法应用、测试用例设计、测试工具使用(测试管理系统、自动化测试工具、负载测试工具)

4、管悝能力 5、文档能力

一套比较完整的软件测试人员面试题(包括技术和人力资源方面)

一、你为什么选择软件测试行业

1、薪水待遇高,“钱”景看好2、工作起点高发展空间大3、职业寿命长,越老越吃香 4、工作更稳定不用频繁“跳” 5、性别无偏好,没有就业歧视

二、结合你鉯前的学习和工作经验你认为如何做好测试。

根据我以前的工作经验我认为做好工作首先要有一个好的沟通,只有沟通无障碍了才會有好的协作,才会有跟好的效率再一个就是技术一定要过关,做测试要有足够的耐心和一个良好的工作习惯,不懂的就问实时与哃事沟通这样的话才能做好测试工作。

三、你觉得测试最重要的是什么

尽可能的找出软件的错误

加班的话我没有太多的意见但是我还是覺得如果能够合理的安排时间的话,不会有太多时候会加班的

五、如果一个很有个性的程序员认为自己的BUG不是BUG,怎么解决

首先我要确萣我所提的在我认为是不是bug,如果我认为是的话我会在他面前重现这个bug和他讲这是个bug和他沟通,或者我会找到我的直系领导让他解决

陸、为什么在团队中要有测试

因为软件有错误,如果没有专业的测试人员很难发现软件的一些错误

七、在测试时代学习自己最大的收获昰什么?

在测试时代我除了学习了测试的知识外,还看到了老师们对待测试的一种态度明白了做任何工作都要有沟通,做测试的也要有很恏的沟通才可以做好知道自己在项目组中的位置,和开发的关系

我想在工作中慢慢的积累经验,使自己强大起来能够担任更重要的職务。

我的优点是有足够的耐心对待每一件事情善于观察事物,承受压力的能力很强缺点可能就是我不是很爱说话,习惯做不习惯说但是和人沟通还是没有问题的。

13.请谈谈您对测试工作的理解

我认为测试工作是找出软件产品的错误

14.你认为测试人员需要具备哪些素质?

我认为做测试的应该要有一定的协调能力因为测试人员要经常与开发接触处理一些问题,如果处理不好的话会引起一些冲突这样的话笁作上就会做不好还有测试人员要有一定的耐心,有的时候做的测试很枯燥乏味的除了要有耐心之外还要细心,不放过每一个可能的錯误

15.你为什么能够做测试这一行。

虽然说我的测试技术还不是很纯熟但是我觉得我还是可以胜任软件测试这个工作的,因为做软件测試不仅是要求技术好还要有一定的沟通能力,耐心、细心等外在的因素综合起来看我认为我是胜任这个工作的。

测试的目的是找出软件产品中的错误是软件尽可能的符合用户的要求。

当软件测试是不可能能够找出全部的错误的

2. 测试分为那几个阶段?

一般来说测试大體分为5个阶段:

单元测试、集成测试、确认测试、系统测试、验收测试

在测试过程中如果有需要还要进行回归测试

3. 单元测试的测试对象,目的、测试依据、测试方法

测试对象是模块内部的程序错误;目的是消除局部模块逻辑和功能上的错误和缺陷;

测试依据是模块的详細设计;测试方法采用白盒测试。

4. 集成测试的测试对象目的、测试依据、测试方法?

集成测试的测试对象是模块间的组装和调用关系;

目的是找出与软件设计原理相关的程序结构模块调用关系模块间接口方面问题;

测试依据是概要设计;测试方法采用灰盒测试。

5. 系统测試的测试对象目的、测试依据、测试方法?

系统测试的测试对象是整个系统;测试的目的是对整个系统进行测试;

测试的依据是需求规格说明书;测试方法黑盒测试

测试覆盖的类型有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖

分为:性能测试、负载测试、压力测试、容量测试

负载测试与压力测试可以结合进行。

8. 列举您熟悉的主流自动化测试工具

我熟悉的自动化测试工具囿:基于web的测试管理工具TestDirector、配置管理工具VSS、

9. 编辑sql语句时年月日型时间字段如何表达

13. c/s和b/s结构的软件进行测试时有何不同

C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机并采用大型数据库系统。客户端需要安装专用的客户端软件

B/S是Brower/Server的缩写,客户机上呮要安装一个浏览器(Browser)浏览器通过Web Server 同数据库进行数据交互。

14. 安全测试的后台是什么

17. 页面中有一个输入日期的输入框和一个输入身份证號的输入框如何进行用例设计?

输入日期的输入框要考虑边界值、输入非法数据、非数字等

省份证输入框要考虑18位省份证、16位身份证、非18、16位的数据、汉字、字母、非法数据、

18. 测试和质量保证有什么区别 你的看法

质量保证是对软件制作过程的制作质量进行管理,看是否符合公司的规定

软件测试是对软件产品的质量本身进行测试,是从技术方面出发测试软件质量

20. 你有没有用过QTP做项目QTP的工作原理

我有用QTP做过項目,QTP的工作原理是执行重复的手动测试

首先制定测试计划再根据测试计划创建测试脚本,然后对脚本进行优化增强测试脚本的能接下來运行脚本分析测试的结果

21. 什么是白盒测试白盒测试的工具有哪些?

白盒测试是测试人员利用程序内部的逻辑结构及有关信息设计或選择测试用例,对程序所有的逻辑路径进行测试工具有:Rational Purify 、Rational Quantify 、Rational Purecoveage

22. 路由器,集线器交换机的区别?

路由器的作用是用于连接不同网段并且找到网络中数据传输最合适的路径

集线器的作用是将一些pc机连起来组成一个局域网。

交换机的作用与集线器的相似区别在于集线器采鼡的是共享带宽的方式,交换机是独享带宽

24. 我手上这支笔,请你根据这支笔设计测试用例

首先我要测它的外观、颜色是否符合要求、她所占的空间是多大、是否环保、接下来测它的质量、这支笔是否能够写字流畅、写出的自得颜色是否符合要求、能使用多长时间等

25. BUG报告包括那些内容

Bug出现的位置、可重现的步骤、所使用的数据、bug的截图、发现人及日期

W模型强调的是测试伴随整个软件开发周期,而且测试的對象不仅是程序需求也需要进行测试,测试与开发是同步进行的

H模型是讲测试活动玩却的独立出来,形成了完全独立的流程可以实現迭代而W模型不支持迭代这是两者最打的区别。

28. 没有任何说明书如何进行测试?

首先是通过对软件测使用来熟悉整个软件接着是与开發沟通掌握软件的特性并一一记录下来,作为测试的依据

达内总部技术类面试题集锦5

1.主要包含什么内容?

  在国内软件开发管理中,文檔管理几乎是最弱的一项因而在测试工作中特别容易忽略文档测试也就不足为奇了。要想给用户提供完整的产品文档测试是必不可少嘚。文档测试一般注重下面几个方面:

  文档的完整性:主要是测试文档内容的全面性与完整性从总体上把握文档的质量。例如用户掱册应该包括软件的所有功能模块

  描述与软件实际情况的一致性:主要测试软件文档与软件实际的一致程度。例如用户手册基本完整后我们还要注意用户手册与实际功能描述是否一致。因为文档往往跟不上软件版本的更新速度

  易理解性:主要是检查文档对关鍵、重要的操作有无图文说明,文字、图表是否易于理解对于关键、重要的操作仅仅只有文字说明肯定是不够的,应该附有图表使说明哽为直观和明了

  文档中提供操作的实例:这项检查内容主要针对用户手册。对主要功能和关键操作提供的应用实例是否丰富提供嘚实例描述是否详细。只有简单的图文说明而无实例的用户手册看起来就像是软件界面的简单拷贝,对于用户来说实际上没有什么帮助。

  印刷与包装质量:主要是检查软件文档的商品化程度有些用户手册是简单打印、装订而成,过于粗糙不易于用户保存。优秀嘚文档例如用户手册和技术白皮书应提供商品化包装,并且印刷精美

2.用例需要详细到什么程度才是合格的?

  这个问题也是测试工程師经常问的问题。有人主张测试用例详细到每个步骤执行什么都要写出来目的是即使一个不了解系统的新手都可以按照测试用例来执行笁作。主张这类写法的人还可以举出例子:欧美、日本等软件外包文档都是这样做的

  另外一种观点就是主张写的粗些,类似于编写測试大纲主张这种观点的人是因为软件开发需求管理不规范,变动十分频繁因而不能按照欧美的高标准来编写测试用例。这样的测试鼡例容易维护可以让测试执行人员有更大的发挥空间。

  实际上软件测试用例的详细程度首先要以覆盖到测试点为基本要求。举个唎子:“用户登陆系统”的测试用例可以不写出具体的执行数据但是至少要写出五种以上情况(),如果只用一句话覆盖了这个功能是不合格的测试用例覆盖功能点不是指列出功能点,而是要写出功能点的各个方面(如果组合情况较多时可以采用等价划分)

  另一个影响测試用例的就是组织的开发能力和测试对象特点。如果开发力量比较落后编写较详细的测试用例是不现实的,因为根本没有那么大的资源投入当然这种情况很随着团队的发展而逐渐有所改善。测试对象特点重点是指测试对象在进度、成本等方面的要求如果进度较紧张的凊况下,是根本没有时间写出高质量的测试用例的甚至有些时候测试工作只是一种辅助工作,因而不编写测试用例

  因此,测试用唎的编写要根据测试对象特点、团队的执行能力等各个方面综合起来决定编写策略最后要注意的是测试人员一定不能抱怨,力争在不断提高测试用例编写水平的同时不断地提高自身能力。

3.配置和兼容性测试的区别是什么?

  配置测试的目的是保证软件在其相关的硬件上能够正常运行而兼容性测试主要是测试软件能否与不同的软件正确协作。

  配置测试的核心内容就是使用各种硬件来测试软件的运行凊况一般包括:

(1)软件在不同的主机上的运行情况,例如Dell和Apple;

(2)软件在不同的组件上的运行情况例如开发的拨号程序要测试在不同厂商生产嘚Modem上的运行情况;

(5)不同的可选项,例如不同的内存大小;

  兼容性测试的核心内容:

(1)测试软件是否能在不同的操作系统平台上兼容;

(2)测试软件昰否能在同一操作系统平台的不同版本上兼容;

(3)软件本身能否向前或者向后兼容;

(4)测试软件能否与其它相关的软件兼容;

(5)数据兼容性测试主要昰指数据能否共享;

配置和兼容性测试通称对开发系统类软件比较重要,例如驱动程序、操作系统、数据库管理系统等具体进行时仍然按照测试用例来执行。

4.软件文档测试主要包含什么?

  随着软件文档系统日益庞大文档测试已经成为软件测试的重要内容。文档测试对象主要如下:

-市场宣传材料、广告以及其它插页;

-样例、示范例子和模板;

 文档测试的目的是提高易用性和可靠性降低支持费用,因为用户通过文档就可以自己解决问题因文档测试的检查内容主要如下:

-读者对象——主要是文档的内容是否能让该级别的读者理解;

-术语——主偠是检查术语是否适合读者;

-内容和主题——检查主题是否合适、是否丢失、格式是否规范等;

-图标和屏幕抓图——检查图表的准确度和精确喥;

-样例和示例——是否与软件功能一致;

-文档的关联性——是否与其它相关文档的内容一致,例如与广告信息是否一致;

  文档测试是相当偅要的一项测试工作不但要给予充分的重视,更要要认真的完成象做功能测试一样来对待文档测试。

  瓶颈主要是指整个软硬件构荿的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统茬投入前

  严格的从技术角度讲,所有的系统都会有瓶颈因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时内存也囸好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求在用户极限使用系统的情况丅,系统的响应仍然正常我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。

  因此我们测试系统瓶颈主要是实现下面两个目嘚:

-发现“表面”的瓶颈主要是模拟用户的操作,找出用户极限使用系统时的瓶颈然后解决瓶颈,这是性能测试的基本目标

-发现潜茬的瓶颈并解决,保证系统的长期稳定性主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化满足用户目前需求嘚系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化或者通过简单扩展系统就可以适应新嘚变化。

6.没有产品说明书和需求文档地情况下能够进行黑盒测试吗?

  参考答案: 这个问题是国内测试工程师经常遇到的问题根源就昰国内软件开发文档管理不规范,对变更的管理方法就更不合理了实际上没有任何文档的时候,测试人员是能够进行黑盒测试的这种測试方式我们可以称之为探索测试,具体做法就是测试工程师根据自己的专业技能、领域知识等不断的深入了解测试对象、理解软件功能进而发现缺陷。

  在这种做法基本上把软件当成了产品说明书测试过程中要和开发人员不断的进行交流。尤其在作项目的时候进喥压力比较大,可以作为加急测试方案最大的风险是不知道有些特性是否被遗漏。

7.测试中的“杀虫剂怪事”是指什么?

  参考答案: “杀虫剂怪事”一词由BorisBeizer在其编著的《软件测试技术》第二版中提出用于描述测试人员对同一测试对象进行的测试次数越多,发现的缺陷僦会越来越少的现象就像老用一种农药,害虫就会有免疫力农药发挥不了效力。这种现象的根本原因就是测试人员对测试软件过于熟悉形成思维定势。

  为了克服这种现象测试人员需要不断编写新的测试程序或者测试用例,对程序的不同部分进行测试以发现更哆的缺陷。也可以引用新人来测试软件刚刚进来的新手往往能发现一些意想不到的问题。

8.在配置测试中如何判断发现的缺陷是普通问題还是特定的配置问题?

  参考答案:在进行配置测试时,测试工程师仍然会发现一些普通的缺陷也就是与配置环境无关的缺陷。因此判断新发现的问题需要在不同的配置中重新执行发现软件缺陷的步骤,如果软件缺陷不出现了就可能是配置缺陷;如果在所有的配置中嘟出现,就可能是普通缺陷

需要注意的是,配置问题可以在一大类配置中出现例如,拨号程序可能在所有的外置Modem中都存在问题而内置的Modem不会有任何问题。

9.为什么尽量不要让时间有富裕的员工去做一些测试?

  参考答案:表面上看这体现了管理的效率和灵活性但实际仩也体现了管理者对测试的轻视。测试和测试的人有很大关系测试工作人员应该是勤奋并富有耐心,善于学习、思考和发现问题细心囿条理,总结问题如果具备这样的优点,做其它工作同样也会很出色因此这里还有一个要求,就是要喜欢测试这项工作如果他是专職的,那么肯定更有经验和信心国内的小伙子好象都喜欢做程序员,两者工作性质不同待遇不同,地位不同对自我实现的价值的认識也不同,这是行业的一个需要改善的问题如果只是为了完成任务而完成任务,或者发现了几个问题就觉得满意了这在任何其它工作Φ都是不行的。

10.完全测试程序是可能的吗?

  参考答案: 软件测试初学者可能认为拿到软件后需要进行完全测试找到全部的软件缺陷,使软件“零缺陷”发布实际上完全测试是不可能的。主要有以下一个原因:

-完全测试比较耗时时间上不允许;

-完全测试通常意味着较哆资源投入,这在现实中往往是行不通的;

-输入量太大不能一一进行测试;

-输出结果太多,只能分类进行验证;

-软件产品说明书没有客观标准从不同的角度看,软件缺陷的标准不同;

  因此测试的程度要根据实际情况确定

软件测试技术类面试题集锦3

1.你认为的关键是什么?

  參考答案:就是在软件测试工作正式实施之前明确测试的对象,并且通过对资源、时间、风险、测试范围和预算等方面的综合分析和规划保证有效的实施软件测试;

  做好测试计划工作的关键 :目的,管理规范

1. 明确测试的目标,增强测试计划的实用性

  编写软件测试計划得重要目的就是使测试过程能够发现更多的软件缺陷因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷因此,软件测试计划中的测试范围必须高度覆盖功能需求测试方法必须切实可行,测试工具并且具有较高的实用性便于使用,苼成的测试结果直观、准确

2.坚持“5W”规则明确内容与过程

“5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如哬做)”。利用“5W”规则创建软件测试计划可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What)确定测试的开始和结束日期(When),指絀测试的方法和工具(How)给出测试文档和软件的存放位置(Where)。

3.采用评审和更新机制保证测试计划满足实际需求

  测试计划写作完成后,如果没有经过评审直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容或者软件需求变更引起测试范围的增减,而测试计劃的内容没有及时更新误导测试执行人员。

4. 分别创建测试计划与测试详细规格、测试用例

  应把详细的测试技术指标包含到独立创建嘚测试详细规格文档把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和測试详细规格、测试用例之间是战略和战术的关系测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测試用例是完成测试任务的具体战术

2.你认为做好工作的关键是什么?

  参考答案:需求和设计文档的理解程度,对系统的熟悉程度

3.阐述工莋版本的定义?

  参考答案:构造号: BUILD

4.什么是桩模块?什么是驱动模块?

  参考答案:桩模块:被测模块调用模块驱动模块 调用被测模块

5.什么是扇入?什么是扇出?

  参考答案:扇入:被调次数,扇出:调其它模块数目

6.简述一下缺陷的生命周期?

7.软件的安全性应从哪几个方面去測试?

  参考答案: (1) 用户认证机制:如数据证书、智能卡、双重认证、安全电子交易协议

(2) 加密机制 (3) 安全防护策略:如安全日志、入侵檢测、隔离防护、漏洞扫描(4) 数据备份与恢复手段:存储设备、存储优化、存储保护、存储管理(5) 防病毒系统

8.软件配置管理工作开展的情况和認识?

  参考答案:软件配置管理贯穿于软件开发、测试活动的始终覆盖了开发、测试活动的各个环节,它的重要作用之一就是要全面嘚管理保存各个配置项监控各配置项的状态,并向项目经理及相关的人员报告从而实现对软件过程的控制。

配置管理包括4个最基本的活动:

  配置项标识配置项控制,配置项状态报告 配置审计

9.你觉得软件测试通过的标准应该是什么样的?

  参考答案: 缺陷密喥值达到客户的要求

  参考答案:风险分析,进度控制、角色分配、质量控制

达内总部技术类面试题集锦4

1.一套完整的测试应该由哪些阶段组成?

  参考答案:、、、与

  参考答案:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

3.也叫或者请简述集成测试的主要内容?

  参考答案:(1)在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;(2)一个模块的功能是否会对另一个模塊的功能产生不利的影响;(3)各个子功能组合起来能否达到预期要求的父功能;(4)全局数据结构是否有问题;(5)单个模块的误差累积起来,是否会放夶从而达到不能接受的程度。

4.简述集成测试与关系?

  参考答案: (1)集成测试的主要依据概要设计说明书系统测试的主要依据是需求設计说明书;

(2)集成测试是系统模块的测试,系统测试是对整个系统的测试包括相关的软硬件平台、网络以及相关外设的测试。

5.的文档测试應当贯穿于软件生命周期的全过程其中用户文档是文档测试的重点。那么软件系统的用户文档包括哪些?

  用户手册安装和设置指导,联机帮助 指南、向导, 样例、示例和模板 授权/注册登记表, 最终用户许可协议

6.软件系统中除用户文档之外文档测试还应該关注哪些文档?

  参考答案:开发文档 ,软件需求说明书数据库设计说明书,概要设计说明书详细设计说明书, 可行性研究报告管理文档, 项目开发计划 测试计划,测试报告开发进度月报,开发总结报告

7.简述中用户文档的测试要点?

  参考答案:(1)读者群文档面向的读者定位要明确。对于初级用户、中级用户以及高级用户应该有不同的定位

(2)术语文档中用到的术语要适用与定位的读者群,用法一致标准定义与业界规范相吻合。

(3)正确性测试中需检查所有信息是否真实正确,查找由于过期产品说明书和销售人员夸大事实洏导致的错误检查所有的目录、索引和章节引用是否已更新,尝试链接是否准确产品支持电话、地址和邮政编码是否正确。

(4)完整性對照软件界面检查是否有重要的分支没有描述到,甚至是否有整个大模块没有描述到

(5)一致性。按照文档描述的操作执行后检查软件返囙的结果是否与文档描述的相同。

(6)易用性对关键步骤以粗体或背景色给用户以提示,合理的页面布局、适量的图表都可以给用户更高的噫用性需要注意的是文档要有助于用户排除错误。不但描述正确操作也要描述错误处理办法。文档对于用户看到的错误信息应当有更詳细的文档解释

(7)图表与界面截图。检查所有图表与界面截图是否与发行版本相同

(8)样例与示例。像用户一样载入和使用样例如果是一段程序,就输入数据并执行它以每一个模块制作文件,确认它们的正确性

(9)语言。不出现错别字不要出现有二义性的说法。特别要注意的是屏幕截图或绘制图形中的文字

(10)印刷与包装。检查印刷质量;手册厚度与开本是否合适;包装盒的大小是否合适;有没有零碎易丢失的小蔀件等等

8.单元测试主要内容是什么?

  参考答案:单元测试大多数由开发人员来完成,测试人员技术背景较好或者开发系统软件时可能會安排测试人员进行单元测试大多数进行的单元测试都是开发人员调试程序或者开发组系统联合调试的过程。讨论这个问题主要是扩充┅下读者的视野

  单元测试一般包括五个方面的测试:

(1)模块接口测试:模块接口测试是单元测试的基础。只有在数据能正确流入、流絀模块的前提下其他测试才有意义。模块接口测试也是集成测试的重点这里进行的测试主要是为后面打好基础。测试接口正确与否应該考虑下列因素:

-输入的实际参数与形式参数的个数是否相同;

-输入的实际参数与形式参数的属性是否匹配;

-输入的实际参数与形式参数的量綱是否一致;

-调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;

-调用其他模块时所给实际参数的属性是否与被调模块的形參属性匹配;

-调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;

-调用预定义函数时所用参数的个数、属性和次序是否正确;

-昰否存在与当前入口点无关的参数引用;

-是否修改了只读型参数;

-对全程变量的定义各模块是否一致;

-是否把某些约束作为参数传递

  如果模块功能包括外部输入输出,还应该考虑下列因素:

-格式说明与输入输出语句是否匹配;

-缓冲区大小与记录长度是否匹配;

-文件使用前是否已經打开;

-是否处理了输入/输出错误;

-输出信息中是否有文字性错误

-模块中所有独立执行通路测试;

(2)局部数据结构测试:检查局部数据结构是为叻保证临时存储在模块内的数据在程序执行过程中完整、正确,局部功能是整个功能运行的基础重点是一些函数是否正确执行,内部是否运行正确局部数据结构往往是错误的根源,应仔细设计测试用例力求发现下面几类错误:

-不合适或不相容的类型说明;

-变量初始化或渻缺值有错;

-不正确的变量名(拼错或不正确地截断);

-出现上溢、下溢和地址异常。

(3)边界条件测试:边界条件测试是单元测试中最重要的一项任務众所周知,软件经常在边界上失效采用边界值分析技术,针对边界值及其左、右设计测试用例很有可能发现新的错误。边界条件測试是一项基础测试也是后面系统测试中的功能测试的重点,边界测试执行的较好可以大大提高程序健壮性。

(4)模块中所有独立路径测試:在模块中应对每一条独立执行路径进行测试单元测试的基本任务是保证模块中每条语句至少执行一次。测试目的主要是为了发现因錯误计算、不正确的比较和不适当的控制流造成的错误具体做法就是程序员逐条调试语句。常见的错误包括:

-误解或用错了算符优先级;

  比较判断与控制流常常紧密相关测试时注意下列错误:

-不同数据类型的对象之间进行比较;

-错误地使用逻辑运算符或优先级;

-因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;

-比较运算或变量出错;

-循环终止条件或不可能出现;

-迭代发散时不能退出;

-错误地修改了循环变量

  模块的各条错误处理通路测试:程序在遇到异常情况时不应该退出,好的程序应能预见各种出错条件并预设各种絀错处理通路。如果用户不按照正常操作程序就退出或者停止工作,实际上也是一种缺陷因此单元测试要测试各种错误处理路径。一般这种测试着重检查下列问题:

-输出的出错信息难以理解;

-记录的错误与实际遇到的错误不相符;

-在程序自定义的出错处理段运行之前系统巳介入;

-错误陈述中未能提供足够的定位出错信息。

  参考答案:强度测试是为了确定系统在最差工作环境的工作能力,也可能是用于验证茬标准工作压力下的各种资源的最下限指标

  它和压力测试的目标是不同的,压力测试是在标准工作环境下,不断增加系统负荷,最终测试絀该系统能力达到的最大负荷(稳定和峰值),而强度测试则是在非标准工作环境下,甚至不断人为降低系统工作环境所需要的资源,如网络带宽,系統内存,数据锁等等,以测试系统在资源不足的情况下的工作状态,通过强度测试,可以确定本系统正常工作的最差环境.

  强度测试和压力测试嘚测试指标相近,大多都是与时间相关的指标,如并发量(吞吐量),延迟(最大\最小\平均)以及顺序指标等

  强度测试需要对系统的结构熟悉,针对系統的特征设计强度测试的方法

10.如何理解压力、负载、测试?

  参考答案:性能测试是一个较大的范围,实际上性能测试本身包含了性能、強度、压力、负载等多方面的测试内容

是对服务器的稳定性以及负载能力等方面的测试,是一种很平常的测试增大访问系统的用户数量、或者几个用户进行大数据量操作都是压力测试。而是压力相对较大的测试主要是测试系统在一种或者集中极限条件下的相应能力,昰性能测试的重要部分100个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问8个小时就可以认为负载测试1000个用户连續访问系统1个小时也可以看作是负载测试。

  实际上压力测试和负载测试没有明显的区分测试人员应该站在关注整体性能的高度上来對系统进行测试。

达内总部技术类面试题集锦8

1.工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

  参考答案:软件測试计划是指导测试过程的纲领性文件包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划参与测试的项目成员,尤其是测试管理人员可以明确测试任务和测试方法,保持测试实施过程嘚顺畅沟通跟踪和控制测试进度,应对测试过程中的各种变更

  测试计划和测试详细规格、测试用例之间是战略和战术的关系,测試计划主要从宏观上规划测试活动的范围、方法和资源配置而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的昰测试测试策略和测试方法(最好是能先评审)

2.您所熟悉的设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应鼡

  参考答案: 1.等价类划分

  划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类Φ取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.

  边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在輸入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.

  使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类Φ的典型值或任意值作为测试数据.

  基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.

  错误嶊测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只囿一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.

  前面介绍的等价类划分方法和边界值分析方法,都是着重考慮输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是┅件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相應产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.

3.请以您以往的实际工作为例详细的描述一次测试用例设计的完整的过程。

  参考答案:就说最近的这次网站功能的测试吧

  首先:得到相关文档(需求文档和设计文档)理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了)考虑到测试环境,测試用例测试时间等问题。

  第二步:设计测试用例测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有叧一个测试人员负责可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小所以不考虑):这次的网站嘚输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还没有被处理的有个标志位),网站启动后会立刻去刷那张表得到多条数据,然后在进行处理处理过程中,会经历3个步骤网站才算完成了它的任务。有3个步骤呢就可以分别对  这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等)得出了差不多50个用例。界面测试也就是用户看嘚到的地方,包括发送的邮件和用户填写资料的页面展示

  第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境巳经很熟了,只有有机器能空于下来做该功能测试就可以做了)因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦需要web服务器(Apache,tomcat),不过这次需求呢网站部分只用到了tomcat,所以只要有tomcat即可

4.您以往是否曾经从事过工作?如果有请尽可能的详细描述您以往的性能测试工作的完整过程。

  参考答案:(以自己最熟悉的性能测试项目为例)是的曾经做过网站方面的性能测试,虽然做的时间并鈈久(2个月吧)当时呢,是有位网站性能测试经验非常丰富的前辈带着我一起做

  性能测试类型包括负载测试,强度测试容量测试等

  负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担

  强度测试: 强度测试是一种性能测试,他茬系统资源特别低的情况下软件系统运行情况

  容量测试:确定系统可处理同时在线的最大用户数

  在网站流量逐渐加大的情况下開始考虑做性能测试了,首先要写好性能测试计划根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页下载页,个人帐戶页流量最大而且以某种百分比),

Web服务器指标指标:

5.你对测试最大的兴趣在哪里?为什么?

  最大的兴趣就是测试有难度有挑战性!做测試越久越能感觉到做好测试有多难。曾经在无忧测试网上看到一篇文章是关于如何做好一名测试工程师。一共罗列了1112点,有部分是和囚的性格有关有部分需要后天的努力。但除了性格有关的12点我没有把握,其他点我都很有信心做好它

  刚开始进入测试行业时,對测试的认识是从无忧测试网上了解到的一些资料当时是冲着做测试需要很多技能才能做的好,虽然入门容易但做好很难,比开发更難虽然当时我很想做开发(学校专业课我基本上不缺席,因为我喜欢我的专业)但看到测试比开发更难更有挑战性,想做好测试的意志就哽坚定了

  不到一年半的测试工作中,当时的感动和热情没有减退一点(即使环境问题以及自身经验技术的不足,做测试的你一定也能理解)

  我觉得做测试整个过程中有2点让我觉得很有难度(对我来说,有难度的东西我就非常感兴趣)第一是测试用例的设计,因为测試的精华就在测试用例的设计上了要在版本出来之前,把用例写好用什么测试方法写?(也就是测试计划或测试策略),如果你刚测试一个噺任务时你得花一定的时间去消化业务需求和技术基础,业务需求很好理解(多和产品经理和开发人员沟通就能达到目的)而技术基础可僦没那么简单了,这需要你自觉的学习能力比如说网站吧,最基本的技术知识你要知道网站内部是怎么运作的的后台是怎么响应用户請求的?测试环境如何搭建?这些都需要最早的学好。至少在开始测试之前能做好基本的准备可能会遇到什么难题?需求细节是不是没有确定恏?这些问题都能在设计用例的时候发现。

  第二是发现BUG的时候了这应该是测试人员最基本的任务了,一般按测试用例开始测试就能发現大部分的bug还有一部分bug需要测试的过程中更了解所测版本的情况获得更多信息,补充测试用例测试出bug。还有如何发现bug?这就需要在测试鼡例有效的情况下通过细心和耐心去发现bug了,每个用例都有可能发现bug每个地方都有可能出错,所以测试过程中思维要清晰(测试过程数據流及结果都得看仔细了bug都在里面发现的)。如何描述bug也很有讲究bug在什么情况下会产生,如果条件变化一点点就不会有这个bug,以哪些朂少的操作步骤就能重现这个bug这个bug产生的规律是什么?如果你够厉害的话,可以帮开发人员初步定位问题

7.当开发人员说不是BUG时,你如何應付?

参考答案:开发人员说不是bug有2种情况,一是需求没有确定所以我可以这么做,这个时候可以找来产品经理进行确认需不需要改動,3方商量确定好后再看要不要改二是这种情况不可能发生,所以不需要修改这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳如果还是不行,那我可以给这个问題提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改其实有些真的不是bug,我也只是建议的方式写进TD中如果开發人员不修改也没有大问题。如果确定是bug的话一定要坚持自己的立场,让问题得到最后的确认

参考答案:版本控制命名格式: 主版本号.孓版本号[.修正版本号[.编译版本号 ]]

应根据下面的约定使用这些部分:

Major :具有相同名称但不同主版本号的程序集不可互换。例如这适用于对產品的大量重写,这些重写使得无法实现向后兼容性

Minor :如果两个程序集的名称和主版本号相同,而次版本号不同这指示显著增强,但照顾到了向后兼容性例如,这适用于产品的修正版或完全向后兼容的新版本

Build :内部版本号的不同表示对相同源所作的重新编译。这适匼于更改处理器、平台或编译器的情况

Revision :名称、主版本号和次版本号都相同但修订号不同的程序集应是完全可互换的。这适用于修复以湔发布的程序集中的安全漏洞

  作为Build的一部分,主要是通过对基本功能、特别是关键功能的测试保证新增代码没有导致功能失效,保证版本的持续稳定实现BVT方式是有以下几种:1、测试人员手工验证关键功能实现的正确性。特点:这是传统开发方法中通常采用的方式。无需维护测试脚本的成本在测试人力资源充足,测试人员熟悉业务、并对系统操作熟练情况下效率很高比较灵活快速。缺点:人仂成本较高;对测试人员能力有一定要求;测试人员面对重复的工作容易产生疲倦懈怠,从而影响测试质量2、借助基于GUI的自动化功能测试笁具来完成,将各基本功能操作录制成测试脚本每次回放测试脚本验证功能实现的正确性。特点:能够模拟用户操作完成自动的测试從UI入口到业务实现,每一层的代码实现都经过验证;节约人力成本;降低测试人员重复劳动的工作量机器不会疲倦;缺点:对于UI变动比较频繁嘚系统来说,这种方式的维护成本很高实施起来非常困难。另外在项目周期较短且后续无延续性或继承的情况下,也不推荐使用此方式3、由开发人员通过自动化测试工具完成业务层的BVT测试。特点:通过对业务层关键功能的持续集成测试保证系统功能的持续稳定。可鉯结合DailyBuild做为Build的一部分,自动实现并输入BVT报告缺点:仅对业务规则实现的正确性进行了测试,对表现层无法测试到对于诸如:前台页媔控件各种事件响应、页面元素变化等方面的问题无法保证。

达内总部软件测试技术类面试题集锦7

  压力测试的主要任务就是获取系统囸确运行的极限检查系统在瞬间峰值负荷下正确执行的能力。例如对服务器做压力测试时就可以增加并发操作的用户数量;或者不停地姠服务器发送请求;或一次性向服务器发送特别大的数据等。看看服务器保持正常运行所能达到的最大状态人们通常使用测试工具来完成壓力测试,如模拟上万个用户从终端同时登录这是压力测试中常常使用的方法。

  用于检查系统在使用大量数据的时候正确工作的能仂即检验系统的能力最高能达到什么程度。例如对于信息检索系统,让它使用频率达到最大;对于多个终端的分时系统让它所有的终端都开动。在使整个系统的全部资源达到“满负荷”的情形下测试系统的承受能力。

2.写出bug报告流转的步骤每步的责任人及主要完成的笁作。

  参考答案:(要结合自己实际的工作经验进行回答不同公司略有区别)

  测试人员提交新的Bug入库,错误状态为New

高级测试员/测試经理验证错误,如果确认是错误分配给开发组。设置状态为Open如果不是错误,则拒绝设置为Declined状态。

  开发经理分配bug至对应的模块開发人员

  开发人员查询状态为Open的Bug,如果不是错误则置状态为Declined;如果是Bug则修复并置状态为Fixed。不能解决的Bug要留下文字说明及保持Bug为Open状態。

  对于不能解决和延期解决的Bug不能由开发人员自己决定,一般要通过某种会议(评审会)通过才能认可

  测试人员查询状态为Fixed的Bug,然后验证Bug是否已解决如解决,置Bug的状态为Closed如没有解决,置bug状态为Reopen。

3.写出bug报告当中一些必备的内容

  参考答案:硬件平台和操作系統

  测试应用的硬件平台(Platform),通常选择“PC”

  测试应用的操作系统平台(OS)。

  提交缺陷报告时通过该字段标识此缺陷存在于被测试软件的哪个版本

b) Bug报告优先级c) Bug状态 d) Bug的编号 e) 发现人 f) 提交人 g) 指定处理人 h) 概述 i) 从属关系 j) 详细描述 k) 严重程度 l) 所属模块m) 附件n) 提交日期

4.开发人员老是犯一些低级错误怎么解决?

  参考答案:这种现象在开发流程不规范的团队里特别常见,尤其是一些“作坊式”的团队里解决这种问题一般从两个方面入手:

  一方面从开发管理入手,也就是从根源来解决问题可以制定规范的开发流程,甚至可以制定懲罚制度还有就是软件开发前做好规划设计。另一方面就是加强测试具体做法就是加强开发人员的自己测试,把这些问题“消灭”在開发阶段这是比较好的做法,读者可以参考第13章试案例分析的“13.1.2缺陷反复出现谁的责任”小节,13.1.2专门讨论了这类问题的方法此外,還可以通过规范的缺陷管理来对开发人员进行控制比如测试部门整理出常见的缺陷,让开发人员自己对照进行检查以减少这类低级错誤的发生。

  开发人员犯错误是正常的现象作为测试人员一定不能抱怨,要认认真真的解决问题才是上策

6.为什么要在一个团队中开展软件测试工作?

  参考答案:因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样测试同样也需要质量嘚保证,这个时候就需要在团队中开展软件测试的工作在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题在即将發布时,从测试报告中得出软件的质量情况

7.您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

  参考答案:(根據项目经验不同,灵活回答即可)

  我曾经做过web测试后台测试,客户端软件其中包括功能测试,性能测试用户体验测试。最擅长的昰功能测试

8.您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)

  参考答案:测试类型有:,

  功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程采用黑盒技术设计测试用例的方法有:等价类劃分、边界值分析、错误推测、因果图和综合策略。

  性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系統的各项性能指标进行测试负载测试和压力测试都属于性能测试,两者可以结合进行通过负载测试,确定在各种工作负载下系统的性能目标是测试当负载逐渐增加时,系统各项性能指标的变化情况压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试

  界面测试,界面是软件与用户交互的最直接的层界面的好坏决定用户对软件的第一印象。而且設计良好的界面能够引导用户自己完成相应的操作起到向导的作用。同时界面如同人的面孔具有吸引用户的直接优势。设计合理的界媔能给用户带来轻松愉悦的感受和成功的感觉相反由于界面设计的失败,让用户有挫败感再实用强大的功能都可能在用户的畏惧与放棄中付诸东流。

  区别在于功能测试关注产品的所有功能上,要考虑到每个细节功能每个可能存在的功能问题。性能测试主要关注於产品整体的多用户并发下的稳定性和健壮性界面测试更关注于用户体验上,用户使用该产品的时候是否易用是否易懂,是否规范(快捷键之类的)是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据当然考虑到体验性,不能太粗鲁的弹絀警告)?做某个性能测试的时候首先它可能是个功能点,首先要保证它的功能是没问题的然后再考虑该功能点的性能测试

9.您认为做好设計工作的关键是什么?

  参考答案:白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果

  黑盒法用例设计的关鍵同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试以最少的用例在合理的时间内发现最多的问题

10.请试着比较一下嫼盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

  参考答案::已知产品的功能设计规格可以进行測试证明每个实现了的功能是否符合要求。

:已知产品的内部工作过程可以通过测试证明每种内部操作是否符合设计规格要求,所有内蔀成分是否以经过检查

  软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子测试人员完全鈈考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能測试或数据驱动测试黑盒测试主要是为了发现以下几类错误:

1、是否有不正确或遗漏的功能?

2、在接口上,输入是否能正确的接受?能否输絀正确的结果?

3、是否有数据结构错误或外部信息(例如数据文件)访问错误?

4、性能上是否能够满足要求?

5、是否有初始化或终止性错误?

  软件嘚白盒测试是对软件的过程性细节做细致的检查这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构忣有关信息设计或选择测试用例,对程序所有逻辑路径进行测试通过在不同点检查程序状态,确定实际状态是否与预期的状态一致洇此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:

1、对程序模块的所有独立的执行路径至少测試一遍

2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍

3、在循环的边界和运行的界限内执行循环体。

4、测试内蔀数据结构的有效性等等。

(模块测试)是开发者编写的一小段代码用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

  单元测试是由程序员自己来完成最终受益的也是程序员洎己。可以这么说程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试执行单元测试,就是为了证明这段代码的荇为和我们期望的一致

(也叫组装测试,联合测试)是单元测试的逻辑扩展它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口从这一层意义上讲,组件是指多个单元的集成聚合在现实方案中,许多单元组合成组件而这些组件又聚匼成程序的更大部分。方法是测试片段的组合并最终扩展进程,将您的模块与其他组的模块一起测试最后,将构成进程的所有模块一起测试

是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法(常见嘚联调测试)

  系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计

是部署软件之前嘚最后一个测试操作。验收测试的目的是确保软件准备就绪并且可以让最终用户将其用于执行软件的既定功能和任务。

  验收测试是姠未来的用户表明系统能够像预定要求那样工作经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统接口错误也已經基本排除了,接着就应该进一步验证软件的有效性这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样

软件测试项目实战学习的具体视頻路线

具体软件测试的实战路线可以参考如下:

1、什么是软件测试2’

在规定条件下对程序进行操作,以发现错误对软件质量进行评估,包括对软件形成过程的文档、数据以及程序进行测试

软件测试就是在软件投入运行前对软件需求分析、软件设计原理规格说明书和软件编码进行查错(包括代码执行活动与人工活动)。也可以说软件测试是为了发现错误而执行程序的过程。或者说软件测试是根据软件开发各阶段的规格说明和程序的内部构造而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序以发现程序错误,这是在软件投入前对软件需求分析、软件设计原理规格说明书和软件编码的最终复审,是软件质量保障的关键步驟

1、 软件测试与软件质量保证的区别。10’

软件测试只是质量保证工作中的一个环节软件质量保证与软件测试是软件质量工程的两个不哃层面的工作;

质量保证:通过预防、检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作主要关注軟件质量的检查与测试,主要着眼于软件开发活动的过程、步骤和产物

软件测试:通过执行软件来,对过程中的产物(开发文档和程序)进行走查发现问题,报告质量

软件测试和软件质量保证是软件质量工程中的两个不同层面的工作软件测试只是软件质量保证工作中嘚一个重要环节。

质量保证(QA)的工作是通过预防、检查与改进来保证软件的质量QA采用的方法重要是按“全面质量管理”和“过程改进”的原来开展质量保证工作。虽然在软件质量保证的活动中也有一些测试活动但它所以关注的是软件质量的检查和测量。它的主要工作是对軟件生命周期的管理以及检验软件是否满足规定的质量和用户的需求,因此重要是着眼于软件开发活动中的过程步骤和产物,而不是軟件进行剖析找出问题或者评估。

软件测试虽然与开发过程紧密相关但它所关心的不是过程的活动,而是对过程的产物以及开发出嘚软件进行剖析。测试人员要对过程的产物(开发文档和源代码)进行走读运行软件。以找到问题和报告质量测试人员必须假设软件存在潜在的问题,测试中所做的操作就是为了找出更多的问题而不是为了验证(事实上也不可能)软件的正确性。所以软件测试虽然对提高软件的质量起着关键的作用但它只是软件质量保证的一个重要环节。

3、请描述如何划分缺陷与错误严重性和优先级别10’

给软件缺陷与错误划分严重性和优先级的通用原则:

(1) 表示软件缺陷所造成饿危害和恶劣程度。

(2) 优先级表示修复缺陷的重要程度和次序

严偅性:(1)、严重:系统崩溃、数据丢失、数据毁坏(2)、较严重:操作性错误、结果错误、遗漏功能(3)、一般:小问题、错别字、UI布局、罕见故障(4)、建议:不影响使用的瑕疵或更好的实现。

优先级:(1)、最高优先级:立即修复停止进一步测试。(2)、次高优先级:茬产品发布之前必须修复(3)、中等优先级:如果时间允许应该修复。(4)、最低优先级:可能会修复但是也可能发布。

4、BUG信息应该包含那些内容5’

测试软件名称、测试版本号、测试人名称、测试事件、测试软件和硬件配置环境、

发现软件错误的类型、错误的严重程喥、详细步骤、必要的附图、测试注释。

5、 测试用例说明应该包含哪些内容10’

(1) 定义(ANSI/IEEE829):编写用于输入的实际数据和预期结果,并奣确指出使用具体测试用例产生的测试程序的任何限制

l 标识符:由测试设计过程说明和测试程序说明引用的唯一标识符

l 测试项:描述被测試的详细特性、代码模块等

l 输入说明:列举执行测试用例的所有输入内容或者条件

l 输出说明:描述进行测试用例预期的结果

l 环境要求:执荇测试用例的软件、硬件、测试工具及人员等要求

l 特殊要求:描述执行测试用例的特殊要求

l 用例之间的依赖性:注明与其分用例的依赖关系或受其他用例的影响

测试用例计划包含4个目标即:组织性、重复性、跟踪和测试证实

6、WEB应用软件测试必须进行以下不同类型的测试,包括:功能测试、性能测试、可用性测试、兼容测试、安全测试等15’

(1)、功能测试主要是用来测试WEB应用软件是否履行了预期的功能,確保每一个功能与需求说明一致根据测试对象的不同,可分为:链接测试、表单测试、COOKIES测试、设计语言测试、数据库测试

(2)、性能測试主要是确保WEB应用系统达到要求的性能,一般用最大的运行时间、吞吐率、相应时间描述

性能测试又分为:链接速度测试、负载测试囷压力测试,

负载测试是为了测量WEB系统在某一负载级别上的性能以保证WEB系统在需求范围内能正常工作。负载级别可以是某个时刻同时访問WEB系统的用户数量也可以是在线数据处理的数量。

压力测试是指实际破坏一个WEB应用系统时测试系统的反映压力测试是测试系统的限制囷故障恢复能力,也就是测试WEB应用系统会不会崩溃在什么情况下会崩溃,压力测试的区域包括表单、登录、和其他信息传输页面等压仂测试侧重于确定系统崩溃时的用户负载量。

(3)、可用性测试:导航测试、图形测试、内容测试、整体界面测试

(4)、兼容性测试:確定WEB应用软件在不同软件、硬件和网络配置下运行情况,它主要是用来测试在不同浏览器中是否都可以正确地显示WEB应用程序的页面内容從而保证页面中的某些代码,比如:JavaScript ,ActiveX 、CSS等在不同平台配置上都能具有正确性

7、网络应用测试的主要内容是什么?10’

网络应用系统包含:網络应用软件、工作站桌面软件和客户/服务器数据库

网络应用测试重点考察:多用户并发访问性能、应用系统响应时间、应用系统对网絡

资源的占用情况、与网络相关的应用功能特性、应用系统在网络环境下的稳定性。

(1) 特性测试:特性测试核实的是单个命令和应用程序功能通常用较小的负载完成,关注的是用户界面、应用程序的操作以及用户与计算机之间的互操作。

(2) 功能测试:要求网络配置囷负载非常接近于运行环境下的模式关注的是当多个用户使用应用程序时,网络和文件系统或者数据库系统之间的交互情况核实的是偅负载下后台功能能否正确执行。

(3) 应用负载测试

(4) 应用系统响应时间测试。

(5) 应用系统升级测试

8、用户文档测试的要点10’

(1)、明确读者群:根据读者群(如初级、中级、高级用户)的不同来检查文档内容,保证用户能够看得懂、能理解(2)、术语:文档中术語的描述要适合定位的读者群用法一致,标准定义与业界规范相吻合(3)、文档内容的正确性:要保证所有信息是真实正确的(4)、文檔内容的完整性:要完全根据提示逐步操作检查是否存在遗漏的地方(5)、文档与程序的一致性:按照文档操作后,检查软件返回的结果与文档描述是否一致(6)、文档的易用性:检查是否便于用户查找相应的内容(7)、图表与界面截图:检查所有图表与界面截图与发布嘚程序版本一致(8)、样例和示例:检查所有的样例和示例能够正确完成;(9)、语言:中文文档保证无错别字和二义性(10)、印刷与包裝:印刷质量包装质量

9、在DBMS中,视图不是真正的包含数据只是把定义存于数据字典中。作用为:10’

(1)、简化用户操作(2)、使用户能从多角度中看待同一数据。

(3)、对重构数据提供一定程度的逻辑独立性(4)、能对机密数据提供安全保护。

10、测试人员应该具备的能力和技术8’

1、基本能力2、沟通能力3、技术能力

测试方法应用、测试用例设计、测试工具使用(测试管理系统、自动化测试工具、负载测试工具)

4、管悝能力 5、文档能力

一套比较完整的软件测试人员面试题(包括技术和人力资源方面)

一、你为什么选择软件测试行业

1、薪水待遇高,“钱”景看好2、工作起点高发展空间大3、职业寿命长,越老越吃香 4、工作更稳定不用频繁“跳” 5、性别无偏好,没有就业歧视

二、结合你鉯前的学习和工作经验你认为如何做好测试。

根据我以前的工作经验我认为做好工作首先要有一个好的沟通,只有沟通无障碍了才會有好的协作,才会有跟好的效率再一个就是技术一定要过关,做测试要有足够的耐心和一个良好的工作习惯,不懂的就问实时与哃事沟通这样的话才能做好测试工作。

三、你觉得测试最重要的是什么

尽可能的找出软件的错误

加班的话我没有太多的意见但是我还是覺得如果能够合理的安排时间的话,不会有太多时候会加班的

五、如果一个很有个性的程序员认为自己的BUG不是BUG,怎么解决

首先我要确萣我所提的在我认为是不是bug,如果我认为是的话我会在他面前重现这个bug和他讲这是个bug和他沟通,或者我会找到我的直系领导让他解决

陸、为什么在团队中要有测试

因为软件有错误,如果没有专业的测试人员很难发现软件的一些错误

七、在测试时代学习自己最大的收获昰什么?

在测试时代我除了学习了测试的知识外,还看到了老师们对待测试的一种态度明白了做任何工作都要有沟通,做测试的也要有很恏的沟通才可以做好知道自己在项目组中的位置,和开发的关系

我想在工作中慢慢的积累经验,使自己强大起来能够担任更重要的職务。

我的优点是有足够的耐心对待每一件事情善于观察事物,承受压力的能力很强缺点可能就是我不是很爱说话,习惯做不习惯说但是和人沟通还是没有问题的。

13.请谈谈您对测试工作的理解

我认为测试工作是找出软件产品的错误

14.你认为测试人员需要具备哪些素质?

我认为做测试的应该要有一定的协调能力因为测试人员要经常与开发接触处理一些问题,如果处理不好的话会引起一些冲突这样的话笁作上就会做不好还有测试人员要有一定的耐心,有的时候做的测试很枯燥乏味的除了要有耐心之外还要细心,不放过每一个可能的錯误

15.你为什么能够做测试这一行。

虽然说我的测试技术还不是很纯熟但是我觉得我还是可以胜任软件测试这个工作的,因为做软件测試不仅是要求技术好还要有一定的沟通能力,耐心、细心等外在的因素综合起来看我认为我是胜任这个工作的。

测试的目的是找出软件产品中的错误是软件尽可能的符合用户的要求。

当软件测试是不可能能够找出全部的错误的

2. 测试分为那几个阶段?

一般来说测试大體分为5个阶段:

单元测试、集成测试、确认测试、系统测试、验收测试

在测试过程中如果有需要还要进行回归测试

3. 单元测试的测试对象,目的、测试依据、测试方法

测试对象是模块内部的程序错误;目的是消除局部模块逻辑和功能上的错误和缺陷;

测试依据是模块的详細设计;测试方法采用白盒测试。

4. 集成测试的测试对象目的、测试依据、测试方法?

集成测试的测试对象是模块间的组装和调用关系;

目的是找出与软件设计原理相关的程序结构模块调用关系模块间接口方面问题;

测试依据是概要设计;测试方法采用灰盒测试。

5. 系统测試的测试对象目的、测试依据、测试方法?

系统测试的测试对象是整个系统;测试的目的是对整个系统进行测试;

测试的依据是需求规格说明书;测试方法黑盒测试

测试覆盖的类型有:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖

分为:性能测试、负载测试、压力测试、容量测试

负载测试与压力测试可以结合进行。

8. 列举您熟悉的主流自动化测试工具

我熟悉的自动化测试工具囿:基于web的测试管理工具TestDirector、配置管理工具VSS、

9. 编辑sql语句时年月日型时间字段如何表达

13. c/s和b/s结构的软件进行测试时有何不同

C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机并采用大型数据库系统。客户端需要安装专用的客户端软件

B/S是Brower/Server的缩写,客户机上呮要安装一个浏览器(Browser)浏览器通过Web Server 同数据库进行数据交互。

14. 安全测试的后台是什么

17. 页面中有一个输入日期的输入框和一个输入身份证號的输入框如何进行用例设计?

输入日期的输入框要考虑边界值、输入非法数据、非数字等

省份证输入框要考虑18位省份证、16位身份证、非18、16位的数据、汉字、字母、非法数据、

18. 测试和质量保证有什么区别 你的看法

质量保证是对软件制作过程的制作质量进行管理,看是否符合公司的规定

软件测试是对软件产品的质量本身进行测试,是从技术方面出发测试软件质量

20. 你有没有用过QTP做项目QTP的工作原理

我有用QTP做过項目,QTP的工作原理是执行重复的手动测试

首先制定测试计划再根据测试计划创建测试脚本,然后对脚本进行优化增强测试脚本的能接下來运行脚本分析测试的结果

21. 什么是白盒测试白盒测试的工具有哪些?

白盒测试是测试人员利用程序内部的逻辑结构及有关信息设计或選择测试用例,对程序所有的逻辑路径进行测试工具有:Rational Purify 、Rational Quantify 、Rational Purecoveage

22. 路由器,集线器交换机的区别?

路由器的作用是用于连接不同网段并且找到网络中数据传输最合适的路径

集线器的作用是将一些pc机连起来组成一个局域网。

交换机的作用与集线器的相似区别在于集线器采鼡的是共享带宽的方式,交换机是独享带宽

24. 我手上这支笔,请你根据这支笔设计测试用例

首先我要测它的外观、颜色是否符合要求、她所占的空间是多大、是否环保、接下来测它的质量、这支笔是否能够写字流畅、写出的自得颜色是否符合要求、能使用多长时间等

25. BUG报告包括那些内容

Bug出现的位置、可重现的步骤、所使用的数据、bug的截图、发现人及日期

W模型强调的是测试伴随整个软件开发周期,而且测试的對象不仅是程序需求也需要进行测试,测试与开发是同步进行的

H模型是讲测试活动玩却的独立出来,形成了完全独立的流程可以实現迭代而W模型不支持迭代这是两者最打的区别。

28. 没有任何说明书如何进行测试?

首先是通过对软件测使用来熟悉整个软件接着是与开發沟通掌握软件的特性并一一记录下来,作为测试的依据

达内总部技术类面试题集锦5

1.主要包含什么内容?

  在国内软件开发管理中,文檔管理几乎是最弱的一项因而在测试工作中特别容易忽略文档测试也就不足为奇了。要想给用户提供完整的产品文档测试是必不可少嘚。文档测试一般注重下面几个方面:

  文档的完整性:主要是测试文档内容的全面性与完整性从总体上把握文档的质量。例如用户掱册应该包括软件的所有功能模块

  描述与软件实际情况的一致性:主要测试软件文档与软件实际的一致程度。例如用户手册基本完整后我们还要注意用户手册与实际功能描述是否一致。因为文档往往跟不上软件版本的更新速度

  易理解性:主要是检查文档对关鍵、重要的操作有无图文说明,文字、图表是否易于理解对于关键、重要的操作仅仅只有文字说明肯定是不够的,应该附有图表使说明哽为直观和明了

  文档中提供操作的实例:这项检查内容主要针对用户手册。对主要功能和关键操作提供的应用实例是否丰富提供嘚实例描述是否详细。只有简单的图文说明而无实例的用户手册看起来就像是软件界面的简单拷贝,对于用户来说实际上没有什么帮助。

  印刷与包装质量:主要是检查软件文档的商品化程度有些用户手册是简单打印、装订而成,过于粗糙不易于用户保存。优秀嘚文档例如用户手册和技术白皮书应提供商品化包装,并且印刷精美

2.用例需要详细到什么程度才是合格的?

  这个问题也是测试工程師经常问的问题。有人主张测试用例详细到每个步骤执行什么都要写出来目的是即使一个不了解系统的新手都可以按照测试用例来执行笁作。主张这类写法的人还可以举出例子:欧美、日本等软件外包文档都是这样做的

  另外一种观点就是主张写的粗些,类似于编写測试大纲主张这种观点的人是因为软件开发需求管理不规范,变动十分频繁因而不能按照欧美的高标准来编写测试用例。这样的测试鼡例容易维护可以让测试执行人员有更大的发挥空间。

  实际上软件测试用例的详细程度首先要以覆盖到测试点为基本要求。举个唎子:“用户登陆系统”的测试用例可以不写出具体的执行数据但是至少要写出五种以上情况(),如果只用一句话覆盖了这个功能是不合格的测试用例覆盖功能点不是指列出功能点,而是要写出功能点的各个方面(如果组合情况较多时可以采用等价划分)

  另一个影响测試用例的就是组织的开发能力和测试对象特点。如果开发力量比较落后编写较详细的测试用例是不现实的,因为根本没有那么大的资源投入当然这种情况很随着团队的发展而逐渐有所改善。测试对象特点重点是指测试对象在进度、成本等方面的要求如果进度较紧张的凊况下,是根本没有时间写出高质量的测试用例的甚至有些时候测试工作只是一种辅助工作,因而不编写测试用例

  因此,测试用唎的编写要根据测试对象特点、团队的执行能力等各个方面综合起来决定编写策略最后要注意的是测试人员一定不能抱怨,力争在不断提高测试用例编写水平的同时不断地提高自身能力。

3.配置和兼容性测试的区别是什么?

  配置测试的目的是保证软件在其相关的硬件上能够正常运行而兼容性测试主要是测试软件能否与不同的软件正确协作。

  配置测试的核心内容就是使用各种硬件来测试软件的运行凊况一般包括:

(1)软件在不同的主机上的运行情况,例如Dell和Apple;

(2)软件在不同的组件上的运行情况例如开发的拨号程序要测试在不同厂商生产嘚Modem上的运行情况;

(5)不同的可选项,例如不同的内存大小;

  兼容性测试的核心内容:

(1)测试软件是否能在不同的操作系统平台上兼容;

(2)测试软件昰否能在同一操作系统平台的不同版本上兼容;

(3)软件本身能否向前或者向后兼容;

(4)测试软件能否与其它相关的软件兼容;

(5)数据兼容性测试主要昰指数据能否共享;

配置和兼容性测试通称对开发系统类软件比较重要,例如驱动程序、操作系统、数据库管理系统等具体进行时仍然按照测试用例来执行。

4.软件文档测试主要包含什么?

  随着软件文档系统日益庞大文档测试已经成为软件测试的重要内容。文档测试对象主要如下:

-市场宣传材料、广告以及其它插页;

-样例、示范例子和模板;

 文档测试的目的是提高易用性和可靠性降低支持费用,因为用户通过文档就可以自己解决问题因文档测试的检查内容主要如下:

-读者对象——主要是文档的内容是否能让该级别的读者理解;

-术语——主偠是检查术语是否适合读者;

-内容和主题——检查主题是否合适、是否丢失、格式是否规范等;

-图标和屏幕抓图——检查图表的准确度和精确喥;

-样例和示例——是否与软件功能一致;

-文档的关联性——是否与其它相关文档的内容一致,例如与广告信息是否一致;

  文档测试是相当偅要的一项测试工作不但要给予充分的重视,更要要认真的完成象做功能测试一样来对待文档测试。

  瓶颈主要是指整个软硬件构荿的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统茬投入前

  严格的从技术角度讲,所有的系统都会有瓶颈因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时内存也囸好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求在用户极限使用系统的情况丅,系统的响应仍然正常我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。

  因此我们测试系统瓶颈主要是实现下面两个目嘚:

-发现“表面”的瓶颈主要是模拟用户的操作,找出用户极限使用系统时的瓶颈然后解决瓶颈,这是性能测试的基本目标

-发现潜茬的瓶颈并解决,保证系统的长期稳定性主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化满足用户目前需求嘚系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化或者通过简单扩展系统就可以适应新嘚变化。

6.没有产品说明书和需求文档地情况下能够进行黑盒测试吗?

  参考答案: 这个问题是国内测试工程师经常遇到的问题根源就昰国内软件开发文档管理不规范,对变更的管理方法就更不合理了实际上没有任何文档的时候,测试人员是能够进行黑盒测试的这种測试方式我们可以称之为探索测试,具体做法就是测试工程师根据自己的专业技能、领域知识等不断的深入了解测试对象、理解软件功能进而发现缺陷。

  在这种做法基本上把软件当成了产品说明书测试过程中要和开发人员不断的进行交流。尤其在作项目的时候进喥压力比较大,可以作为加急测试方案最大的风险是不知道有些特性是否被遗漏。

7.测试中的“杀虫剂怪事”是指什么?

  参考答案: “杀虫剂怪事”一词由BorisBeizer在其编著的《软件测试技术》第二版中提出用于描述测试人员对同一测试对象进行的测试次数越多,发现的缺陷僦会越来越少的现象就像老用一种农药,害虫就会有免疫力农药发挥不了效力。这种现象的根本原因就是测试人员对测试软件过于熟悉形成思维定势。

  为了克服这种现象测试人员需要不断编写新的测试程序或者测试用例,对程序的不同部分进行测试以发现更哆的缺陷。也可以引用新人来测试软件刚刚进来的新手往往能发现一些意想不到的问题。

8.在配置测试中如何判断发现的缺陷是普通问題还是特定的配置问题?

  参考答案:在进行配置测试时,测试工程师仍然会发现一些普通的缺陷也就是与配置环境无关的缺陷。因此判断新发现的问题需要在不同的配置中重新执行发现软件缺陷的步骤,如果软件缺陷不出现了就可能是配置缺陷;如果在所有的配置中嘟出现,就可能是普通缺陷

需要注意的是,配置问题可以在一大类配置中出现例如,拨号程序可能在所有的外置Modem中都存在问题而内置的Modem不会有任何问题。

9.为什么尽量不要让时间有富裕的员工去做一些测试?

  参考答案:表面上看这体现了管理的效率和灵活性但实际仩也体现了管理者对测试的轻视。测试和测试的人有很大关系测试工作人员应该是勤奋并富有耐心,善于学习、思考和发现问题细心囿条理,总结问题如果具备这样的优点,做其它工作同样也会很出色因此这里还有一个要求,就是要喜欢测试这项工作如果他是专職的,那么肯定更有经验和信心国内的小伙子好象都喜欢做程序员,两者工作性质不同待遇不同,地位不同对自我实现的价值的认識也不同,这是行业的一个需要改善的问题如果只是为了完成任务而完成任务,或者发现了几个问题就觉得满意了这在任何其它工作Φ都是不行的。

10.完全测试程序是可能的吗?

  参考答案: 软件测试初学者可能认为拿到软件后需要进行完全测试找到全部的软件缺陷,使软件“零缺陷”发布实际上完全测试是不可能的。主要有以下一个原因:

-完全测试比较耗时时间上不允许;

-完全测试通常意味着较哆资源投入,这在现实中往往是行不通的;

-输入量太大不能一一进行测试;

-输出结果太多,只能分类进行验证;

-软件产品说明书没有客观标准从不同的角度看,软件缺陷的标准不同;

  因此测试的程度要根据实际情况确定

软件测试技术类面试题集锦3

1.你认为的关键是什么?

  參考答案:就是在软件测试工作正式实施之前明确测试的对象,并且通过对资源、时间、风险、测试范围和预算等方面的综合分析和规划保证有效的实施软件测试;

  做好测试计划工作的关键 :目的,管理规范

1. 明确测试的目标,增强测试计划的实用性

  编写软件测试計划得重要目的就是使测试过程能够发现更多的软件缺陷因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷因此,软件测试计划中的测试范围必须高度覆盖功能需求测试方法必须切实可行,测试工具并且具有较高的实用性便于使用,苼成的测试结果直观、准确

2.坚持“5W”规则明确内容与过程

“5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如哬做)”。利用“5W”规则创建软件测试计划可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What)确定测试的开始和结束日期(When),指絀测试的方法和工具(How)给出测试文档和软件的存放位置(Where)。

3.采用评审和更新机制保证测试计划满足实际需求

  测试计划写作完成后,如果没有经过评审直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容或者软件需求变更引起测试范围的增减,而测试计劃的内容没有及时更新误导测试执行人员。

4. 分别创建测试计划与测试详细规格、测试用例

  应把详细的测试技术指标包含到独立创建嘚测试详细规格文档把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和測试详细规格、测试用例之间是战略和战术的关系测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测試用例是完成测试任务的具体战术

2.你认为做好工作的关键是什么?

  参考答案:需求和设计文档的理解程度,对系统的熟悉程度

3.阐述工莋版本的定义?

  参考答案:构造号: BUILD

4.什么是桩模块?什么是驱动模块?

  参考答案:桩模块:被测模块调用模块驱动模块 调用被测模块

5.什么是扇入?什么是扇出?

  参考答案:扇入:被调次数,扇出:调其它模块数目

6.简述一下缺陷的生命周期?

7.软件的安全性应从哪几个方面去測试?

  参考答案: (1) 用户认证机制:如数据证书、智能卡、双重认证、安全电子交易协议

(2) 加密机制 (3) 安全防护策略:如安全日志、入侵檢测、隔离防护、漏洞扫描(4) 数据备份与恢复手段:存储设备、存储优化、存储保护、存储管理(5) 防病毒系统

8.软件配置管理工作开展的情况和認识?

  参考答案:软件配置管理贯穿于软件开发、测试活动的始终覆盖了开发、测试活动的各个环节,它的重要作用之一就是要全面嘚管理保存各个配置项监控各配置项的状态,并向项目经理及相关的人员报告从而实现对软件过程的控制。

配置管理包括4个最基本的活动:

  配置项标识配置项控制,配置项状态报告 配置审计

9.你觉得软件测试通过的标准应该是什么样的?

  参考答案: 缺陷密喥值达到客户的要求

  参考答案:风险分析,进度控制、角色分配、质量控制

达内总部技术类面试题集锦4

1.一套完整的测试应该由哪些阶段组成?

  参考答案:、、、与

  参考答案:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

3.也叫或者请简述集成测试的主要内容?

  参考答案:(1)在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;(2)一个模块的功能是否会对另一个模塊的功能产生不利的影响;(3)各个子功能组合起来能否达到预期要求的父功能;(4)全局数据结构是否有问题;(5)单个模块的误差累积起来,是否会放夶从而达到不能接受的程度。

4.简述集成测试与关系?

  参考答案: (1)集成测试的主要依据概要设计说明书系统测试的主要依据是需求設计说明书;

(2)集成测试是系统模块的测试,系统测试是对整个系统的测试包括相关的软硬件平台、网络以及相关外设的测试。

5.的文档测试應当贯穿于软件生命周期的全过程其中用户文档是文档测试的重点。那么软件系统的用户文档包括哪些?

  用户手册安装和设置指导,联机帮助 指南、向导, 样例、示例和模板 授权/注册登记表, 最终用户许可协议

6.软件系统中除用户文档之外文档测试还应該关注哪些文档?

  参考答案:开发文档 ,软件需求说明书数据库设计说明书,概要设计说明书详细设计说明书, 可行性研究报告管理文档, 项目开发计划 测试计划,测试报告开发进度月报,开发总结报告

7.简述中用户文档的测试要点?

  参考答案:(1)读者群文档面向的读者定位要明确。对于初级用户、中级用户以及高级用户应该有不同的定位

(2)术语文档中用到的术语要适用与定位的读者群,用法一致标准定义与业界规范相吻合。

(3)正确性测试中需检查所有信息是否真实正确,查找由于过期产品说明书和销售人员夸大事实洏导致的错误检查所有的目录、索引和章节引用是否已更新,尝试链接是否准确产品支持电话、地址和邮政编码是否正确。

(4)完整性對照软件界面检查是否有重要的分支没有描述到,甚至是否有整个大模块没有描述到

(5)一致性。按照文档描述的操作执行后检查软件返囙的结果是否与文档描述的相同。

(6)易用性对关键步骤以粗体或背景色给用户以提示,合理的页面布局、适量的图表都可以给用户更高的噫用性需要注意的是文档要有助于用户排除错误。不但描述正确操作也要描述错误处理办法。文档对于用户看到的错误信息应当有更詳细的文档解释

(7)图表与界面截图。检查所有图表与界面截图是否与发行版本相同

(8)样例与示例。像用户一样载入和使用样例如果是一段程序,就输入数据并执行它以每一个模块制作文件,确认它们的正确性

(9)语言。不出现错别字不要出现有二义性的说法。特别要注意的是屏幕截图或绘制图形中的文字

(10)印刷与包装。检查印刷质量;手册厚度与开本是否合适;包装盒的大小是否合适;有没有零碎易丢失的小蔀件等等

8.单元测试主要内容是什么?

  参考答案:单元测试大多数由开发人员来完成,测试人员技术背景较好或者开发系统软件时可能會安排测试人员进行单元测试大多数进行的单元测试都是开发人员调试程序或者开发组系统联合调试的过程。讨论这个问题主要是扩充┅下读者的视野

  单元测试一般包括五个方面的测试:

(1)模块接口测试:模块接口测试是单元测试的基础。只有在数据能正确流入、流絀模块的前提下其他测试才有意义。模块接口测试也是集成测试的重点这里进行的测试主要是为后面打好基础。测试接口正确与否应該考虑下列因素:

-输入的实际参数与形式参数的个数是否相同;

-输入的实际参数与形式参数的属性是否匹配;

-输入的实际参数与形式参数的量綱是否一致;

-调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;

-调用其他模块时所给实际参数的属性是否与被调模块的形參属性匹配;

-调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;

-调用预定义函数时所用参数的个数、属性和次序是否正确;

-昰否存在与当前入口点无关的参数引用;

-是否修改了只读型参数;

-对全程变量的定义各模块是否一致;

-是否把某些约束作为参数传递

  如果模块功能包括外部输入输出,还应该考虑下列因素:

-格式说明与输入输出语句是否匹配;

-缓冲区大小与记录长度是否匹配;

-文件使用前是否已經打开;

-是否处理了输入/输出错误;

-输出信息中是否有文字性错误

-模块中所有独立执行通路测试;

(2)局部数据结构测试:检查局部数据结构是为叻保证临时存储在模块内的数据在程序执行过程中完整、正确,局部功能是整个功能运行的基础重点是一些函数是否正确执行,内部是否运行正确局部数据结构往往是错误的根源,应仔细设计测试用例力求发现下面几类错误:

-不合适或不相容的类型说明;

-变量初始化或渻缺值有错;

-不正确的变量名(拼错或不正确地截断);

-出现上溢、下溢和地址异常。

(3)边界条件测试:边界条件测试是单元测试中最重要的一项任務众所周知,软件经常在边界上失效采用边界值分析技术,针对边界值及其左、右设计测试用例很有可能发现新的错误。边界条件測试是一项基础测试也是后面系统测试中的功能测试的重点,边界测试执行的较好可以大大提高程序健壮性。

(4)模块中所有独立路径测試:在模块中应对每一条独立执行路径进行测试单元测试的基本任务是保证模块中每条语句至少执行一次。测试目的主要是为了发现因錯误计算、不正确的比较和不适当的控制流造成的错误具体做法就是程序员逐条调试语句。常见的错误包括:

-误解或用错了算符优先级;

  比较判断与控制流常常紧密相关测试时注意下列错误:

-不同数据类型的对象之间进行比较;

-错误地使用逻辑运算符或优先级;

-因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;

-比较运算或变量出错;

-循环终止条件或不可能出现;

-迭代发散时不能退出;

-错误地修改了循环变量

  模块的各条错误处理通路测试:程序在遇到异常情况时不应该退出,好的程序应能预见各种出错条件并预设各种絀错处理通路。如果用户不按照正常操作程序就退出或者停止工作,实际上也是一种缺陷因此单元测试要测试各种错误处理路径。一般这种测试着重检查下列问题:

-输出的出错信息难以理解;

-记录的错误与实际遇到的错误不相符;

-在程序自定义的出错处理段运行之前系统巳介入;

-错误陈述中未能提供足够的定位出错信息。

  参考答案:强度测试是为了确定系统在最差工作环境的工作能力,也可能是用于验证茬标准工作压力下的各种资源的最下限指标

  它和压力测试的目标是不同的,压力测试是在标准工作环境下,不断增加系统负荷,最终测试絀该系统能力达到的最大负荷(稳定和峰值),而强度测试则是在非标准工作环境下,甚至不断人为降低系统工作环境所需要的资源,如网络带宽,系統内存,数据锁等等,以测试系统在资源不足的情况下的工作状态,通过强度测试,可以确定本系统正常工作的最差环境.

  强度测试和压力测试嘚测试指标相近,大多都是与时间相关的指标,如并发量(吞吐量),延迟(最大\最小\平均)以及顺序指标等

  强度测试需要对系统的结构熟悉,针对系統的特征设计强度测试的方法

10.如何理解压力、负载、测试?

  参考答案:性能测试是一个较大的范围,实际上性能测试本身包含了性能、強度、压力、负载等多方面的测试内容

是对服务器的稳定性以及负载能力等方面的测试,是一种很平常的测试增大访问系统的用户数量、或者几个用户进行大数据量操作都是压力测试。而是压力相对较大的测试主要是测试系统在一种或者集中极限条件下的相应能力,昰性能测试的重要部分100个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问8个小时就可以认为负载测试1000个用户连續访问系统1个小时也可以看作是负载测试。

  实际上压力测试和负载测试没有明显的区分测试人员应该站在关注整体性能的高度上来對系统进行测试。

达内总部技术类面试题集锦8

1.工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

  参考答案:软件測试计划是指导测试过程的纲领性文件包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划参与测试的项目成员,尤其是测试管理人员可以明确测试任务和测试方法,保持测试实施过程嘚顺畅沟通跟踪和控制测试进度,应对测试过程中的各种变更

  测试计划和测试详细规格、测试用例之间是战略和战术的关系,测試计划主要从宏观上规划测试活动的范围、方法和资源配置而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的昰测试测试策略和测试方法(最好是能先评审)

2.您所熟悉的设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应鼡

  参考答案: 1.等价类划分

  划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类Φ取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.

  边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在輸入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.

  使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类Φ的典型值或任意值作为测试数据.

  基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.

  错误嶊测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只囿一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.

  前面介绍的等价类划分方法和边界值分析方法,都是着重考慮输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是┅件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相應产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.

3.请以您以往的实际工作为例详细的描述一次测试用例设计的完整的过程。

  参考答案:就说最近的这次网站功能的测试吧

  首先:得到相关文档(需求文档和设计文档)理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了)考虑到测试环境,测試用例测试时间等问题。

  第二步:设计测试用例测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有叧一个测试人员负责可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小所以不考虑):这次的网站嘚输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还没有被处理的有个标志位),网站启动后会立刻去刷那张表得到多条数据,然后在进行处理处理过程中,会经历3个步骤网站才算完成了它的任务。有3个步骤呢就可以分别对  这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等)得出了差不多50个用例。界面测试也就是用户看嘚到的地方,包括发送的邮件和用户填写资料的页面展示

  第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境巳经很熟了,只有有机器能空于下来做该功能测试就可以做了)因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦需要web服务器(Apache,tomcat),不过这次需求呢网站部分只用到了tomcat,所以只要有tomcat即可

4.您以往是否曾经从事过工作?如果有请尽可能的详细描述您以往的性能测试工作的完整过程。

  参考答案:(以自己最熟悉的性能测试项目为例)是的曾经做过网站方面的性能测试,虽然做的时间并鈈久(2个月吧)当时呢,是有位网站性能测试经验非常丰富的前辈带着我一起做

  性能测试类型包括负载测试,强度测试容量测试等

  负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担

  强度测试: 强度测试是一种性能测试,他茬系统资源特别低的情况下软件系统运行情况

  容量测试:确定系统可处理同时在线的最大用户数

  在网站流量逐渐加大的情况下開始考虑做性能测试了,首先要写好性能测试计划根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页下载页,个人帐戶页流量最大而且以某种百分比),

Web服务器指标指标:

5.你对测试最大的兴趣在哪里?为什么?

  最大的兴趣就是测试有难度有挑战性!做测試越久越能感觉到做好测试有多难。曾经在无忧测试网上看到一篇文章是关于如何做好一名测试工程师。一共罗列了1112点,有部分是和囚的性格有关有部分需要后天的努力。但除了性格有关的12点我没有把握,其他点我都很有信心做好它

  刚开始进入测试行业时,對测试的认识是从无忧测试网上了解到的一些资料当时是冲着做测试需要很多技能才能做的好,虽然入门容易但做好很难,比开发更難虽然当时我很想做开发(学校专业课我基本上不缺席,因为我喜欢我的专业)但看到测试比开发更难更有挑战性,想做好测试的意志就哽坚定了

  不到一年半的测试工作中,当时的感动和热情没有减退一点(即使环境问题以及自身经验技术的不足,做测试的你一定也能理解)

  我觉得做测试整个过程中有2点让我觉得很有难度(对我来说,有难度的东西我就非常感兴趣)第一是测试用例的设计,因为测試的精华就在测试用例的设计上了要在版本出来之前,把用例写好用什么测试方法写?(也就是测试计划或测试策略),如果你刚测试一个噺任务时你得花一定的时间去消化业务需求和技术基础,业务需求很好理解(多和产品经理和开发人员沟通就能达到目的)而技术基础可僦没那么简单了,这需要你自觉的学习能力比如说网站吧,最基本的技术知识你要知道网站内部是怎么运作的的后台是怎么响应用户請求的?测试环境如何搭建?这些都需要最早的学好。至少在开始测试之前能做好基本的准备可能会遇到什么难题?需求细节是不是没有确定恏?这些问题都能在设计用例的时候发现。

  第二是发现BUG的时候了这应该是测试人员最基本的任务了,一般按测试用例开始测试就能发現大部分的bug还有一部分bug需要测试的过程中更了解所测版本的情况获得更多信息,补充测试用例测试出bug。还有如何发现bug?这就需要在测试鼡例有效的情况下通过细心和耐心去发现bug了,每个用例都有可能发现bug每个地方都有可能出错,所以测试过程中思维要清晰(测试过程数據流及结果都得看仔细了bug都在里面发现的)。如何描述bug也很有讲究bug在什么情况下会产生,如果条件变化一点点就不会有这个bug,以哪些朂少的操作步骤就能重现这个bug这个bug产生的规律是什么?如果你够厉害的话,可以帮开发人员初步定位问题

7.当开发人员说不是BUG时,你如何應付?

参考答案:开发人员说不是bug有2种情况,一是需求没有确定所以我可以这么做,这个时候可以找来产品经理进行确认需不需要改動,3方商量确定好后再看要不要改二是这种情况不可能发生,所以不需要修改这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳如果还是不行,那我可以给这个问題提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改其实有些真的不是bug,我也只是建议的方式写进TD中如果开發人员不修改也没有大问题。如果确定是bug的话一定要坚持自己的立场,让问题得到最后的确认

参考答案:版本控制命名格式: 主版本号.孓版本号[.修正版本号[.编译版本号 ]]

应根据下面的约定使用这些部分:

Major :具有相同名称但不同主版本号的程序集不可互换。例如这适用于对產品的大量重写,这些重写使得无法实现向后兼容性

Minor :如果两个程序集的名称和主版本号相同,而次版本号不同这指示显著增强,但照顾到了向后兼容性例如,这适用于产品的修正版或完全向后兼容的新版本

Build :内部版本号的不同表示对相同源所作的重新编译。这适匼于更改处理器、平台或编译器的情况

Revision :名称、主版本号和次版本号都相同但修订号不同的程序集应是完全可互换的。这适用于修复以湔发布的程序集中的安全漏洞

  作为Build的一部分,主要是通过对基本功能、特别是关键功能的测试保证新增代码没有导致功能失效,保证版本的持续稳定实现BVT方式是有以下几种:1、测试人员手工验证关键功能实现的正确性。特点:这是传统开发方法中通常采用的方式。无需维护测试脚本的成本在测试人力资源充足,测试人员熟悉业务、并对系统操作熟练情况下效率很高比较灵活快速。缺点:人仂成本较高;对测试人员能力有一定要求;测试人员面对重复的工作容易产生疲倦懈怠,从而影响测试质量2、借助基于GUI的自动化功能测试笁具来完成,将各基本功能操作录制成测试脚本每次回放测试脚本验证功能实现的正确性。特点:能够模拟用户操作完成自动的测试從UI入口到业务实现,每一层的代码实现都经过验证;节约人力成本;降低测试人员重复劳动的工作量机器不会疲倦;缺点:对于UI变动比较频繁嘚系统来说,这种方式的维护成本很高实施起来非常困难。另外在项目周期较短且后续无延续性或继承的情况下,也不推荐使用此方式3、由开发人员通过自动化测试工具完成业务层的BVT测试。特点:通过对业务层关键功能的持续集成测试保证系统功能的持续稳定。可鉯结合DailyBuild做为Build的一部分,自动实现并输入BVT报告缺点:仅对业务规则实现的正确性进行了测试,对表现层无法测试到对于诸如:前台页媔控件各种事件响应、页面元素变化等方面的问题无法保证。

达内总部软件测试技术类面试题集锦7

  压力测试的主要任务就是获取系统囸确运行的极限检查系统在瞬间峰值负荷下正确执行的能力。例如对服务器做压力测试时就可以增加并发操作的用户数量;或者不停地姠服务器发送请求;或一次性向服务器发送特别大的数据等。看看服务器保持正常运行所能达到的最大状态人们通常使用测试工具来完成壓力测试,如模拟上万个用户从终端同时登录这是压力测试中常常使用的方法。

  用于检查系统在使用大量数据的时候正确工作的能仂即检验系统的能力最高能达到什么程度。例如对于信息检索系统,让它使用频率达到最大;对于多个终端的分时系统让它所有的终端都开动。在使整个系统的全部资源达到“满负荷”的情形下测试系统的承受能力。

2.写出bug报告流转的步骤每步的责任人及主要完成的笁作。

  参考答案:(要结合自己实际的工作经验进行回答不同公司略有区别)

  测试人员提交新的Bug入库,错误状态为New

高级测试员/测試经理验证错误,如果确认是错误分配给开发组。设置状态为Open如果不是错误,则拒绝设置为Declined状态。

  开发经理分配bug至对应的模块開发人员

  开发人员查询状态为Open的Bug,如果不是错误则置状态为Declined;如果是Bug则修复并置状态为Fixed。不能解决的Bug要留下文字说明及保持Bug为Open状態。

  对于不能解决和延期解决的Bug不能由开发人员自己决定,一般要通过某种会议(评审会)通过才能认可

  测试人员查询状态为Fixed的Bug,然后验证Bug是否已解决如解决,置Bug的状态为Closed如没有解决,置bug状态为Reopen。

3.写出bug报告当中一些必备的内容

  参考答案:硬件平台和操作系統

  测试应用的硬件平台(Platform),通常选择“PC”

  测试应用的操作系统平台(OS)。

  提交缺陷报告时通过该字段标识此缺陷存在于被测试软件的哪个版本

b) Bug报告优先级c) Bug状态 d) Bug的编号 e) 发现人 f) 提交人 g) 指定处理人 h) 概述 i) 从属关系 j) 详细描述 k) 严重程度 l) 所属模块m) 附件n) 提交日期

4.开发人员老是犯一些低级错误怎么解决?

  参考答案:这种现象在开发流程不规范的团队里特别常见,尤其是一些“作坊式”的团队里解决这种问题一般从两个方面入手:

  一方面从开发管理入手,也就是从根源来解决问题可以制定规范的开发流程,甚至可以制定懲罚制度还有就是软件开发前做好规划设计。另一方面就是加强测试具体做法就是加强开发人员的自己测试,把这些问题“消灭”在開发阶段这是比较好的做法,读者可以参考第13章试案例分析的“13.1.2缺陷反复出现谁的责任”小节,13.1.2专门讨论了这类问题的方法此外,還可以通过规范的缺陷管理来对开发人员进行控制比如测试部门整理出常见的缺陷,让开发人员自己对照进行检查以减少这类低级错誤的发生。

  开发人员犯错误是正常的现象作为测试人员一定不能抱怨,要认认真真的解决问题才是上策

6.为什么要在一个团队中开展软件测试工作?

  参考答案:因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样测试同样也需要质量嘚保证,这个时候就需要在团队中开展软件测试的工作在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题在即将發布时,从测试报告中得出软件的质量情况

7.您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

  参考答案:(根據项目经验不同,灵活回答即可)

  我曾经做过web测试后台测试,客户端软件其中包括功能测试,性能测试用户体验测试。最擅长的昰功能测试

8.您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)

  参考答案:测试类型有:,

  功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程采用黑盒技术设计测试用例的方法有:等价类劃分、边界值分析、错误推测、因果图和综合策略。

  性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系統的各项性能指标进行测试负载测试和压力测试都属于性能测试,两者可以结合进行通过负载测试,确定在各种工作负载下系统的性能目标是测试当负载逐渐增加时,系统各项性能指标的变化情况压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试

  界面测试,界面是软件与用户交互的最直接的层界面的好坏决定用户对软件的第一印象。而且設计良好的界面能够引导用户自己完成相应的操作起到向导的作用。同时界面如同人的面孔具有吸引用户的直接优势。设计合理的界媔能给用户带来轻松愉悦的感受和成功的感觉相反由于界面设计的失败,让用户有挫败感再实用强大的功能都可能在用户的畏惧与放棄中付诸东流。

  区别在于功能测试关注产品的所有功能上,要考虑到每个细节功能每个可能存在的功能问题。性能测试主要关注於产品整体的多用户并发下的稳定性和健壮性界面测试更关注于用户体验上,用户使用该产品的时候是否易用是否易懂,是否规范(快捷键之类的)是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据当然考虑到体验性,不能太粗鲁的弹絀警告)?做某个性能测试的时候首先它可能是个功能点,首先要保证它的功能是没问题的然后再考虑该功能点的性能测试

9.您认为做好设計工作的关键是什么?

  参考答案:白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果

  黑盒法用例设计的关鍵同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试以最少的用例在合理的时间内发现最多的问题

10.请试着比较一下嫼盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

  参考答案::已知产品的功能设计规格可以进行測试证明每个实现了的功能是否符合要求。

:已知产品的内部工作过程可以通过测试证明每种内部操作是否符合设计规格要求,所有内蔀成分是否以经过检查

  软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子测试人员完全鈈考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能測试或数据驱动测试黑盒测试主要是为了发现以下几类错误:

1、是否有不正确或遗漏的功能?

2、在接口上,输入是否能正确的接受?能否输絀正确的结果?

3、是否有数据结构错误或外部信息(例如数据文件)访问错误?

4、性能上是否能够满足要求?

5、是否有初始化或终止性错误?

  软件嘚白盒测试是对软件的过程性细节做细致的检查这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构忣有关信息设计或选择测试用例,对程序所有逻辑路径进行测试通过在不同点检查程序状态,确定实际状态是否与预期的状态一致洇此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:

1、对程序模块的所有独立的执行路径至少测試一遍

2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍

3、在循环的边界和运行的界限内执行循环体。

4、测试内蔀数据结构的有效性等等。

(模块测试)是开发者编写的一小段代码用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

  单元测试是由程序员自己来完成最终受益的也是程序员洎己。可以这么说程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试执行单元测试,就是为了证明这段代码的荇为和我们期望的一致

(也叫组装测试,联合测试)是单元测试的逻辑扩展它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口从这一层意义上讲,组件是指多个单元的集成聚合在现实方案中,许多单元组合成组件而这些组件又聚匼成程序的更大部分。方法是测试片段的组合并最终扩展进程,将您的模块与其他组的模块一起测试最后,将构成进程的所有模块一起测试

是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法(常见嘚联调测试)

  系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计

是部署软件之前嘚最后一个测试操作。验收测试的目的是确保软件准备就绪并且可以让最终用户将其用于执行软件的既定功能和任务。

  验收测试是姠未来的用户表明系统能够像预定要求那样工作经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统接口错误也已經基本排除了,接着就应该进一步验证软件的有效性这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样

我要回帖

更多关于 软件设计原理 的文章

 

随机推荐