软件测试概述
1.1软件测试介绍
1、软件的概念:
➢ 软件是计算机系统中与硬件相互依存的一部分,它是包括程序、数据以及相关文档的完整集合
➢ 软件 = 程序+数据+文档
2、软件测试的概念:
IEEE对测试的定义:使用人工或自动的手段来运行或测定某个系统的过程,其目的是在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差别。
3、IEEE规定的软件测试的目的:
➢ 验证软件是否满足软件开发合同或项目开发计划、系统设计文档、软件需求规格说明、软件设计说明和软件产品说明等规定的软件质量要求。
➢ 通过测试,发现缺陷。
➢ 为软件产品的质量测量和评价提供依据。
| 1 | 2 | 3 |
|---|---|---|
| 确保产品完成了它所承诺或公布的功能 | 确保产品满足性能和效率的要求 | 确保产品是健壮的,适应用户环境的 |
4、软件测试重要性
➢ 人类历史上第一次真正意识到软件缺陷的存在的案例
人类历史上真正意识到软件缺陷的危害是通过一起医疗事故。20世纪80年代加拿大的一个公司生产了一种治疗癌症用的放射性治疗仪。当时在加拿大和美国共使用了11台这样的放射性治疗仪,结果造成了6例病人很快死亡,原因就是放射性治疗仪的软件存在缺陷。
➢ 其他不完全案例
迪斯尼的狮子王游戏
2008年奥运会订票网站瘫痪
12306订票网站瘫痪
京东积分兑换话费
温州动车追尾事故
5、软件质量保证和软件测试的区别
➢ 软件质量保证(Software Quality Assurance, SQA )是一种有计划的、贯穿于 产品生命周期的质量管理方法。目的是提供一种有效的人员组织形式和管理方法, 通过客观地检查和监控“过程质量”与“产品质量”,从而实现持续地改进质量。
➢ 软件测试是使用人工或自动的手段来运行或测定某个系统的过程,其目的是在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差别。
二者所饰演的角色不同
| 软件质量保证 | 软件测试 | |
|---|---|---|
| 创建和加强促进软件开发并防止软件缺陷的标准和方法 | 目标是在最短的时间内,发现尽可能多的缺陷,并确保得以修复 | |
| 偏管理岗位 | 偏技术岗位 |
1.2 软件测试行业
1、软件开发和软件测试的区别
| 软件开发 | 软件测试 | |
|---|---|---|
| 较强的编码能力、逻辑思维能力、判断能力、推断能力:创造性工作,正向思维 | 在最短的时间内发现最多的Bug,并确保得以修复:探索性工作,正逆思维 | |
| 技术的深度 | 技术的广度 | |
| 紧跟技术潮流 | 经验的依赖性高 |
2、软件测试行业
优势:人才需求大 政府扶持强对性别没有挑剔,再也不用为“女程序员”惊讶了,职业寿命长,发展前景好
1.3软件测试技术分类
1、按是否查看程序内部结构分
黑盒测试(Black-box Testing)
把软件产品当作是一个黑盒子,在不考虑程序内部结构的情况下,在程序接口进行测试,它只检查程序功能是否按照需求说明书的规定正常使用,程序是否能接收输入数据而产生正确的输出结果。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nPPUCDDp-1608814716852)(D:\新建文件夹\MarkDown学习\软件测试\images\黑盒测试.jpg)]
白盒测试(White-box Testing)
需要知道盒子里面如何运作的,需要检查程序的内部结构,从检查程序的逻辑着手, 得出测试数据。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gOkLMSGJ-1608814716855)(D:\新建文件夹\MarkDown学习\软件测试\images\白盒测试.jpg)]
2、按测试的执行方式划分
➢ 手工测试(Manual Testing)
利用人工的方式去执行测试,由人工一个一个的输入用例数据,然后观察结果,和自动化测试相对应,属于最基本的测试方法。
➢ 自动化测试(Automatic Testing)
自动化测试是利用工具或程序来代替人工的测试方法。
➢ 自动化测试的优缺点
优点:
- 节约测试时间
- 处理精确事务
- 处理大数据量事务
缺点
- 自动化工具不具有普遍性
- 工具的复杂性制约了人们的使用
- 测试工具是十分昂贵的
- 产品本身不稳定时不能够使用
3、按V模型测试级别划分
➢ 单元测试(unit testing):
对软件中最小可测试单元进行检查和验证,如一个模块、一个过程等等。它的目的是检验软件基本组成单元的正确性。
➢ 集成测试(integration testing):
通过测试的单元模块组装成系统或子系统再进行测试,目的是检查软件单元之间的接口是否正确。
➢ 系统测试(system testing):
将整个软件系统全部集成好之后作为一个整体进行测试,以验证软件系统的正确性和性能是否满足规约所指定的要求。
➢ 验收测试(acceptance testing):
根据用户需求、业务流程进行的正式测试以确保系统符合所有验收准则。
验收测试分为 α 测试和 β 测试
➢ α测试
- 有用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试,试图发现错误并修正。
- α测试的关键在于尽可能逼真的模拟实际运行环境、用户对软件产品的操作要尽可能涵盖所有可能的用户的操作方式。
➢ β测试
- 经过α测试的软件称为β版本。Β测试是由最终用户们在客户场所进行的测试。与 α 不同的是,开发者通常不在现场。
- Β测试发现的bug交给开发修复,然后向全体客户发布最终的软件产品.
4、按测试目标的不同划分
功能测试(Functional Testing/Behavioral Testing ):
功能测试就是指系统能做什么。功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程
非功能测试:
-
性能测试(performance testing)
通过工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。(比如:处理速度、响应时间、CPU使用、内存使用情况等)
-
负载测试(Function testing)
确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
-
压力测试(Security testing)
在规定的或超过规定的需求条件下测试组件/系统,以对其进行评估。它是为了评价一个系统或组件达到或超过需求规 定的界限时的反应的测试。可以检查系统在超负荷的情况的性能反应。
-
可靠性测试(Reliability Testing)
是度量软件如何在主流情形下和非预期情况下维持它的功能,有时也包括软件出错时的自恢复能力。
-
可用性测试(Usability Testing)
是用户学习和控制软件以达到用户需求的容易程度。
-
可维护性测试(Maintainability Testing)
描述的是修改软件而不引入新缺陷所需要的工作量。
-
可植性测试(Portability Testing)
指一种计算机上的软件装置到其他计算机上的能力。
-
兼容性测试(Compatibility Testing)
测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行
-
安全性测试(Security Testing)
检查系统对非法侵入的防范能力。
-
本地化测试(Localizability Testing)
指测试特定目标区域设置的软件本地化质量。
-
配置测试(Configuration Testing)
测试软件是否和系统的其他与之交互的元素之间相兼容。
5、按是否需要运行程序划分
➢ 静态测试(static testing):
不运行被测软件,只是静态地检查程序代码、界面或文档可能存在的错误的过程。
➢ 动态测试(dynamic testing)
实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程。
6、其他测试术语
➢ 确认测试(confirm testing)
重新执行上次失败的测试用例,以验证是否已经修复
➢ 回归测试(regression testing)
对软件进行修改之后进行的测试,目的是检验对软件进行的修改是否正确。
➢ 冒烟测试(smoking testing)
对一个新版本进行大规模测试之前,先验证一下软件的基本功能是否实现。
➢ 随机测试(random testing)
测试员不按照测试用例,随机输入测试数据进行测试
➢ 猴子测试(Monkey testing)
没有主观想法参与进来,随便乱点,让一些意想不到的操作呈现出错误来。
7、常见的测试策略
功能测试
性能测试
压力测试
负载测试
易用性测试
安装测试
界面测试
配置测试
文档测试
兼容性测试
安全性测试
恢复测试
本文介绍了软件测试的基本概念,强调了其在软件质量保证中的重要性,并通过实例展示了软件缺陷可能导致的严重后果。文章还探讨了软件测试行业的发展,特别是其人才需求和职业前景。此外,详细阐述了软件测试的技术分类,包括黑盒测试、白盒测试、手工测试和自动化测试等,并解释了各种测试类型的特点和应用场景。

2896

被折叠的 条评论
为什么被折叠?



