虽然我没有参加过笔试面试,但是看看测试方面的知识也是没有坏处的,起码在找工作的时候可以多一个选择。。下面总结一下软件测试高频考点。。参考了一些的博客,感谢他们。
  1.什么是软件测试?
  软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序内部结构而精心设计的一批测试用例(即输入数据及其预期的输出结果),并用这些测试用例去运行程序,以发现程序错误的过程。
  2.软件测试的目的?
  软件测试的目的是想以少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。
  3.需求文档测试:
  主要测试需求中是否存在逻辑矛盾以及需求在技术上是否可以实现。
  4.设计文档测试
  测试设计是否符合全部需求以及设计是否合理
  5.白盒测试
  又称为逻辑驱动测试,,他是知道产品内部工作过程,可通过测试来检验产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序的每条通路是否都能按预期要求正常工作,而不顾他的功能,白盒测试的主要方法是逻辑驱动、基路测试等,主要用于软件验证。
  6.白盒测试的方法有哪几种?
  白盒测试也称为结构测试或者逻辑驱动测试,他是想知道程序产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序的每条通路是否都能按预期要求正常工作,而不顾他的功能,白盒测试的主要方法有逻辑驱动测试,基路测试等,主要用于软件验证。“白盒”法是程序穷举路径测试。
  对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析和语法分析、静态错误分析、动态监测等。目前测试工具主要支持的开发语言包括:标准C,C++,Visual C++,Java,Visual J++等。
  7.黑盒测试
  已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。它意味着测试要在软件测试的接口处进行。这种方法是把测试对象看成一个黑盒子,测试人员完全不考虑程序的逻辑结构和内部特征,只依据程序的需求规格说明书,检查程序的功能是否符合他的功能说明书。因此黑盒测试又叫功能测试或数据驱动测试。
  8.如果能够执行完美的黑盒测试,还需要进行白盒测试吗?(白盒与黑盒的区别)
  任何工程产品(注意是任何工程产品)都可以使用一下两种方法之一进行测试。
  黑盒测试:一直产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试:一直产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
  软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员程序内部的逻辑结构和内部特性,只依据程序内部的需求规格说明书,检查程序的功能是否符合他的功能说明书。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
  1)是否有不正确或者遗漏的功能?
  2)在接口上输入是否能正确的接受?能否输出正确的结果?
  3)是否有数据结构错误或外部信息(例如数据文件)访问错误?
  4)性能上是否能够满足要求?
  5)是否有初始化或者终止性错误?
  软件的白盒测试是对软件的过程细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,他允许测试人员利用程序内部的逻辑结构以及有关信息,设计或选择测试用例,对程序所有程序路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期状态一致。因此白盒测试主要是相对程序模块进行如下检查:
  1)对程序模块的所有独立的执行路径至少测试一遍
  2)对所有的逻辑判定,取“真”与取“假”的两种情况至少都测试一遍。
  3)在循环的边界和运行的界限内执行循环体。
  4)测试内部数据结构的有效性,等等
  以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在为发现错误时,不能说明程序没有错误。
  9.回归测试
  回归测试的目的是在程序有修改的情况下,保证原有功能正常的一种测试策略和方法。说白了是,我们测试人员在对程序进行测试时发现bug,然后返还程序员修改,程序员修改后发布新的软件包或新的软件补丁包给我们测试人员,我们要重新对这个程序进行测试,已保证程序在修正了以前的bug的情况下,正常运行,且不会带来新的错误的这样一个过程。一般情况下是不需要进行全面测试的,而是根据修改的情况进行有效的测试。
  10.验收测试的两种
  Alpha测试:是由用户在开发环境下进行的测试,也可以是在公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理,目的是评价软件的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度再开始。有关的手册(草稿)等应该在Alpha测试前准备好。
  Bate测试:是软件的多用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Bate测试不能由程序员或测试员完成。因而,Bate测试是在开发者无法控制的环境下进行的软件现场应用。在Bate测试中,由用户记下遇到的所有问题,包括真实的以及主管的认定,定期向开发者报告,开发者在综合用户的报告后,做出修改,后将软件产品交付给全体用户使用。Bate测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有Alpha测试达到一定的可靠程度后才能开始Bate测试。由于Bate测试的主要目标是测试可支持性,所以Bate测试应该尽可能由主持产品发行的人员来管理。
  11.软件测试的缺陷等级应如何划分
  1)致命错误,可能导致本模块以及其他相关模块异常,死机等问题。
  2)严重错误,问题局限在本模块,导致模块功能失效或异常退出
  3)一般错误,模块功能部分失效
  4)建议问题,有问题提出人对测试对象的改进意见
  12.软件测试应该划分几个阶段?简述各个阶段应重点测试的点?各阶段的含义?
  大体上来说可分为单元测试,集成测试,系统测试,验收测试,每个阶段又分为以下五个步骤:测试计划,测试设计,用例设计,执行结果,测试报告。
  初始测试集中在每个模块上,保证源代码的正确性,该阶段成为单元测试,主要用白盒测试的方法。接下来是模块集成和集成以便组成完整的软件包。集成测试集中在证实和程序结构成问题上。主要采用黑盒测试的方法,辅之以白盒测试方法。
  软件集成后,需要完成确认和系统测试。确认测试提供软件满足所有的功能、性能需求的后保证。确认测试仅仅应用黑盒测试的方法。
  13.驱动模块和桩模块
  驱动模块:大多数场合称为“主程序”,他接收测试数据并将这些数据传递到被测试模块,单元测试一个函数单元时,被测单元本身是不能独立运行的,需要为其传送数据,为此写驱动
  驱动模块主要完成以下事情:
  1)接收测试输入
  2)对输入进行判断
  3)将输入传给被测单元,驱动被测单元执行;
  4)接受被测单元的执行结果,并对结果进行判定
  5)将判断结果作为用例执行结果输出测试报告
  桩模块:比如对函数A做单元测试的时候,被测的函数单元下还包括了也函数B,为了更好地定位错误,要为B写桩,来模拟函数B的功能,保证其正确性。
  14.各种测试所针对的问题
  1)单元测试:是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。他是软件动态测试的基本部分,也是重要的部分之一,其目的是检验软件基本组成单位的正确性。
  2)集成测试:是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
  3)系统测试:系统测试是对已经集成好的软件系统进行彻底的测试,已验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,他被称为测试的“先知者问题”。
  4)验收测试:验收测试旨在向软件的购买者展示该软件系统满足其用户需求。他的测试数据通常是系统测试的测试数据的子集。
  5)回归测试:是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。