0


软件工程基础知识--系统测试

系统测试与调试

1. 系统测试的意义和目的

系统测试是为了发现错误而执行程序的过程,以最少的人力和时间发现潜在的各种错误和缺陷。

根据测试的概念和目的,在进行信息系统测试时应遵循以下基本原则。

(1)应尽早并不断地进行测试。

(2)测试工作应该避免由原开发软件的人或小组承担。

(3)设计测试方案的时候,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果。

(4)在设计用例时,不仅要设计有效、合理的输入条件,也要包含不合理、失效的输入条件。

(5)在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事。

(6) 严格按照测试计划来进行,避免测试的随意性。

(7)妥善保存测试计划、测试用例,作为软件文档的组成部分,为维护提供方便。
(8)测试用例都是精心设计出来的,可以为重新测试或追加测试提供方便。

2. 测试过程

测试是开发过程中一个独立且非常重要的阶段,测试过程基本上与开发过程平行进行。一个规范的测试过程通常包括以下基本活动:

  • 制订测试计划,制定计划要考虑项目时间、进度、人为因素和客观条件,确保制定出来的计划是切实可行的。
  • 编制测试大纲。测试的依据。
  • 根据测试大纲设计生成测试用例。
  • 实施测试。测试人员和开发人员依据测试大纲和测试用例实施测试。
  • 生成测试报告。对测试进行概要说明、列出测试结论、指出缺陷和错误。

传统软件测试策略

测试策略提供以下方面的路径图∶描述将要进行的测试步骤,这些步骤计划和执行的时机,需要多少工作量、时间和资源。任何测试策略都必须包含测试计划、测试用例设计、测试执行以及结果数据的收集和评估。

有效的软件测试实际上分为4步进行,即单元测试、集成测试、确认测试和系统测试。

1.单元测试

单元测试也称为模块测试。在模块编写完成且无法编译错误后就可以进行。如果选择机器测试,一般用白盒法,多个模块一起进行。
单元测试主要检查模块的以下5个特征。

  • 模块接口。模块的接口保证了测试模块的数据流可以正确地流入、流出。
  • 局部数据结构。在单元测试中,局部数据结构出错是比较常见的错误。
  • 重要的执行路径。在单元测试中,对路径的测试是最基本的任务。由于不能进行穷举测试,需要精心设计测试例子来发现是否有计算、比较或控制流等方面的错误。
  • 出错处理。好的设计应该能预测到出错的条件并且有对出错处理的路径。
  • 边界条件。边界条件的测试是单元测试的最后工作,也是非常重要的工作。软件容易在边界出现错误。

2.集成测试

把模块按系统设计说明书的要求组合起来进行测试。组装测试有两种方法∶一种是分别测试各个模块,再把这些模块组合起来进行整体测试,即非增量式集成另一种是把下一个要测试的模块组合到已测试好的模块中,测试完后再将下一个需要测试的模块组合起来进行测试,逐步把所有模块组合在一起并完成测试,即增量式集成。

3.确认测试

确认测试的任务是进一步检查软件的功能和性能是否与用户要求的一样。首先进行有效性测试以及软件配置审查,然后进行验收测试和安装测试,经过管理部门的认可和专家的鉴定后,软件即可交给用户使用。

4.系统测试

系统测试是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。常见的系统测试主要有恢复测试、安全性测试、强度测试、性能测试、可靠性测试和安装测试。

测试方法

在软件测试过程中,应该为定义软件测试模板,即将特定的测试方法和测试用例设计放在一系列的测试步骤中。
软件测试方法分为静态测试和动态测试。

(1)静态测试。静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。


① 人工检测。人工检测不依靠计算机而是依靠人工审查程序或评审软件,包括代码检查、静态结构分析和代码质量度量等。



② 计算机辅助静态分析。利用静态分析工具对被测试程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。

(2)动态测试。动态测试是指通过运行程序发现错误。在对软件产品进行动态测试时可以采用黑盒测试法和白盒测试法。
测试用例由测试输入数据和与之对应的预期输出结果组成。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。

1. 黑盒测试

黑盒测试也称为功能测试,在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。

2.白盒测试

白盒测试也称为结构测试,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。

测试面向对象软件

对于面向对象软件,测试的基本目标仍然是在现实的时间范围内利用可控的工作量找出尽可能多的错误,但是其本质特征的不同使得测试策略和技术也发生了变化。

1.单元测试

面向对象软件中单元的概念发生了变化,封装导出了类的定义。每个类和类的实例(对象)有属性(数据)和处理这些数据的操作(函数或方法)。封装的类常是单元测试的重点,然而,类中包含的操作是最小的可测试单元。由于类中可以包含一些不同的操作,且特殊的操作可以作为不同类的一部分存在,因此,面向对象软件的类测试是由封装在该类中的操作和类的状态行为驱动的。

2. 集成测试

由于面向对象软件没有明显的层次控制结构,因此面向对象环境中的集成测试有两种策略
。

