`
peonyzzdx
  • 浏览: 582588 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

测试面试题

阅读更多
1.白箱测试和黑箱测试是什么?什么是回归测试?
白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。
白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。

黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收和正确的输出。
 黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试包括两部分:函数本身的测试、其他代码的测试。在对被修改的函数重新测试。如果函数的设计功能没有变化,直接运行函数测试就可以了。如果修改了设计功能,则要根据增减的功能点,增加或删除测试用例。另外,还要完成白盒覆盖。函数代码的修改可能导致调用该函数的代码产生错误,所以需要测试其他代码。如果函数是私有函数并且未涉及到全局变量,应运行类测试,否则应运行工程测试。在函数列表中选择类测试或工程测试,编译运行测试工程,即可执行对其他代码的回归测试。

  2.1单元测试、集成测试、系统测试的侧重点是什么?
      答案:
      单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求,组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。
      系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。

2.2 单元测试、集成测试、系统测试的顺序可否调换,为什么?
    不可以,软件的开发也是从小的模块开始,不可能没有模块就开始集成,后来才打包成一个软件,形成一个系统。单元测试是测试各个小的模块,通过对他们的测试,才能找出基本的bug,然后为各个模块搭建接口,也就是把模块组装起来,之后进行集成测试,看各个模块的接口是否正常稳定,打包成软件后,先做出一个demo版本,由开发和测试一起进行系统测试。    
     3.集成测试通常都有那些策略?或者集成测试应该考虑以下问题:
      答案:
      (1)在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
      (2)各个子功能组合起来,能否达到预期要求的父功能;
      (3)一个模块的功能是否会对另一个模块的功能产生不利的影响;
      (4)单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。
      (5)全局数据结构是否有问题;     
4.一个缺陷测试报告的组成

      答案:
      缺陷的标题,缺陷的基本信息,复现缺陷的操作步骤,缺陷的实际结果描述,期望的正确结果描述,注释文字和截取的缺陷图象。
5.给你一个杯子,你如何测试





6.设计用例的方法、依据有那些?
白盒测试:逻辑覆盖法,主要包括语句覆盖,判断覆盖,条件覆盖,判断-条件覆盖,路径覆盖。
黑盒测试:等价划分类,边界值分析,错误推测法。

7.黑盒测试常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

  1. 等价类划分
  常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.
  2. 边界值分析法
  边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
  使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
  3. 错误推测法
  基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
  错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结。还有, 输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例.
  4. 因果图方法
  前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.
  5. 正交表分析法
  有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。
  6. 场景分析方法
  指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。


8.您认为做好测试计划工作的关键是什么?
了解项目或系统的业务需求
和项目经理协调好,了解项目的进度计划安排情况

9.您认为做好测试用例设计工作的关键是什么?
 白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
 黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题


 9.详细的描述一个测试活动完整的过程。

  1) 项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后\SQA进入项目,开始进行统计和跟踪
  2)开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或者双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。
  3) 测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。
  4) 测试用例完成后,测试和开发需要进行评审。
  5) 测试人员搭建环境
  6) 开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现BUG后提交给BugZilla。
  7)开发提交第二个版本,包括Bug Fix以及增加了部分功能,测试人员进行测试。
  8) 重复上面的工作,一般是3-4个版本后BUG数量减少,达到出货的要求。
  9) 如果有客户反馈的问题,需要测试人员协助重现以及回归测试。


11.什么是测试环境?如何搭建测试环境?
  
测试进行软件测试的之前,需要搭建好测试环境。那什么是测试环境呢?    
简单的说就是软件运行的平台,即软件、硬件和网络三种环境的合集,也就是说:测试环境=软件+硬件+网络     
硬件:包括PC机、笔记本、服务器、各种终端等。例如要测试photoshop软件,是要在PC机上测,还是笔记本上测?是在cpu为酷睿的计算机上测,还是要在炫龙的cpu上测?不同的硬件环境photoshop的处理速度是不一样的。     
软件:这里主要指的是软件运行的操作系统。例如测试photoshop,是指windows xp下测试还是在vista下测试?可能会有兼容性问题。软件环境还包括与其他各类软件共存同一系统时的兼容性问题。      网络:主要针对的是C/S结构和B/S结构的软件。比如我现在测试的软件,客户的网络环境是千兆以太网,而我们的网络环境还是百兆以太网,而且还是闲时才能达到百兆的速度。这样的环境要是很精确的测试响应时间,还是很伤脑筋的。 
  上面介绍了什么是测试环境。那么如何搭建测试环境呢?    一般来说,配置测试环境可遵循下列原则:  
  1、真实:尽量模拟用户的真实使用环境。这里需要提一点,关于项目软件与产品软件需要不同看待。项目软件由于只针对某一群体的用户,所以测试的环境比较单一。但产品软件针对的是广大群众,所以测试环境比较复杂,要多方面考虑。    
2、干净:测试环境中尽量不要安装与被测软件无关的软件。笔者就遇到这种事情,两台机器,针对一个功能,一台测试OK,另一台测试NG,最后根据调查发现,测试OK的机器上安装了客户根本不会安装的VC++开发环境,测试NG的机器正因为没有安装VC,所以测试出了这个bug:软件中缺少必要的动态链接库支持。但这个干净也不是必须的,有时还要刻意去测试某个软件去其他软件并存时的兼容性问题。     3、无毒,这个应该不必多说了,测试工作应该确保在无毒的环境中进行。    
4、独立:测试环境与开发环境相互独立。就是说开发环境和测试环境最好分开,即测试人员和开发人员分别用不同的服务器(数据库、后台服务器等),避免造成相互干扰。

10.以往是否曾经从事过性能测试工作?请尽可能的详细描述您以往的性能测试工作的完整过程。
  曾经做过一套网管系统的性能测试,主要测试该软件在同时管理大量终端的情况下,在响应时间,CPU/磁盘/内存等参数是否满足要求。
  也曾经做过软交换系统的呼叫性能测试,主要是测试软交换系统在有大量呼叫的情况下,响应时间,呼叫成功率,CPU/磁盘/内存等参数是否满足设计要求。

  12.您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。
  测试网管系统中,使用的Mimic来模拟终端,能够大量的节省成本。
  测试软交换系统的时候,使用的Prolab来模拟终端并发送呼叫软交换,他完成了同时数百人才能完成的摘机拨号工作,主要工作原理是产生一些符合要求的IP包并发送给软交换系统,同时对软交换系统的回应进行处理,决定下一步动作。

 13. 您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?
  主要是保障在大量用户的情况下,服务能正常使用。
提问者采纳

性能测试的目的
1) 评估系统的能力----测试中得到的负荷和响应时间数据可被用于验证所计划的模型的能力,并帮助作出决策。
2) 识别体系中的弱点----受控的负荷被增加到一个极端水平,并突破它,从而修复体系的瓶颈或薄弱的地方。
3) 系统调优---重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。检测软件中的问题,长时间的测试执行可导致程序发生由于内存泄漏引起的失败,揭示程序中的隐含问题或冲突。
4) 验证稳定性,可靠性---在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。关注点:how much

做好性能测试工作的关键是强度测试(Stress Test): 强度测试

强度测试总是迫使系统在异常的资源配置下运行。例如,①当中断的正常频率为每秒一至两个时,运行每秒产生十个中断的测试用例;②定量地增长数据输入率,检查输入子功能的反映能力;③运行需要最大存储空间(或其他资源)的测试用例;④运行可能导致虚存操作系统崩溃或磁盘数据剧烈抖动的测试用例,等等。

  14.在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    在传统的BugZilla中,BUG描述应该包括以下的信息
  1) 和BUG产生对应的软件版本
  2) 开发的接口人员
  3) BUG的优先级
  4) BUG的严重程度
  5) BUG可能属于的模块,如果不能确认,可以用开发人员来判断
  6) BUG标题,需要清晰的描述现象
  7) BUG描述,需要尽量给出重新Bug的步骤
  8)BUG附件中能给出相关的日志和截图。
  高质量的BUG记录就是指很容易理解的BUG记录,所以,对于描述的要求高,能提供的信息多且准确,很好的帮助开发人员定位。
15.α、β测试
α测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的 用户操作方式。经过α测试调整的软件产品称为β版本。
  α测试的特点是
  1、它是在开发环境下进行的(不对外发布)
  2、它不需要测试用例评价软件使用质量
  3、用户往往没有相关经验,可以是兼职人员,开发者或测试者坐用户旁边
  4、目的主要评价软件产品的FLURS-Function、Location、Usability、reliability、Performance、Security即功能、局域化、可用性、可靠性、性能和技术支持.[1]

β测试,英文是Beta testing。又称Beta测试,用户验收测试(UAT)。

β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。

16.什么是兼容性测试?兼容性测试侧重哪些方面?
  兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。
  兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。
  兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。
  兼容和配置测试的区别在于,做配置测试通常不是Clean OS下做测试,而兼容测试多是在Clean OS的环境下做的。















































  • 大小: 72.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics