人生在世如身处荆棘林中,心不动则人不妄动,不动则不伤; 如心动则人妄动,则伤其身痛其骨,于是体会到世间诸般痛苦

软件测试面试题

上一篇 / 下一篇  2008-11-17 11:57:31 / 个人分类:软件知识

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

1、软件测试分哪两种方法?分别适合什么情况?

   软件测试方法一般分为两种:白盒测试黑盒测试。白盒测试又称为结构
   测试、逻辑驱动测试或基于程序本身的测试,它着重于程序的内部结构及
   算法,通常不关心功能与性能指标;黑盒测试又被称为功能测试、数据驱
   动测试或基于规格说明的测试,它实际上是站在最终用户的立场,检验输
   入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需
   求的规定。

2、一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。

   计划阶段、设计阶段、白盒单元、白盒集成、黑盒单元、黑盒集成、系统测试、回归测试、验收测试
    一套完整的测试应该由五个阶段组成:
   1).测试计划
    首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义
    相应的测试需求报告,即制订黑盒测试的最高标准。以后所有的测试工作
    都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之
    即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试
    时间及测试资源等。
    2).测试设计
    将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并
    为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响测试
    结果的有效性)。
    3).测试开发
    建立可重复使用的自动测试过程。
    4).测试执行
    执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理,测
    试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组
    成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。
    5).测试评估
    结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工
    作进度及工作效率进行综合评价。

3、软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。

   BVT (Build Verification Test),主要目的是验证最新生成的软件版本在功能上是否完整,主要的软件特性是否正确
   Scenario Tests(基于用户实际应用场景的测试),Scenario Tests优点是关注了用户的需求,缺点是有时候难以真正模仿用户真实的使用情况
   Smoke Test,修复Bug后,针对此次修复是否会对其他模块造成影响而进行的专门测试。Smoke Test优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低
   此外,还有Application Compatibility Test(兼容性测试),主要目的是为了兼容第三方软件,确保第三方软件能正常运行,用户不受影响。Accessibility Test(软件适用性测试),是确保软件对于某些有残疾的人士也能正常的使用,但优先级比较低。其它的测试还有Functional Test(功能测试)、Security Test(安全性测试)、Stress Test(压力测试)、Performance Test(性能测试)、Regression Test(回归测试)、Setup/Upgrade Test(安装升级测试)等

4、测试用例通常包括那些内容?着重阐述编制测试用例的具体做法

   不同结构的用例包括的不一样。(版本、编号、项目、设计人员、设计日期、输入、预期输出……)
    、软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果。
用例编号: 测试用例的编号有一定的规则,比如系统测试用例的编号这样定义规则: PROJECT1-ST-001 ,命名规则是项目名称+测试阶段类型(系统测试阶段)+编号。定义测试用例编号,便于查找测试用例,便于测试用例的跟踪。

测试标题: 对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。比如 “ 测试用户登录时输入错误密码时,软件的响应情况 ” 。

重要级别: 定义测试用例的优先级别,可以笼统的分为 “ 高 ” 和 “ 低 ” 两个级别。一般来说,如果软件需求的优先级为 “ 高 ” ,那么针对该需求的测试用例优先级也为 “ 高 ” ;反之亦然,

测试输入: 提供测试执行中的各种输入条件。根据需求中的输入条件,确定测试用例的输入。测试用例的输入对软件需求当中的输入有很大的依赖性,如果软件需求中没有很好的定义需求的输入,那么测试用例设计中会遇到很大的障碍。

操作步骤: 提供测试执行过程的步骤。对于复杂的测试用例,测试用例的输入需要分为几个步骤完成,这部分内容在操作步骤中详细列出。

预期结果: 提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。

7、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程

   1、测试人员或开发人员发现bug后,判断属于哪个模块的问题,填写bug报告后,系统会自动通过Email通知项目组长或直接通知开发者。
   2、项目组长根据具体情况,重新reassigned分配给bug所属的开发者。
   3、开发者收到Email信息后,判断是否为自己的修改范围.
   1) 若不是,重新reassigned分配给项目组长或应该分配的开发者。
   2) 若是,进行处理,resolved并给出解决方法。(可创建补丁附件及补充说明)
   4、测试人员查询开发者已修改的bug,进行重新测试。(可创建test case附件)
   1) 经验证无误后,修改状态为VERIFIED。待整个产品发布后,修改为CLOSED。
   2) 还有问题,REOPENED,状态重新变为“New",并发邮件通知。
   5、如果这个BUG一周内一直没被处理过。Bugzilla就会一直用email骚扰它的属主,直到采取行 动。管理员可以设定最迟采取行动的期限,比如说3天,系统默认为7天。

相关阅读:

