基本概念——软件测试工程师面试秘籍(29)

发表于:2022-1-12 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:G.li    来源:51Testing软件测试网原创

  第3章  临阵磨枪,不快也光
  对于大多数应届毕业生来说,学校并没有“软件测试”这门课程。于是,没有实习经验的人可能会因为回答不上测试题目而失去就业机会。本章为入门者精心准备了足以应付初级软件测试岗位的相关知识。读者只需熟记要点,在这一关上便能多几分把握。

  3.1  基本概念
  考点:
  静态、动态测试方法
  黑盒、白盒测试概念
  软件测试过程
  测试用例的组成

  3.1.1  静态、动态测试方法
  静态测试方法的主要特征是在用计算机测试源程序时,计算机并不真正运行被测试的程序。这说明静态测试方法一方面要利用计算机作为对被测程序进行特性分析的工具,它与手动测试有着根本的区别;另一方面,计算机并不真正运行被测程序,只进行特性分析,这是和动态测试方法不同的。因此,静态测试方法常称为“静态分析”,静态分析是对被测程序进行特性分析的一些方法的总称。
  静态分析并不等同于编译系统,编译系统虽然能发现某些程序错误,但这些错误远非软件中存在的大部分错误,静态分析的查错和分析功能是编译程序所不能代替的。
  静态分析有很多工具,不同工具的功能不同,有的可以做注入SQL的检查,有的则不能。下面列出一些工具,读者可以了解一下。
  Ounec 5.0:扫描的语言有VB、C、C++、C#、Java,属于付费工具。
  Coverity Prevent:扫描的语言有C、C++、C#、Java,属于付费工具。
  Stake SmartRiskAnalyzer:扫描的语言有C、C++、Java,属于付费工具。
  Rational Purify:扫描的语言有C、C++、Java,属于付费工具。
  Jtext:扫描的语言有Java,属于付费工具。
  Flawfinder:扫描的语言有C、C++,属于付费工具。
  Static Code Analyzer:扫描的语言有C、C++、C#、Java,属于付费工具。
  PolySpace Client:扫描的语言有C、C++、Ada,属于付费工具。
  RATS:扫描的语言有C、C++、Python、Perl、PHP,属于开源工具。
  Fluid:扫描的语言有Java,属于开源工具。
  动态测试方法的主要特征是计算机必须真正运行被测试的程序,通过输入测试用例对其运行情况(输入/输出的对应关系)进行分析。日常手动测试就属于动态测试。

  3.1.2  黑盒、白盒测试概念
  测试规划基于产品的功能,目的是检查程序各功能是否实现,并检查其中的错误。这种测试方法称为黑盒测试(Black-box?Testing)。
  测试规划基于产品的内部结构,检查内部操作是否按规定执行、软件各部分功能是否得到充分使用。这种测试方法称为白盒测试(White-box?Testing)。
  黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试,是一种从用户观点出发的测试。用这种方法进行测试时,把被测程序当作一个黑盒,在不考虑程序内部结构和内部特性、测试者只知道该程序输入和输出之间的关系或程序功能的情况下,依靠能够反映这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结果的正确性。软件的黑盒测试一般用来确认软件功能的正确性和可操作性。
  白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。它依赖于对程序细节的严密检验,针对特定条件和循环集设计测试用例,对软件的逻辑路径进行测试。在程序的不同点检验程序的状态,判定真实情况是否和预期的状态相一致。软件的白盒测试一般用来分析程序的内部结构。
  黑盒测试和白盒测试是从完全不同的起点出发的,并且这两个出发点在某种程度上是完全对立的,反映了测试思路的两个极端情况。这两类方法在长期的软件测试实践中已经被证明是有效和实用的。
  一般来说,在进行单元测试时通常采用白盒测试,而在确认测试或系统测试中通常采用黑盒测试。
  常见的测试覆盖如下。
  语句覆盖:它要求被测程序的每一个运行语句在测试中尽可能都被检验过,这是最弱的逻辑覆盖准则。
  分支覆盖或判断覆盖:要求程序中所有判定的分支尽可能得到检验。
  条件覆盖:当判定式中有多个条件时,要求每个条件的取值均得到检验。
  判断/条件覆盖:同时考虑条件的组合值及判定结果的检验。
  路径覆盖:只考虑对程序路径的全面检验。
  为取得被测程序的覆盖情况,最常用的办法是在测试前对被测程序进行预处理。预处理的主要工作是在其重要的控制点插入“探测器”—程序插装。
  无论采用哪种测试覆盖,即使其覆盖率达到100%,也不能保证把所有隐藏的程序欠缺都揭露出来。

  3.1.3  软件测试过程
  软件测试过程按测试的先后次序可分为5个步骤—单元测试、集成测试、确认测试、系统测试和验收测试。
  单元测试:分别完成每个单元的测试任务,以确保每个模块能正常工作。单元测试大量地采用了白盒测试,尽可能地发现模块内部的程序错误。
  集成测试:把已测试过的模块组装起来,进行集成测试。为了检验与软件设计相关的程序结构问题,多采用黑盒测试来设计测试用例。
  确认测试:完成集成测试以后,要对开发工作初期制定的确认准则进行检验。为了检验所开发的软件能否满足所有功能和性能需求,在确认测试中通常采用黑盒测试。
  系统测试:完成确认测试以后,给出的应该是合格的软件产品,但为检验它能否与系统的其他部分(如硬件、数据库及操作人员)协调工作,需要进行系统测试。严格地说,系统测试已超出了软件工程的范围。
  验收测试:检验软件产品质量的最后一道工序是验收测试。验收测试与前面讨论的各种测试活动的不同之处主要在于它突出了客户的作用。除测试人员之外,软件开发人员也会参与验收测试。

  3.1.4  测试用例的组成
  凡是有测试经验的人都知道测试用例的组成,这也是面试者经常被问到的一道题,它用于试探面试者是否真的做过测试。
  测试用例包括用例编号、用例类型、前置条件、操作步骤、预期结果、实际结果等。

查看《软件测试工程师面试秘籍》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号