系统测试与调试

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

软件工程基础知识--系统测试相关推荐

  1. 软件设计师教程(九)计算机系统知识-软件工程基础知识

    软件设计师教程 软件设计师教程(一)计算机系统知识-计算机系统基础知识 软件设计师教程(二)计算机系统知识-计算机体系结构 软件设计师教程(三)计算机系统知识-计算机体系结构 软件设计师教程(四)计算 ...

  2. 软件工程基础知识--运行和维护

    在系统测试.调试中,使用的是系统测试数据,有些实际运行中可能出现的问题很难通过这些数据被发现.所以,一个系统开发后,让它实际运行一段时间,是对系统最好的检验和测试方法. 系统转换 系统试运行阶段的主要 ...

  3. 软件设计师(五)——软件工程基础知识

    软件工程基础知识 软件工程基础知识部分分为五部分,如下图所示: 1. 软件工程概述 软件工程 1)含义:指使用计算机科学.数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程 2)目的:提高 ...

  4. 软件工程基础知识--软件过程模型

    软件过程模型习惯上也称为软件开发模型,它是软件开发全部过程.活动和任务的结构框架.典型的软件过程模型有瀑布模型.增量模型.演化模型(原型模型.螺旋模型).喷泉模型.基于构件的开发模型和形式化方法模型等 ...

  5. 软件工程---基础知识

    目录 软件工程的基础知识 软件开发的基本过程 软件开发的基本方法 软件测试的分类标准 常见的软件分层体系结构 面向对象设计需要做哪些工作 软件工程的基础知识 软件工程专业非常基础的知识: 编程语言:掌 ...

  6. 软件工程基础知识--认识软件工程

    计算机软件 计算机软件是指计算机系统中的程序及其文档.程序是计算任务的处理对象和处理规则的描述.任何以计算机为处理工具的任务都是计算任务.处理对象是数据(如数字.文字.图形.图像.声音等,它们只是表示 ...

  7. 软件工程基础知识复习宝典

    前言:此文档为个人大学时期应付期末考试时自行总结,用于理解并背诵相应的基本概念.一些计算和画图之类的内容需要结合书本例题进行复习,多做习题深刻掌握.中间大标题为老师给出的考纲中建议每一章需要掌握的一些 ...

  8. 软件设计师-5.软件工程基础知识

    5.1 软件工程概述 5.1.1 软件生存周期 软件:包含程序.数据及相关文档. 软件工程:涉及到软件开发.维护.管理等多方面的原理.工具与环境.最终的目的是开发高质量的软件. 目的:提高软件生产率. ...

  9. 软考-软件设计师 - 第5章 软件工程基础知识【附补充常考知识点】

    5.1 软件工程概述 5.1.1.计算机软件: (1)系统软件 (2)应用软件 (3)工程.科学软件 (4)嵌入式软件 (5)产品线软件 (6)Web应用 (7)人工智能软件 (8)开放计算 (9)网 ...

  10. mcq 队列_MCQ | 软件工程基础知识/简介(1)

    mcq 队列 Q1. Which of the following is a part of the software? Q1. 以下哪个是软件的一部分? Programs 程式 Documentat ...

最新文章

  1. mysql count 返回0_如何在MySQL中使用COUNT時返回0而不是null
  2. WinDbg+SOS:Web服务器High CPU Hang(100%)实例分析
  3. L3-021 神坛(极角排序求三角形最小面积)
  4. 安装Wamp时出现无法启动此程序,因为计算机中丢失MSVCR110.dll的解决方法
  5. 2016陕西省ACM省赛 HE 字符串处理 删除注释
  6. 在SpringBoot2.0及Spring 5.0 WebMvcConfigurerAdapter已被废弃,目前找到解决方案就有两种...
  7. 【资源】吴恩达新书《Machine Learning Yearning》完整中文版免费下载
  8. DNS无法解析IP_通过YouTube的封杀窥视DNS原理
  9. 【MATLAB统计分析与应用100例】案例015:matlab读取Excel数据,进行值聚类分析
  10. 正余弦变换、和差、倍角公式
  11. 2020.9.19hive函数和自定义UDF函数
  12. eplan zw9文件_eplan 中ZW0格式是什么文件啊?
  13. c语言CFile的使用方法,mfc文件操作CFile类之创建文件的方法
  14. 如何使用left join,以及left join的分析
  15. Python中的setattr()和getattr()
  16. 大写的1234567怎么写(存钱的大写的1234567怎么写)
  17. 模拟button按钮按下
  18. python自学篇十六[pandas——数据分析 (二):读取文件+索引+NaNs处理方法]
  19. 电子合同帮助HR,提高人事文件签署效率
  20. excel拆分表格如何操作?

热门文章

  1. 弘辽科技:新品直通车怎么选词?怎样测试人群标签?
  2. mac安装应用提示已损坏的解决方法
  3. SIM868——GPRS调试之公网IP端口无法映射的解决方法
  4. SaaS公司投资分析时,MRR比ARR指标更有用 | 投资人说
  5. 【Web前端基础】实验9 表单页面设计
  6. 声音均衡器怎么调好听_均衡器怎么调能达到最佳效果
  7. PS改变证件照的背景颜色
  8. rms 公式 有效值_RMS,DC,MEAN,RMN到底有什么区别?
  9. python画微信公众号首图
  10. clustalw序列比对_Clustal的使用总结(Clustalx+Clustalw)