1、软件测试工程师面试宝典软件测试工程师必备素质计算机专业技能基本常识l 计算机基础知识l 软件测试基本知识软件质量,软件质量管理基础知识,软件测试概念,软件测试标准,软件测试项目管理,测试流程管理、缺陷管理、软件测试技术及方法,自动化测试概念、框架、流程,自动化测试技术等知识。好多人觉得自动化测试就是使用自动化测试工具,其实各种工具只是自动化测试实施的一个有效利器,如何建立一个脱离工具的自动化测试框架远远比研究如何使用测试工具复杂,困难的多。l 软件开发基本知识(软件工程知识,理解软件开发方法及过程)编程能力C/C+,VB,VC,Java,.net,ASP,Javascript等。具体要求要视公
2、司的具体项目或产品来定。但一般以C为基本要求。具备一定的算法设计能力,测试工程师至少应该掌握Java、C#、C+之类的一门语言以及相应的开发工具。数据库知识SQL Server,Oracle,Mysql,Sybase等。一般对测试人员的要求就是要求会使用,然后熟练使用SQL语句进行查询,修改,添加,删除数据操作。数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL。测试人员至少应该掌握Mysql、MS Sqlserver、Oracle等常见数据库的使用。操作系统Windows,Linux(常用的RedHat,SUSE,Debian)/Un
3、ix(FreeBSD,Solaris,HP-UX,AIX,Mac)系统。操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unix、linux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而WebLogic、Websphere等中间件的安装、配置很多时候也需要掌握一些。 网络知识在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常遇到的知识。 自动化测试工具功能测试工具:Quick Test Pro, Win Runner, Robot, QARun 性能测试工具:LoadRunner
4、, Robot, QALoad, WebLoad, Was 白盒测试工具:Purify, DevParter, Logiscope, C+Test, JTest 测试管理工具:Test Director, Test Manager, QACenter, Test View Manager缺陷管理工具:ClearQuest, TrackRecord, Bugzilla实战能力(工作经验)u 公司的测试流程u 公司的具体缺陷管理流程(提交bug报告,追踪bug状态)u 测试环境的搭建及管理u 测试计划,测试用例,测试报告等相关文档的编写外语u 英语u 日语行业知识行业主要指测试人员所在企业涉及的行
5、业领域,例如很多IT企业从事石油、电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。 很多时候,软件运行起来没有异常,但是功能不一定正确。只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。 行业知识与工作经验有一定关系,通过时间即可以完成积累。59软件测试基本理论知识试题汇总一、判断题 1软件测试的目的是尽可能多的找出软件的缺陷。( )2Beta 测试是验收测试的一种。( )3验收测试是由最终用户来实施的。( )4项目立项前测试人员不需要提
6、交任何工件。( )5单元测试能发现约80%的软件缺陷。( )6代码评审是检查源代码是否达到模块设计的要求。( )7自底向上集成需要测试员编写驱动程序。( )8负载测试是验证要检验的系统的能力最高能达到什么程度。( )9测试人员要坚持原则,缺陷未修复完坚决不予通过。( )10代码评审员一般由测试员担任。( )11我们可以人为的使得软件不存在配置问题。( )12集成测试计划在需求分析阶段末提交。( )13、好的测试员不懈追求完美。( ) 14、测试程序仅仅按预期方式运行就行了。( ) 15、不存在质量很高但可靠性很差的产品。( ) 16、软件测试员可以对产品说明书进行白盒测试。() 17、静态白盒
7、测试可以找出遗漏之处和问题。( ) 18、总是首先设计白盒测试用例。( ) 19、可以发布具有配置缺陷的软件产品。( ) 20、所有软件必须进行某种程度的兼容性测试。( ) 21、所有软件都有一个用户界面,因此必须测试易用性。( ) 22、测试组负责软件质量。( )参考答案1、Y软件测试的目的就是为了发现软件中的缺陷,从这个意义上面说上面的这个论断是正确的。不少人会认为软件测试可以保证软件的质量,其实这个观点是错误,测试只是软件质量控制中的一个角色,其活动并不能达成软件质量保证的效果。所以不要认为一个公司里面如果有了软件测试人员,产品的质量就会好起来。2、YBeat测试和验收测试是两种不同的测
8、试。验收测试的目的是为了以发现”未实现的需求”为目的,以评估”适合使用”为目标,该类测试的不是以发现缺陷为主要目的。beta测试是一模拟真实的使用环境从而发现缺陷的一种测试。所以两者之间的是非包容关系。3、N上面说到了验收测试的目的和目标,所以验收测试也可是是软件生产的企业内部人员来实施。例如产品经理。当软件以项目的形式出现,那么验收测试由最终用户来实施的情况是比较长见的。但是对于产品形式的软件,生产企业内部的验收测试会更多。4 N 应该说这道题目没有明确的答案,在项目立项前测试人员是不是要把一些准备工作以工件的形式给记录下来是完全取决于该企业的软件开发过程的要求。同时不同企业,立项前要达成的
9、一些必要条件也是大相径庭的。应该说这一题目出的不是很好,如果你是出题人这家企业的测试工程师,那么就应该有一个明确的答案。5 N 同样这一题目也没有标准答案。因为该数据的来源和其统计的方法,样本都没有一个工业标准。这样出来的数据同样不具有权威性。这里我可以说一个简单的例子,在用ASP,php这类脚本语言开发网页的时候是根本没有复杂的单元测试。那么这样的数字应用在网站开发上面是否有意义,还是值得商榷的。所以这道题目出的不好,没有明确的答案6 N 代码审查是一种静态技术,从这个意义上说代码复查是需要和其他的一些动态测试技术配合才能检查代码是否符合设计的要求7 Y 这道题目大家看下top-down 和
10、 down-top的集成测试示意图就能得出明确的答案。这里需要了解的是什么是驱动测试程序,什么是桩程序。如果集成组件数量众多,多关系层次,那么不论是什么类型的集成测试。驱动程序和桩程序都是需要开发的。8 N 关于负载测试和压力测试在论坛中的帖子中有详细的解释,大家可以去看一下就能得出正确的答案9 N 同样,这一题没有正确的答案。缺陷是否修复是需要听取测试人员的意见,但测试人员的意见非决定性。所以还是要看一个企业赋予测试人员有多大的权力。10 N 如果测试员有这个水平,那么当然是可以参加的。不过大多数的企业不会让普通的测试人员参与代码的评审。11 N 首先大家先搞清楚什么是配置管理什么是软件配置
11、,从这道题目中看不出出题人想问的是关键工程中的配置管理还是单纯的软件配置。但是可以肯定的是不论是何种情况,答案均是否定的。 12 N 集成测试计划在开发人员完成软件集成计划之后就可以开始进行了。所以在需求分析阶段之后提交是不现实的事情,应该在软件的设计阶段后,编码前。13、 N 14、 N 15、 N 软件可靠性是软件系统在规定的时间内及规定的环境条件下,完成规定功能的能力软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。16、 N 17、Y 18、 N 1
12、9、 Y 20、 Y 21、 Y22、 N 软件测试是保障软件质量的手段之一,但不是唯一手段,软件测试是软件产品质量高的必要非充分条件。二、不定项选择题1软件验收测试的合格通过准则是:( )A 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。B 所有测试项没有残余一级、二级和三级错误。C 立项审批表、需求分析文档、设计文档和编码实现一致。D 验收测试工件齐全。2软件测试计划评审会需要哪些人员参加?( ) A项目经理BSQA 负责人C配置负责人D测试组3下列关于alpha 测试的描述中正确的是:( )Aalpha 测试需要用户代表参加Balpha 测试不需要用户代表参加Cal
13、pha 测试是系统测试的一种Dalpha 测试是验收测试的一种4测试设计员的职责有:( )A制定测试计划B设计测试用例C设计测试过程、脚本D评估测试活动5软件实施活动的进入准则是:( )A需求工件已经被基线化B详细设计工件已经被基线化C构架工件已经被基线化D项目阶段成果已经被基线化6.下面哪些属于动态分析( ) A 代码覆盖率 B 模块功能检查 C 系统压力测试 D 程序数据流分析 7.下面哪些属于静态分析( ) A、 代码规则检查 B、 序结构分析 C、 序复杂度分析 D、 内存泄漏 8 从测试技术角度,正确的选择是( ),给出各自的含义? A、 静态测试 B、 黑盒测试 C、 动态测试 D
14、、 白盒测试 9 从测试阶段角度,测试正确的顺序是( ),同时给出所选择的正确策略含义和被测对象是什么? A、 单元测试 B、 集成测试 C、 系统测试 D、 确认测试 10、 下面角色不属于集成计划评审的是( ) A、 配置经理 B、 项目经理 C、 测试员 D、 编码员 11、软件测试设计活动主要有( ) A、 工作量分析 B、 确定并说明测试用例 C、 确立并结构化测试过程 D、 复审并评估测试覆盖 12、不属于集成测试步骤的是( )A、 制定集成计划 B、 执行集成测试 C、 记录集成测试结果 D、 回归测试 13、属于软件测试活动的输入工件的是( ) A、 软件工作版本 B、 可测试
15、性报告 C、 软件需求工件 D、 软件项目计划参考答案1、ABCD回答这道题,你必须是这家企业的员工。前面说到了验收测试的目的和目标,一个是需求必须实现,二是证明软件是适合使用的。这样能满足这两个通用标准就可以了。当然有些软件企业会对验收测试标准做一些调整。2、ABCD 上面的4种角色都需要参与 3、AD 首先大家需要知道alpha测试是系统级别的测试,该测试是在一个受控的环境中进行的。用户需要直接参与进来。所以答案应该是AD 4、BC合理的答案的是BC,同时要看软件企业对该类人员的职责是如何定义。5、ABC先要了解一下什么是基线。这个是软件配置管理中一个重要的概念。工作产品必须纳入到一定的基
16、线里面。所以选择ABC是必定的,至于是否选择D要看这家企业自身的标准了。6、BC 7、 ABC 8、CD 9、ABCD 10、A 11、ABCD 12、D 13、C三、填空题1、 软件实施活动的输出工件有_ 、_ 、_ 、_ 。 2、 代码评审主要做_工作。 3、 软件实施活动中集成员的职责是_。 4、 验证与确认软件实施活动主要有_、代码评审_、_ 、_ 、_ 、SQA 验证。 5、_表明测试已经结束。 6、 软件测试的目的是 _。 7、 软件测试主要分为_、_、_、_四类测试。 8、 软件测试活动有_、_、_ 、_ 、_ 、_ 、_、_八个步骤。 9、 软件测试活动的输出工件有_、_、_、
17、_ 、_。 10、软件测试角色有_、_ 、_ 、_。 11软件验收测试包括_、_、_三种类型。12系统测试的策略有_、_、_、_、_、_、_、_、_、_、_、_、_、_、_等15 种方法。 13设计系统测试计划需要参考的项目文档有_、_、和_。 14对面向过程的系统采用的集成策略有_,_两种。 15通过画因果图来写测试用例的步骤为及把因果图转换为状态图共五个步骤。 参考答案 1、 无 2、关于代码和详细设计相一致、在编码阶段没有引入新的错误等方面的保证 3、无 4、验证与确认软件实施活动主要有需求规格说明验证 、软件测试团队组织管理 、设计规格说明验证 、代码验证 、软件测试计划管理 、交付验
18、证 、SQA 验证。5、测试需求中列出的所有功能及测试过程中发现缺陷的回归测试均已完成表明测试已经结束。 6、 软件测试的目的是 尽可能多的找出软件的缺陷。7、 软件测试主要分为单元测试、集成测试、系统测试、验收测试四类测试。 8、 软件测试活动有制定测试计划、方案、设计和生成测试用例 、准备测试数据 、执行测试管理缺陷 、生成测试报告 、测试评估、测试结束八个步骤。 9、 软件测试活动的输出工件有测试计划、测试方案、测试用例、测试报告 、缺陷报告 。 测试计划-输出测试计划测试设计-输出测试方案测试实现-输出测试用例、测试规程、测试脚本测试执行-输出测试报告测试日志缺陷报告那实施活动的输出工
19、件是不是有需求规格说明书、用户手册、开发总结、测试总结呢?10、软件测试角色有测试管理人员、测试方案工程师 、测试工程师 、测试员 。 11、软件验收测试包括正式验收测试、alpha测试、beta测试三种测试。 12系统测试的策略有功能测试、性能测试、文档测试、配置测试、安装和卸载的测试、用户界面测试、可用性测试、兼容性测试、易用性测试、安全测试、压力测试、负载测试、回归测试、比较测试、故障恢复测试等15 种方法。13设计系统测试计划需要参考的项目文档有软件测试计划、软件需求工件、和迭代计划。 14对面向过程的系统采用的集成策略有自顶向下,自底向上两种。 15通过画因果图来写测试用例的步骤为及
20、把因果图转换为状态图共五个步骤。 分析软件规格说明描述中的原因和结果,并为每个原因和结果赋予一个标识符。根据因果关系画因果图在因果图上用一些记号标明约束或限制条件把因果图转换成判定表根据判定表设计测试用例利用因果图生成测试用例的基本步骤是: 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。 分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系? 根据这些关系,画出因果图。 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号
21、标明约束或限制条件。 把因果图转换成判定表。 把判定表的每一列拿出来作为依据,设计测试用例四、名词解释软件工程、黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试、测试、测试、 驱动模块、桩模块、静态测试、 回归测试、动态测试、等价划分法、边界值分析法软件工程:概括的说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。软件测试: 标准定义:使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满
22、足规定的需求或弄清预期结果与实际结果之间的差别。最终目的是令客户满意。 针对测试人员的定义:以发现错误为目的,努力发现产品中每个可以想象到的故障或弱点的过程。 综合定义:软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程, 其目的是尽快尽早地发现在软件产品中所存在的各种问题与用户需求、预先定义的不一致性。黑盒测试(black-box testing):在知道产品应该具有的功能的条件下,检验每个功能是否都能正常使用的测试方法。 又称功能测试,指的是把被测的软件看作是一个黑盒子,完全不考虑程序的内部结构和处理过程,只检查程序功能是否能按照规格说明书的规定正常使
23、用,程序是否能适当地接受输入数据产生正确的输出信息,并且保持外部信息的完整性。黑盒测试是在程序接口进行的测试。白盒测试(white-box testing):在知道产产品内部工作过程的条件下,检验产品内部动作是否按照规格说明书的规定正常进行的测试方法。又称结构测试,指的是把程序看成装载一个透明的白盒子里面,也就是完全了解程序的结构和处理过程。按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。单元测试(unit-testing): 指对软件中的最小可测试单元进行检查和验证。集成测试(integration testing):指将通过测试的单元模块组装成系统或子系统,再进
24、行测试,重点测试不同模块的接口部分。系统测试(system-testing): 指的是将整个软件系统看作一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。验收测试(acceptance testing):又称确认测试,指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试。它的目标是验证软件的有效性。(Alpha)测试: 测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行的测试。开发者负责记录错误和使用中遇到的问题。 测试指的是由用户、测试人员、开发人员等共同参与的内部测试。(Beta)测试: 测试由软件的最终用户在一个或多个客户场
25、所进行。开发者通常不在现场,因此测试是软件在开发者不能控制的环境中的“真实”应用。 测试指的是内测后的公测,即完全交给最终用户测试。驱动模块(driver):模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测试模块并输出结果。桩模块(stub): 是指模拟被测模块所调用的模块。静态测试(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。动态测试(dynamic testing):是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。所以我们判断一个测试属于静态测试还是动态测试,唯一的标准就是
26、看是否运行程序。回归测试(regression testing): 是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。等价划分法(Equivalence Class Testing): 等价类划分法是一种黑盒测试技术,它不考虑程序的内部结构,只是根据软件的需求说明来对输入的范围进行细分,然后再从分出的每一个区域内选取一个有代表性的测试数据。边界值分析法(Boundary Value Testing):边界值分析方法是对等价类划分方法的补充。长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更
27、多的错误。五、简答题 请根据您以往的学习和工作经历,结合您的个人经验回答以下问题。您可以尽可能详细和完整的表达出自己的思想,如果书写空间不够,您可以将答案写在题目所在页的背面。如果需要稿纸请同接待人员联系。1、试述软件的概念和特点?软件复用的含义?构件包括哪些? 软件的概念:软件是程序、数据结构和相关文档的集合,用于实现所需要的逻辑方法、过程或控制。软件是把知识与技术紧密结合的智力成果,是在研制、开发中被创造出来的一种信息产品。 软件的特点:抽象性软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。不会磨损在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软件维护比硬件维护要
28、负责的多。软件开发工作最大、开发效率低、成本高,但复制容易、成本极低。对计算机系统的依赖性软件具有无形性,可以多次使用,但商业寿命较短。 软件复用(SoftWare Reuse): 软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费,提高软件生产力和质量的一种重要技术。 构件:构件是系统中实际存在的可更换部分,它实现特定的功能,符合一套接口标准并实现一组接口。构件代表系统中的一部分物理实施,包括软件代码(源代码、二进制代码或可执行代码)或其等价物(如脚本或命令文件)。2、瀑布模型和螺旋模型的主要区别是什么?(1)瀑布模型强调的保证软件的质量,忽略人力,时间,资源等成
29、本因素,以质量为第一目标,每次需求发生变更都要从头再来,适合于一些大型稳定的项目。 螺旋模型是一种增量迭代开发的模型,每一次循环都是一次版本的升级,可提高软件的适应能力。比较适合于前期需求不稳定,后期需求新增变更较多的项目。(2)瀑布模型是基于质量的, 是由文档驱动的。螺旋模型是风险驱动的,更需要经验丰富的风险评估知识和水平。3、软件开发模型和软件生命周期的概念是什么?两者有何区别? 软件生命周期是软件从提出开发开始到最终灭亡所经历的时期。大体上分为软件定义、软件开发和软件维护三个阶段。软件开发模型是软件开发全过程、软件开发活动以及它们之间关系的的结构框架。其作用是为软件项目的管理提供里程碑和
30、进度表,为软件开发提供原则和方法。软件开发模型主要有:以软件需求可完全确定为前提的瀑布模型在软件开发初期只能提供基本需求所采用的渐进式开发模型。如原型模型、螺旋模型 以形式化开发方法为基础的变换模型。4、净室软件工程的策略是什么?净室软件工程是一种在软件开发过程中强调建立正确性的需要的方法,通过在第一次正确地书写代码增量并在测试前验证它们的正确性,从而避免依赖于成本很高的错误消除过程。 净室软件工程可用如下三个关键策略来刻画:置于统计过程控制之下的增量开发,基于函数的规范、设计和验证以及统计测试和软件认证。采用这些策略可改进技术生产过程,可以降低软件开发中的风险,以合理的成本开发出高质量的软件
31、。5、什么是数据的对立性?有几个层次?数据独立性是指:应用程序和数据库的数据结构之间相互独立,不受影响。分为物理独立性和逻辑独立性两个层次。(1) 物理数据独立性:如果数据库的内模式要进行修改,即数据库的存储设备和存储方法有所变化,那么模式/内模式映象也要进行相应的修改,使概念模式尽可能保持不变。也就是对内模式的修改尽量不影响概念模式。(2) 逻辑数据独立性:如果数据库的概念模式要进行修改,如增加记录类型或增加数据项,那么外模式/模式映象也要进行相应的修改,使外模式尽可能保持不变。也就是概念模式的修改尽量不影响外模式和应用程序。6、网状、层次数据模型与关系数据模型的最大的区别是什么? 网状、层
32、次数据模型与关系数据模型的最大区别在于表示和实现实体之间的联系的方法:网状、层次数据模型是通过指针链,而关系数据模型是使用二维表。7、dbms读取一条记录时发生哪些事件?8、什么是软件质量?软件包是什么?概括地说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。软件包(SoftWare Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。软件包由一个基本配置和若干可选部件构成,既可以是源代码形式,也可以是目标码形式。用户手册和指南等文
33、档是软件包的重要组成部分。9、软件产品质量特性是什么? 确保软件质量优良程度的内部因素称为软件质量特性。比较权威的软件质量特性划分应推Boehm提出的十二个基本质量特性。分别为:设备无关性、完整性、精度、一致性、设备效率、可访问性、可通讯性、结构性、自说明性、简明性、易读性、可扩充性。10、什么是软件质量保证? 其主要任务是什么? 软件质量保证:为确保软件开发过程和结果符合预期要求而建立的一系列规程,以及依照规程和计划采取的一系列活动及其结果评价。 主要任务:(1)用户要求定义(2)力争不重复劳动(3)掌握开发新软件的方法(4)组织外部力量协作(5)排除无效劳动(6)发挥每个开发者的能力(7)
34、提高软件开发的工程能力(8)提高计划和管理质量 为了提高软件的质量和软件的生产率,软件质量保证的主要任务大致可归结为8点。 (1)用户要求定义:软件质量保证人员必须熟练掌握正确定义用户要求的技术,包括熟练使用和指导他人使用定义软件需求的支持工具。必须十分重视领导全体开发人员收集和积累有关用户业务领域的各种业务的资料和技术技能。 (2)力争不重复劳动:利用已有软件成果是提高软件质量和软件生产率的重要途径。为此,不要只考虑如何开发新软件,而首先应考虑哪些既有软件可以复用,并在开发过程中,随时考虑所生产软件的复用性。 (3)掌握开发新软件的方法:对开发新软件的方法已经过长期的探索和积累,最普遍公认的
35、成功方法就是软件工程学方法。标准化、设计方法论、工具化等都属此列。应当在开发新软件的过程中大力使用和推行软件工程学中所介绍的开发方法和工具。 (4)组织外部力量协作:一个软件自始至终由同一软件开发单位来开发也许是最理想的。但在现实中常常难以做到。因此需要改善对外部协作部门的开发管理。必须明确规定进度管理、质量管理、交接检查、维护体制等各方面的要求,建立跟踪检查的体制。 (5)排除无效劳动:最大的无效劳动是因需求规格说明有误、设计有误而造成的返工。定量记录返工工作量,收集和分析返工劳动花费的数据非常重要。另一种较大的无效劳动是重复劳动,即相似的软件在几个地方同时开发。这多是因软件开发计划不当,或
36、者开发信息不流畅造成的。为此,要建立互相交流、信息往来通畅、具横向交流特征的信息流通网。 (6)发挥每个开发者的能力:软件生产是人的智能生产活动,它依赖于人的能力和开发组织团队的能力。开发者必须有学习各专业业务知识、生产技术和管理技术的能动性。管理者或产品服务者要制定技术培训计划、技术水平标准,以及适用于将来需要的中长期技术培训计划。 (7)提高软件开发的工程能力:要想生产出高质量的软件产品必须有高水平的软件工程能力。即在软件开发环境或软件工具箱的支持下,运用先进的开发技术、工具和管理方法开发软件的能力。 (8)提高计划和管理质量:对于大型软件项目来说,提高工程项目管理能力极其重要。提高管理能
37、力的方法是重视和强化项目开发初期计划阶段的项目计划评价,计划执行过程中及计划完成报告的评价。将评价、评审工作在工程实施之前就列入整个开发工程的工程计划之中。正确地评价开发计划和实施结果,不仅可以提高软件开发项目管理的精确度,还可以积累项目管理经验资料,提高日后进行项目预算的精确度。所以对“计划”的质量管理非常重要。11、软件质量保证体系是什么? 国家标准中与质量保证管理相关的几个标准是什么? 他们的编号和全称是什么?软件质量保证体系为满足质量要求和实施质量管理,进行全部有计划和有系统的活动所需的组织结构、程序、过程和资源的总称。GBT 19001质量体系设计开发、生产、安装和服务的质量保证模式
38、(idtISO 9001)GBT 19002质量体系生产和安装的质量保证模式(idt ISO 9002)GBT 19003质量体系最终检验和试验的质量保证模式(idt ISO 9003)GBT 19004质量管理和质量体系要素指南(idt ISO 9004)12、为什么要进行软件测试?软件测试的目的是什么? 为什么进行单元测试? 任何软件在开发过程中都会留下缺陷,带有缺陷的软件产品如果提交出去,可能会给公司带来不可估量的损失,我们必须在客户之前发现尽可能多的问题,从而保障客户满意。测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。单元测试一般来说
39、非常必要:(1)现在强调测试的尽早介入。相对而言,单元测试会在开发比较早的阶段就会进行,发现和修改缺陷的成本比较低,效率比较高。(2)代码级的很多问题,通过相对后期的系统测试是很难发现的,或者发现问题的成本非常大。13、什么是软件测试?软件测试的目的与原则、策略以及软件测试的意义?软件测试:使用人工或自动手段,努力发现产品中每个可以想象到的故障或弱点的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。最终目的是令客户满意。软件测试原则:l 应该在测试开始之前的相当长时间,就制定出测试计划。l 测试应该从小规模开始,并逐步进行“大规模”测试l 穷举测试是不可能的。l 所
40、有的测试都应该能追溯到用户需求。l 应把“尽早和不断地进行软件测试”作为软件开发者的座右铭。实践证明单元测试能够尽早发现问题,减少后期测试的错误量。可以采用Junit和Jtest来辅助进行单元测试。 l 测试用例应由测试输入数据、测试执行步骤和与之对应的预期输出结果三部分组成。l 应当避免由程序员检查自己的程序。(指后期系统测试阶段,不包括单元测试) l 测试用例的设计要确保能覆盖所有可能路径。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题的输入条件。l 充分注意测试中的群集现象即缺陷的二八定理。经验表明,测试后程序残存的错误数目与
41、该程序中已发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。 l 严格执行测试计划,排除测试的随意性。 测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。l 应当对每一个测试结果做全面的检查。 l 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。 l 对于相对复杂的产品或系统来说,没有Bugs是不可能的,我们只能想办法把软件的Bug数控制在可以忍受的范围内。l 缺陷具有免疫性,测试人员要根据新版本
42、的特点去修改维护测试用例。l 为了达到最佳的测试效果,应该由独立的第三方来从事测试工作。软件测试策略: 数据完整性测试功能测试易用性原则(用户界面的测试、优秀UI的7个组成要素、软件中的辅助特性)性能测试配置测试兼容性测试本地化测试 软件测试策略是为软件工程过程定义的一个软件测试的模板,也就是把特定的测试用例方法放置进去的一系列步骤。 软件测试的策略、方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。l 静态测试与动态测试 所谓静态测试是指不
43、运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行。动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。动态测试包括:(1)功能确认与接口测试(2)覆盖率分析(3)性能分析(4)内存分析l 黑盒测试与白盒测试若测试规划是基于产品的功能,目的是检查程序各个功能是否能够实现,并检查其中的功能错误,则这种测试方法称为黑盒测试(Black-box Testing)方法。黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。它是一种
44、从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。黑盒测试的方法有a.等价类划分b.因果图法c.边值分析d.决策表法若测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-box Testing)方法。其主要方法有逻辑驱动、基路测试等,主要用于软件验证。l 软件测试过程 单元测试针对每个程序的模块,主要测试5个方面的问题:模块接口、局部数据结构、边界条件、独立的路径和错误处理。集成测试:自顶向下的测试、自底向上的测试、回归测试、烟雾测试系统测试:恢复测试、安全测试、压力测试、性能测试确认测试:a测
45、试、b测试软件调试:蛮力法、回溯法、原因排除法软件测试的意义:a. 发现软件错误;b. 有效定义和实现软件成分由低层到高层的组装过程;c. 验证软件是否满足任务书和系统定义文档所规定的技术 d. 为软件质量模型的建立提供依据。14、软件测试项目从什么时候开始?为什么?软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发过程中产生的所有产品都测试,并且软件缺陷存在放大趋势.缺陷发现的越晚,修复它所花费的成本就越大.15、需求分析的任务是什么?有什么作用?需求分析的过程和意义?需求分析的任务: 深入描述软件的功能和性能 确定软件设计的约束和软件同其它系统元素的接口细节 定义软件的其它有效性需求需求分析的作用:确定系统必须完成哪些工作,也