TAG: 软件知识

引用 删除 yuwanwan   /   2009-11-27 15:48:01
多谢分享~~~~~~
aGame aDream 引用 删除 yangzy707   /   2008-11-17 13:37:29
5. 还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?
测试并不能够最大限度的保证软件的质量,软件的高质量是开发和设计出来的,而不是测试出来的,它不仅要通过对软件开发流程的监控,使得软件开发的各个阶段都要按照指定的规程进行,通过对各个阶段产物的评审,QA对流程的监控,对功能及配置的审计来达到开发的最优化。当然测试也是保证软件质量的一个重要方式,是软件质量保证工程的一个重要组成部分。
     6. 然后紧接着就基于目前中国的国情,大多数公司的软件项目进度紧张、人员较少、需求文档根本没有或者很不规范,你认为在这种情况下怎样保证软件的质量?(大多数公司最想知道的就是在这种困难面前你该怎么保证软件的质量,因为这些公司一般就是这种情况-----既不想投入过多又想保证质量,faint )出现以上的情况,如果仅仅想通过测试来提高软件质量,那几乎是不可能,原因是没有足够的时间让你去测试,少而不规范的文档导致测试需求无法细化何谈足够且有针对性进行测试。所以,作为公司质量保证的你应该先后项目经理确定符合项目本身最适合的软件生命周期模型(比如RUP的剪裁,原型法),明确项目的开发流程并督促项目组按照此流程开展工作,所有项目组成员(项目经理更加重要)都要制定出合理的工作计划,加强代码的单元测试,在客户既定的产品交付日期范围之内,进行产品的持续集成等等,如果时间允许可以再配合客户进行必要的系统功能测试。
     7. 差不多了就该问一些只和软件测试相关的问题了,如:
    (1) 你觉得怎样才能做一个(或者,怎样才能算一个)优秀的测试工程师?(faint,这个问题好像是必问的,答案也无非是什么要求全面的技术能力、缜密的逻辑思维、出色的沟通能力、还要有怀疑精神、幽默感、洞察力等等。啥叫优秀啊?该有的能力都有,不该有的也有,而且个个能力还都是出色的,这就是优秀,呵呵,开玩笑的,反正这个问题差不多就这样,具体的什么要求网络上也到处都有。
     (2) 还有其它的如对自己优缺点的评价、自己的职业理想、为何离开上一家公司、自己在职业生涯中印象最深的事情、能否出差和加班、能否承受压力和挑战、薪水要求、何时能到岗等等这些啥面试都要回答的问题,这个就只能自己斟琢着办了。

     (3) 另外还有一个重要的问题就是语言能力啦,尤其是英语水平,这个的话每个具体的公司都有不同的要求,也就没啥好说的了。
aGame aDream 引用 删除 yangzy707   /   2008-11-17 13:35:46
CMMI:Capability Maturity Model Integration 能力成熟度模型集成 CMMI融入了大部分最新的软件管理实践,同时弥补了SW-CMM模型中的缺陷
    RUP:rational unified process 是软件工程化过程。它提供了在开发机构中分派任务和责任的纪律化方法.它的目标是在可预见的日程和预算前提下确保满足最终用户需求的高质量产品,个人认为:它的核心观念是开发的迭代,每个公司可以根据自身的软件开发的流程和待开发项目的特点对RUP进行适当的剪裁,制定出符合自己的软件开发流程。
    XP:extreme program,即极限编程的意思,适用于小型团队的软件开发,想上面第三个问题就可以结合原型法采用这样的开发流程。要明白测试对于xp开发的重要性,强调测试(重点是单元测试)先行的理念。编程可以明显提高代码的质量,持续集成对于快速定位问题很有好处。
PSP ,TSP 分别是个体软件过程(Personal Software Process),群组软件过程(Team Software Process)大家都知道,CMM只是告诉你怎么做但并没有告诉你如何做,所以PSP/TSP就是告诉你企业在实施CMM的过程中如何做,PSP强调建立个人技能(如何制定计划、控制质量及如何与其他人相互协作等等)而TSP着重于生产并交付高质量的软件产品(如何有效地规划和管理所面临的项目焖偃砑�馐酝�发任务等等)
    总之,单纯实施CMM,永远不能真正做到能力成熟度的升级,只有将实施CMM与实施PSP和TSP有机地结合起来,才能发挥最大的效力。因此,软件过程框架应该是CMM/PSP/TSP的有机集成。
    (5) 对项目管理、白盒测试、单元测试、自动测试、性能测试、压力测试工具的了解程度和实际使用经验。(其实基本上也就是MI和Rational工具):这个就要看个人的了,没法说了
 

评分:0

我来说两句

Open Toolbar