测试总结
软件开发过程的模型
软件开发模型分为:瀑布模型、快速原型模型、螺旋模型。
瀑布模型如下:
瀑布模型是是线性模型的一种,在所有模型中占有重要地位,是所有其他模型的一个基础。每一个阶段执行一次,按线性顺序进行软件开发。
测试的切入点:测试阶段处于软件实现后,必须在代码完成后留出足够的时间给测试活动,否则将导致测试不充分,很多问题到项目后期才暴露。
优点:开发的各个阶段比较清晰。 强调早期计划及需求调查。 适合需求稳定的产品开发。
缺点:依赖于早期的需求调查,不适应需求的变化。 单一流程不可逆。 风险往往延至后期才显露, 失去及早纠正的机会。 问题在项目后期才开始暴露。 前面未发现的错误会传递并扩散到后面的阶段,可能导致项目失败。
快速原型模型如下:
在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系 统的开发工作。 第一步是建造一个快速原型,实现用户与系统的交互,用户对原型进行评 价,进一步细化待开发软件的需求。通过逐步调整原型使其满足用户的要 求,开发人员可以确定用户的真正需求是什么。 第二步是在第一步的基础上开发出用户满意的软件产品。
优点:克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目开发风险。适合预先不能确切定义需求的软件系统的开发。
缺点:不适合大型系统的开发(适合 开发小型的、灵活性高的系 统)。前提要有一个展示性的 产品原型,因此在一定程度上可能会限制开发人员的创新。
螺旋模型如下:
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,螺旋模型沿着螺旋线旋转,即在坐标的4个象限上分别表示了4个方面的活动,如上图所示。
优点:螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。
缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识, 在风险较大的项目开发中, 如果未能够及时标识风险,势必造成重大损失。过多的迭代次数会增加开发成本,延迟提交时间。
软件测试和软件工程
软件测试与软件工程息息相关,软件测试是软件工程组成中不可或缺的一部分。
随着测试过程的管理和发展,测试人员通过大量的实践,从而总结出了不少测试模型,如常见的V模型、W模型、H模型等。这些模型与开发紧密结合,对测试活动进行了抽象,成为了测试过程管理的重要参依据。
V模型是最具有代表意义的测试模型,最早是由Paul Rook在20世纪 80年代后期提出,由英国国家计算机中心文献中发布,旨在改进软件开发的效率和效果;
W模型是IEEE std1012-1998《软件验证和确认(V&V)》的原则中提出了 在软件的需求和设计阶段也应有测试活动,并且提出了相应的原 则; W模型由Evolutif公司提出:开发一个V,测试一个V,组合的W模 型; •测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序, 需求和设计同样要测试
H模型是人们发现虽然软件开发中需求、设计、编码等活动被分阶段执行、 但是实践中,他们并不是完全串行的,它们之间更多时候是交叉进行的,更多的是迭代执行。 为了解决上面的问题,有专家专门提出了H模型,它将测试活动完全独立出来,形成一个完全独立的流程,同时将测试准备和测试执行也清晰表现出来。
软件测试分类
按开发阶段划分:单元测试,集成测试,系统测试,验收测试
单元测试:又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。 单元定义:C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单。
集成测试:又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分。 1.什么时候进行集成测试? 2.由谁来做集成测试?测试人员 3.集成测试的依据?
系统测试:指的是将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。 系统测试在系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以 及系统在不同的软硬件环境中的兼容性等。
验收测试:验收测试是部署软件之前的最后一个测试操作。在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
第三方测试 按测试技术划分:白盒测试,黑盒测试,灰盒测试
白盒测试:指的是把盒子打开,去研究里面的源代码和程序结构。
黑盒测试:又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和输出数据。
灰盒测试:是介于白盒测试与黑盒测试之间的一种测试,既可保证黑盒的关注点又可掌控白盒的内部结构,但不会去对内部程序功能和运 作做详细了解,灰盒测试结合了白盒测试和黑盒测试的要素。
按是否运行分类:静态测试、动态测试。
静态测试:(static testing),指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
动态测试:(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
验收测试:α测试
Alpha 是内测版本,即现在所说的CB,此版本表示该软件仅仅是一个初步完成品, 通常只在软件开发者内部交 流, 也有很少一部分发布给专业测试人员。一般而言, 该版本软件的bug较多, 普通用户最好不要安装。
β测试
Beta是公测版本,是对所有用户开放的测试版本。该版本相对于α 版已有了很大的改进,消除了严重的错误, 但还是存在着一些缺陷,需要经过大规模的发布测试来进一步消除。这一版本通常由软件公司免费发布, 用户可从相关的站点下载。通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改。该版本也不适合一般用户安装。
γ测试
Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本。