什么是软件测试?
通过一些方法手段对软件产品进行正确性、功能性、安全性、兼容性等验证的过程。
(1)软件测试是一种实际输出与预期输出之间的审核或者比较过程。
(2)经典定义:在规定的条件下对程序进行操作,以发现软件的错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
//
软件 = 程序 + 数据 + 相关文档
(程序:将代码打包成.war包(具体后缀不定),目的:整合、机密)
(数据:数据库中存放的内容)
(文档:有些首页描述不是放在数据库中,例如:公告)
—原因:该类信息更新快,不需具备数据库能力的人也可轻易上手
—好处:方便、技巧性低
软件架构:B/S架构、C/S架构
正确性:软件运行内容正确
功能性:验证软件是否能实现具体需要完成的动作
兼容性:在不同软硬件配置下,软件是否能正常运行
/
软测技术体系
软件生命周期:需求、设计、编码、测试、运营、淘汰
软件测试的目的
- 确认软件质量
- 尽可能发现软件中的错误,提高软件的可靠性
- 通过测试活动,发现并解决缺陷,增加人们对被测对象质量的信心
- 通过测试活动,获取被测对象的质量信息,为决策者提供信息
- 预防缺陷、降低风险、保证软件开发过程的高质量
软件工程模型(开发模型)
瀑布模型(自上而下、相互衔接的固定顺序)
需求分析:
产品经理、项目经理、开发人员、测试人员
以会议的形式对需求文档(产品经理撰写)进行分析
概要设计:对软件进行整体的、概要的设计
具体活动:主要明确系统架构、各个模块功能的设计和模块与模块之间的接口。
系统架构:确定系统在实现过程中需要应用哪种应用服务模式
各个模块功能的设计:明确说明各个模块及各个模块需要完成什么功能
模块与模块之间的接口:明确模块和模块进行通信的规则。
详细设计:对软件进行伪码设计
具体活动:设计出实现模块所需要的类、方法等
优点:
1)首次将软件开发过程模型化
2)将整个项目分而治之,降低项目难度
3)将开发过程阶段化,为项目提供阶段性检查点
4)可在迭代模型中应用瀑布模型(即每一次迭代都使用瀑布模型)
缺点:
1)不灵活,某阶段出错将从头开始。线性结构,过程不可逆。
2)测试介入太晚,
3)无法适应用户需求的频繁变更
5)对于大型系统一次占用大量资源(人力资源)
V模型
单元测试(模块测试):
针对软件设计中的最小单位—程序模块,进行正确性检查的测试工作。
依据详细设计对软件组成单元进行测试,主要是为了发现单元内部可能存在的各种错误和不足。
单元测试需要从程序的内部结构出发设计测试用例。
多个模块可以平行地独立进行单元测试。
静态检查(详细设计)和动态执行(白盒为主)
//
单元定义:
C中指一个函数,Java中指一个类,图形化的软件中一般指1个窗口,1个菜单。
/
集成测试(组装测试):
在单元测试的基础上,将所有程序模块按照概要设计要求组装成为子系统或系统进行有序的、递增的测试。
静态检查(概要设计)和动态执行(黑盒测试+白盒测试)
重点测试:
最小单元A + 最小单元B + … = 模块M
不同模块的接口部分。模块接口的数据交换。
单个模块的误差是否会积累放大
系统测试:将整个软件系统看为一个整体进行测试,包括对功能、接口、性能、安全、兼容以及软件所运行的软硬件环境进行全方面的测试。
在系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境中的兼容性等。
验收测试:
α测试:Alpha是内测版。该软件仅仅是一个初步完成品,通常只在软件开发者内部交流,也有很少一部分发布给专业测试人员。一般而言,该版本软件的bug较多,普通用户最好不要安装。
β测试:Beta是公测版,是对所有用户开放的测试版本。该版本相对于alpha已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷需要经过大规模的发布来进一步消除。这一版本通常由软件公司免费发布,用户可从相关的站点下载。通过一些专业爱好者的测试,将结果反馈给开发者,开发者们再进行有针对性的修改。该版本也不适合一般用户安装。
λ测试:Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了,与即将发行的正式版相差无几。
简单来说,Alpha测试主要是测试人员在开发环境下的测试,beta测试是在实际环境中的测试,或者公司内部人员在模拟真实环境中的测试。
优点:
1)包含了底层测试(单元测试)和高层测试(系统测试);
2)清楚的标识了开发和测试的各个阶段以及各个阶段的对应关系;
3)自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。
4)解决了测试介入太晚的问题,较瀑布模型而言,可对局部代码进行测试而非全部。
缺点:
1)自上而下的顺序,测试在编码之后,就导致错误不能及时发现并予以修改;
2)线性结构,无法适应用户需求的频繁变更。
W模型(双V模型)—测试和开发同时进行
集成:将各个功能模块集合在一起
实施:集成之后检测运行是否存在问题
交付:将程序进行打包交付给测试人员,程序运行环境将从开发环境转换为测试环境
优点:
1)测试伴随着整个开发周期,需求和设计同样要测试;
2)更早的介入测试,可以发现初期的缺陷,修复成本低;
3)分阶段工作,方便项目整体管理。
4)测试与开发独立起来,并与开发同步
缺点:
1)开发和测试依然是线性的关系,无法适应用户需求的变更与调整。
///
模型的演化:开发与测试同等重要
三者区别与联系:
测试方面:
瀑布模型、V模型的测试均在编码之后,而W模型是测试与开发同步,可尽早发现问题。但V模型的测试阶段也早于瀑布模型,V模型可提前对局部代码进行测试,而瀑布模型则对整合之后的代码进行测试。
细节方面:
V模型和W模型较瀑布模型而言,更加清楚地标识了开发和测试的各个阶段以及各个阶段的对应关系。
三者是不断对开发过程进行优化的关系,三者都无法适应需求变更,属于一次性开发,无法新增改善,过时即淘汰。
特点:
(1)周期长
(2)成本效益低
(3)需要较大人力投入
(4)团队素质要求高