测试的目的是显示一个程序做了希望做的事情以及在程序投入使用之前发现其中的缺陷。当测试软件时,会使用人造的数据执行程序。要对测试运行的结果进行检查以发现错误、异常现象,或者关于程序的非功能性属性的信息。
向开发人员和客户展示软件满足需求,这是确认测试。找出可能导致软件行为不正确、出现不希望的行为,或行为不符合规格说明的输入或输出,这是缺陷测试。缺陷测试中的测试用例可以故意有一些不清楚的地方,并且不需要反映软件在正常情况下是如何使用的。
测试只能显式错误的存在,但不能显示没有错误存在。测试是更广泛的软件验证和确认过程的一部分。确认是关于制造正确产品,验证是关于以正确的方式构造产品。软件符合目的的信心水平取决于软件目的、用户期望、市场环境。
除了软件测试,验证和确认过程还包括软件审查和评审。与测试过程相比,审查有三个优势: 1、在测试过程中,一个错误可能掩盖其他错误。2、一个系统的不完整版本可以在不需要额外成本的情况下进行审查。3、可以审查广泛的程序质量属性。然而,审查无法取代测试。
测试包括三个阶段: 1、开发测试。2、发布测试。3、用户测试。测试过程通常会混合手工测试和自动化测试。测试无法做到完全自动化。
开发测试包括由开发系统的团队所执行的所有测试活动。开发测试包括: 1、单元测试,对各个对象和方法进行测试。2、组件测试,会测试相互关联的对象组。3、系统测试,测试一部分或整个系统。
自动化测试案例包括设置部分、调用部分、断言部分。如果测试对象依赖还没有实现的对象,可以使用Mock对象。
测试先行是一种开发方法,其中测试在要测试的代码开发之前就编写好了。然后可以对代码进行少量的修改并对代码进行重构,直到所有的测试都成功运行。
发布测试包括基于需求的测试、场景测试、性能测试。
用户测试分为阿尔法测试、贝塔测试、验收测试。验收测试包含六个阶段: 1、定义验收准则。2、计划验收测试。3、设计验收测试用例。4、运行验收测试。5、协商测试结果。6、接受或拒绝系统。验收测试是一个用户测试过程,其目的是确定软件是否足够好以至于可以进行部署并在原计划的运行环境中使用。