软件测试之课程总结

      为期八周的《软件测试技术》已经在不知不觉结束,正如软件测试是生产高质量软件不可或缺的一个工程实践活动,对于专业为软件工程的我们学习软件测试也是必不可少。因而在这篇博客中,我会将我在课堂上学习到的知识进行一下总结,以便大家对软件测试的内容有个大致的了解。

(一)介绍:

      软件测试(software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。也就是说软件测试是一种活动,目的在于评价一个程序或系统的属性或能力,决定它符合它自身所需要的结果。

     我们进行测试的目的为:

1.因为我们不是足够好的程序员

2.没有集中足够的精力去克服错误

3.有时忘记使用全构造化的编成,自顶向下的设计得到我们的解决方案

4.我们本应该区分出其他程序员或客户说的话,知道他们是如何想的,和他们真正含义

5.测试本身就是承认“失败(失效)”

      而学习测试的目的为:

1.管理软件的开发过程:需求测试-〉功能验收测试计划

2.更好的设计,编制软件(需求、完成需要的功能、可测性、安全可靠,可用性、执行速度、可维护性)

3.掌握软件测试的原理和方法,提高质量

(二)黑盒测试:

•黑盒测试:是一种常用的软件测试方法,它将被测软件看作一个打不开的黑盒,主要根据功能需求设计测试用例,进行测试。
        
也就是说黑盒测试重中之重是如何合理地设计测试用例方法。常用的方法有
•等价类划分(Equivalence class partitioning)
•边界值分析法(Boundary Value )
• 因果图法(Cause Effect Diagram)
•决策表法(Decision Table-Based)

     其中等价类划分法和边界值分析方法都是着重考虑输入条件,如果程序输入之间没有什么联系,采用等价类划分和边界值分析是一种比较有效的方法。如果输入之间有关系,例如,约束关系、组合关系,这种关系用等价类划分和边界值分析是很难描述的,测试效果难以保障,因此必须考虑使用一种适合于描述对于多种条件的组合,产生多个相应动作的测试方法,因果图正是在此背景下提出的。而对于决策表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格,它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合,当然自然而然就会产生工作量大的缺点。

(三)白盒测试:

    白盒测试:又称结构测试,它一般用来测试程序的内部结构(Control Flow , Data Flow)。并判定其结果是否与预期的结果一致。而白盒测试的种类分为静态分析测试(Static Analysis Test,Code Inspection)、语句分支覆盖测试(Ctrl  Flow Test)等。简单来说,白盒测试是通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致,因而其难点在于如何完整地进行覆盖和定位缺陷。
(四)系统测试:
     系统测试(System Testing)是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。
     另外系统测试种类繁多,大体就分为功能测试、GUI测试、性能测试、压力测试、容量测试、健壮性测试、安全性测试、可靠性测试、恢复测试与备份测试、协议一致性测试、兼容性测试、安装性测试、可用性测试、配置性测试、文档性测试、验收测试、回归测试。
(五)单元测试:
     单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
     单元测试的方法常为孤立测试策略,即:
 •单元内的全局输入/输出变量测试(Driver)
 •单元内调用的函数(Stub)的接口测试
 •覆盖测试(语句覆盖/分支覆盖/复合谓词覆盖/路径覆盖)。
      而进行测试用例设计则又是分情况考虑
 •为系统运行与正向测试设计测试用例:等价类划分、决策表
 •为逆向测试设计测试用例:边界值法
 •为代码覆盖设计测试用例:代码覆盖:语句覆盖、分支覆盖、复合谓词覆盖、路径覆盖、数据定义使用测试
(六)集成测试:
     集成(Integration)是指把多个单元组合起来形成更大的单元。而集成测试(Integration Testing)就是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的相互接口是否正确。
     集成测试的策略分为非渐增式集成和渐增式集成。其中非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。
渐增式集成与“一步到位”的非渐增式集成相反,它把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误。
 
(七)同行评审
 
      同行评审(Peer Review,在某些学术领域亦称Refereeing),或译为同行审查,是一种学术成果审查程序,即一位作者的学术著作或计划被同一领域的其他专家学者评审。一般学术出版单位主要以同行评审的方法来选择与筛选所投送的稿件录取与否,而学术研究资金提供机构,也广泛以同行评审的方式来決定研究是否授予资金、奖金等。同行评审程序的主要目的是确保作者的著作水平符合一般学术与该学科领域的标准。在许多领域著作的出版或者研究奖金的颁发,如果没有以同行评审的方式来进行就可能比较会遭人质疑,甚至成为某出版物、作品是否可以被称为学术出版物的主要标准。具体介绍详见我的博客http://www.cnblogs.com/xlwm/p/4419137.html
 

(八)软件测试管理


     建立软件测试管理体系的主要目的是确保软件测试在软件质量设计中发挥应有的关键作用:
     软件产品的监视和测量 对软件产品的特性进行监视和测量,主要依据软件需求规格说明书,验证产品是否满足要求。所开发的软件产品是否可以交付,要预先设定质量指标,并进行测试,只有符合预先设定的指标,才可以交付。对不符合要求的产品的识别和控制 对于软件测试中发现的软件缺陷,要认真记录它们的属性和处理措施,并进行跟踪,直至最终解决。在排除软件缺陷之后,要再次进行验证。
     产品设计和开发的验证 通过设计测试用例对需求分析、软件设计、程序代码进行验证,确保程序代码与软件设计说明书的一致,以及软件设计说明书与需求规格说明书的一致。对于验证中发现的不合格现象,同样要认真记录和处理,并跟踪解决。解决之后,也要再次进行验证。软件过程的监视和测量 从软件测试中可以获取大量关于软件过程及其结果的数据和信息,它们可用于判断这些过程的有效性,为软件过程的正常运行和持续改进提供决策依据。
 



原文地址:https://www.cnblogs.com/xlwm/p/4468955.html