软件测试其实有几大类,包括信息系统测试,传统软件的测试和WEB应用系统测试等!在这里咱们只是详细的说一下传统软件测试的内容,这块内容在软考中占的分值相对不是太多,可是经常考,书本上的知识咱们就没有必要丢分了,所以就把它总结一下!
总览:
系统测试是:为了发现错误而执行程序的过程。
软件测试是:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
成功的测试:是发现了至今尚未发现的错误的测试。
测试的目的:希望能以最少的人力和时间发现潜在的各种错误和缺陷。
有效的软件测试:
任何测试都必须包含测试计划、测试用例设计、测试执行和结果数据的收集和评估!
有效的软件测试分为四步:单元测试、继承测试、确认测试和系统测试。下面咱们就来一一讲解。
单元测试:
单元测试也称为模块测试,它侧重于模块中的内部处理逻辑和数据结构。
单元测试的内容为:
1、模块接口:保证测试模块的数据流可以正确的流入和流出。
2、局部数据结构:主要是针对变量的说明,是否赋值或初始化、初始值是否正确,变量名是否正确。
3、重要的执行路径:这是最基本的任务,主要检查是否有计算方面、比较和控制流等方面的错误。
4、出错处理:需要程序员可以预测到出错的可能条件,并对出错进行预防处理。
5、边界条件:最后的工作,非常重要。
单元测试过程:
需要设计两种特殊模块,与被测模块连接,从而对每个模块进行测试。这两个特殊模块就是:驱动模块和桩模块。
驱动模块:接受测试用例的数据,并传给被测模块,自身输出测试结果。
桩模块:可以代替被测试模块中调用的子模块,进行少量数据处理,目的是为了检验入口,输出调用和返回的信息。
注意:
保持每一个模块只完成一个功能(模块独立性),可以提高测试效率,更容易发现模块中的错误。所谓的模块独立,就是保持模块的高内聚低耦合特性。其中考得最多的就是数据耦合(传数据)和内容耦合(使用内部数据),以及逻辑内聚(逻辑上相似的功能,根据参数决定用哪一个)和通信内聚(在同一个数据结构上操作,或使用相同的输入输出数据)以及功能内聚(所有元素完成一个功能,耦合最强)
例题:
集成测试:
集成测试就是把模块按照系统设计要求组合起来进行的测试。它通常有两种方法:非增量集成和增量集成。
非增量集成:分别测试各个模块,再组合模块进行测试。
增量集成:先测试一个模块,测试下一个模块的时候连带着第一个一起进行测试。使得错误容易定位,并可以对接口彻底进行测试。
介绍几个增量集成策略:
1、自顶向下集成测试:从主控模块开始,沿着控制层次逐步向下。将主控模块当做驱动模块,从属于主控模块的所有模块代替桩模块;每次测试前都让实际模块替换一个桩模块;测试完成后,用实际模块替换另一个桩模块;还可以进行回归测试
2、自底向上集成测试:从原子模块开始进行构造和测试,由于每次测试的时候都会有原子模块,所以没有必要使用桩模块。但是必须编写驱动模块,用以协调测试用例的输入和输出。
3、回归测试:重新执行已测试过的某些子集,以确保变更没有传播不期望的副作用。有助于保证变更不引入无意识行为或额外的错误。
4、冒烟测试:是一种常用的集成测试方法,是时间关键项目的决定性机制。
确认测试:
确认测试开始于集成测试的结束,它集中于用户可见的动作和用户可识别的系统输出。需要注意的是:在这个阶段发现错误和偏差是很难再交付期之前得到改正的,需要我们和客户协商,确认解决缺陷的方法。
执行每个确认测试用例以后,存在以下两种可能条件:
1、功能或性能特征符合需求规格说明,可以接受;
2、发现了与规格说明的偏差,创建缺陷列表。
确认测试最重要的成分就是配置评审:主要是检查软件程序,文档和数据。确保文档。资料的正确和完善,以便维护阶段使用。
验收测试可以使客户确认所有的需求,所以验收测试是由用户来进行的。分为
α测试和β测试,也就是
分为
最终用户执行测试的时候
开发者在场和开发者不在场这两种情况。
系统测试:
系统测试是软件测试的最后一步,就是将已经确认的软件、计算机硬件、外设和网络等因素结合在一起。主要是发现所开发的系统与用户需求不符或矛盾的地方。
恢复测试:强制的让系统发生故障,看看是否系统可以在一定时间内恢复过来,并可以正确的处理事务。
安全性测试:确保系统保护机制是否可以实际保护系统不受非法入侵。
压力测试:以非正常的数量、频率或容量等方式执行系统,看看是否会引起系统的不稳定性,从而破坏系统的性能。
性能测试:用来测试软件在集成环境中的运行性能,经常与压力测试一起进行。
部署测试:确保软件可以跨平台运行,确保向用户介绍软件的所有文档是否齐全。
测试方法:
对应不同的测试,都会有不同的测试方法,只有两者结合才可以更好的对软件进行测试。
考得比较多的是黑盒测试中的边界值,和白盒测试中的逻辑覆盖。
语句覆盖:选择足够的测试数据,使被测程序中的每条语句都至少执行一次。最弱
判定覆盖:设计足够的测试用例,使得每个判定表达式至少获得一次“真”“假”值。
条件覆盖:构造一组测试用例,使得每一判定语句中的每个逻辑条件都至少满足一次。
下面一道题考的就是判定覆盖,可以从图中看出,一共有3个表示判定的菱形,可是咱们可以注意到a[mid]>num如果取“真”,就代表a[mid]<num取“假”!相当于一个判定,所以这个题的答案是选B。
小结:
对于软考,本来每个题的分值就少,如果我们丢这里一分,丢那里一分,那么我们还怎么考高分啊!所以现在就开始重视书中的基础知识,争取不让这些书中的知识所对应的额题目丢分!