软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。(此段摘自百度百科)
通过这学期软件测试课程的学习,我清楚地认识到了软件测试这一过程的重要性,掌握了黑盒测试、白盒测试的测试方法,并能熟练的应用。
1.黑盒测试
黑盒测试是一种常用的软件测试方法,它将被测软件看作一个打不开的黑盒,主要根据功能需求设计测试用例,进行测试。
黑盒测试的方法:
1)等价类划分(Equivalence class partitioning)
2)边界值分析法(Boundary Value )
3)因果图法(Cause Effect Diagram)
4)决策表法(Decision Table-Based)
2.白盒测试
白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
白盒测试的方法:
1)代码检查
代码检查是静态白盒测试,在不执行程序的条件下仔细审查代码,从而找出软件故障的过程。
2)覆盖测试
覆盖测试以程序内部的逻辑结构为基础设计测试用例,要求对被测程序的逻辑结构有清楚的了解。根据覆盖测试的目标不同,可分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖。
语句覆盖:指设计若干个测试用例,使程序中的每个可执行语句至少被执行一次。
判定覆盖:指设计若干个测试用例,使得程序中的每个判定至少得到一次真值和假值,即判断中的真假分支至少均执行一次。判定覆盖又称为分支覆盖。
条件覆盖:指设计若干个测试用例,使得程序中每个判断中每个条件的可能值至少得到一次。
判定/条件覆盖:指设计若干个测试用例,使得判断中每个条件的所有(真或假)取值至少出现一次,并且每个判断的所有(真或假)判断结果也至少出现一次。
组合覆盖:指设计若干个测试用例,使得每个判定条件的各种情况至少出现一次。
路径覆盖:指设计若干个测试用例覆盖程序中所有的路径。
3)路径测试
从一个程序的入口开始,执行所经历的各个语句的完整过程。
3.系统测试
系统测试(System Testing)是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。
另外系统测试种类繁多,大体就分为功能测试、GUI测试、性能测试、压力测试、容量测试、健壮性测试、安全性测试、可靠性测试、恢复测试与备份测试、协议一致性测试、兼容性测试、安装性测试、可用性测试、配置性测试、文档性测试、验收测试、回归测试。
4.单元测试:
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
5.集成测试:
集成(Integration)是指把多个单元组合起来形成更大的单元。而集成测试就是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的相互接口是否正确。
集成测试的策略分为非渐增式集成和渐增式集成。渐增式集成分为自顶向下和自底向上两种方法。