(1)基于线程的测试,对响应系统的一个输入或事件所需的一组类进行集成,每个线程单独地集成和测试,并应用回归测试以确保没有产生副作用。

(2)基于使用的测试,通过测试很少使用服务类的那些类开始系统的构建。

测试Web应用

由于WebApp位于网络上,并与很多不同的操作系统、浏览器(位于很多不同的设备上)、硬件平台、通信协议及“暗中的”应用系统进行交互作用,因此,查找错误的工作是很重要的。
为了了解Web工程环境中的测试目标,必须考虑WebApp质量的多种维度。

1. 质量维度

良好的设计应该将质量集成到Web应用中,通过对设计模型中的不同元素进行一系列技术评审,对质量进行评估。评估和测试都要检查下面质量维度中的一项或多项。

(1)内容。
(2)功能。
(3)结构。
(4)可用性。
(5)导航性。
(6)性能。
(7)兼容性。
(8)安全性。

2. WebApp测试策略

WebApp测试策略采用所有软件测试使用的基本原理,并建议使用面向对象系统使用的策略和战术。下面的步骤对此方法进行了总结。

(1)对WebApp的内容模型进行评审,以发现错误。
(2)对接口模型进行评审,保证适合所有的用例。
(3)评审WebApp的设计模型,发现导航错误。

(4)测试用户界面,发现表现机制和(或)导航机制中的错误。
(5)对功能构件进行单元测试。
(6)对贯穿体系结构的导航进行测试。

(7)在各种不同的环境配置下实现WebApp,并测试WebApp对于每一种配置的兼容性。
(8)进行安全性测试,试图攻击WebApp或其所处环境的弱点。
(9)进行性能测试。

(10)通过可监控的最终用户群对 WebApp 进行测试,对他们与系统的交互结果进行以下方面的评估,包括内容和导航错误、可用性、兼容性以及WebApp的安全性、可靠性及性能等方面的评估。

调试

调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,进行改正。调试主要由程序开发人员来进行,谁开发的程序就由谁来进行调试。

1.调试过程

调试并不是测试,且总是发生在测试之后。执行测试用例,对测试结果进行评估,当期望的表现与实际表现不一致时,调试过程就开始了。在很多情况下,这种不一致的数据是隐藏在背后的某种原因所变现出来的症状。调试试图找到隐藏在症状背后的原因,从而使错误得到修正。

调试过程通常得到以下两种结果之一∶发现问题的原因并将其改正;未能找到问题的原因。在后一种情况下,调试人员可以假设一个原因,设计一个或多个测试用例来帮助验证这个假设,重复此过程直到改正错误。

2.调试方法

常用的调试方法有试探法、回溯法、对分查找法、归纳法和演绎法。

1)试探法

调试人员分析错误的症状,猜测问题所在的位置,利用在程序中设置输出语句,分析寄存器、存储器的内容等手段获得错误的线索,一步步地试探和分析出错误所在。这种方法效率很低,适合于结构比较简单的程序。

2)回溯法

调试人员从发现错误症状的位置开始,人工沿着程序的控制流程往回跟踪代码,直到找出错误根源为止。这种方法适合于小型程序,对于大规模程序,由于其需要回溯的路径太多而变得不可操作。

3)对分查找法

这种方法主要用来缩小错误的范围,如果已经知道程序中的变量在若干位置的正确取值,可以在这些位置上给这些变量以正确值,观察程序运行的输出结果,如果没有发现问题,则说明从赋予变量一个正确值开始到输出结果之间的程序没有错误,问题可能在除此之外的程序中。

4)归纳法
归纳法
从测试所暴露的问题出发,收集所有正确或不正确的数据,分析它们之间的关系,提出假想的错误原因,用这些数据来证明或反驳,从而查出错误所在。

5)演绎法
演绎法

根据测试结果,列出所有可能的错误原因;分析已有的数据,排除不可能和彼此矛盾的原因;对其余的原因,选择可能性最大的,利用已有的数据完善该假设,使假设更具体。

未完待续。。。

更多知识传送:

  • 计算机操作系统–基础知识
  • 计算机操作系统–进程管理
  • 计算机操作系统–存储管理
  • 计算机操作系统–设备管理
  • 计算机操作系统–文件管理
  • 计算机操作系统–作业管理
  • 计算机操作系统–网络操作系统和嵌入式操作系统
  • 计算机操作系统–UNIX操作系统
  • 软件工程基础知识–认识软件工程
  • 软件工程基础知识–软件过程模型
  • 软件工程基础知识–需求分析
  • 软件工程基础知识–系统设计

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上内容整理参考《软件设计师教程(第5版)》和《软件设计师考试同步辅导(第四版)》(忘记是哪个老师的了,侵删)。本文章内容旨在帮助更多想要进军软考,给自己镀金的小伙伴。有兴趣的小伙伴可以共勉。


本文转载自: https://blog.csdn.net/qq_37502042/article/details/126283782
版权归原作者 程序喵锅 所有, 如有侵权,请联系我们删除。

“软件工程基础知识--系统测试”的评论:

还没有评论