一、
软件测试的定义和目的
定义
-
用人工和自动化方式进行测试,目的是通过软件测试找到软件的预期执行效果和实际结果之间的偏差。
目的
-
用最少的人力、物力、财力。找到软件中的问题并让程序员修复,降低商业风险。
1.什么是软件
控制计算机硬件工作的工具
2.什么是软件测试
使用技术手段验证软件是否满足使用要求
二、软件测试的分类
1.按阶段划分
- 单元测试:程序的最小单位是模块,单元测试就是对每个模块进行测试。
- 集成测试:表示每个模块已经正常,集成测试就是将多个模块组合起来进行测试
- 系统测试:将软件作为一个整体来测试,测试依据是软件需求说明书
- 验收测试:主要是检查软件是否满足客户的要求,对软件进行最后的测试
验收测试分为3小类:
- 1.α版本:内测版本(一般为公司内部使用,这个版本bug比较多)
- 2.β版本:公测版本(这个版本也存在bug但相较于内测较少,存在的bug已经不是靠几个测试人员就能找到的,需要让更多人的人来使用才能找到)
- 3.γ版本:正式版本(最后发行的版本)
2.按照代码进行测试划分
白盒测试:把盒子(程序)打开,去研究里面的源代码和程序结构。
黑盒测试:又称为数据驱动测试,完全不考虑源代码和内部的程序结构。但是我们注重功能需求,我们只需要关心输入输出内容。
灰盒测试:介于黑盒和白盒之间的测试方式,指的是我们即关心程序输入输出结果,同时还关注程序的源代码和程序结构。
3.按是否运行分类
-
静态测试:指的是不实际运行程序,我们只是分析源代码、文档、界面是否存在bug
-
动态测试:指的运行测试用例,输入测试数据,根据输入输出结果我们来检查程序是否有bug
按是否自动化进行测试
-
人工测试:也叫手工测试,测试人员用手动去进行测试
-
自动化测试:测试人员利用工具使计算机进行自动化测试
其他测试分类
-
冒烟测试:对系统最基本功能进行测试
-
回归测试:测试人员找到bug,提交测试报告。程序员修复bug-->测试针对这个bug进行重新测试。
-
随机测试:其实对被测软件的一些重要功能进行【重复测试】,包括之前测试用例没有覆盖的内容
-
探索性测试:测试人员有相当丰富的经验,测试思路清晰。针对被测软件大概率会出问题的地方进行重点测试。
软件质量模型
软件质量:就是 软件 与 明确的和隐含的定义的需求 相一致的程度
- 功能性:检查业务功能是否满足需求
- 可靠性:容错能力 (出现错误后恢复正常的时间或所需要的能力)
- 易用性:看得懂,会使用
- 效率:性能(响应时间,占用的资源等)
- 维护性:为后续的功能开发与维护提供便利
- 移植性:软件需要能够在不用的环境(软件环境,硬件环境)下都能正常工作
- 信息安全性
- 兼容性