软件测试的定义
在规定的条件下对程序进程操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程
软件测试原则
- 测试能证明软件存在缺陷,不能证明软件不存在缺陷
- 不能进行穷举(一个个的把所有可能性都列举)测试
- 测试工作要尽早介入
- 缺陷存在集群现象(二八原则,20%的模块存在着%80的缺陷)
- 某些测试依赖测试环境(系统或浏览器)
- 杀虫剂现象
- 不存在缺陷谬论(软件一定会存在缺陷)
什么是测试
- 通俗来讲,程序测试就是,运行程序,并发现程序的错误
- 专业来讲就是,验证软件的正确性,完整性,安全性和质量的过程。
- 用程序员的话说就是找bug。
- 软件测试是一个过程
为什么不让开发自已做测试
- 思维定式
- 测试力度
- 关注度
测试的分类
按开发阶段划分
- 单元测试:测试最小的程序模块(针对单个功能进行测试)
- 集成测试:组装测试,通常在单元测试的基础上,单独的模块合在一起测试
- 系统测试:指的是将整个软件系统看为一个整体进行测试
- 软件测试
- 硬件测试
- 验收测试:用户检验产品是否满足自己预期
按是否查看代码划分
- 黑盒测试:关注业务逻辑,输入内容与输出结果之间
- 白盒测试:去研究里面的源代码和程序结构(代码内部实现逻辑)
- 灰盒测试:黑白之间的状态
- 测试关注点
- 输入
- 输出
- 代码逻辑
- 输入
- 测试关注点
按是否运行划分
- 静态测试:指不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误过程。
- 动态测试: 是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
按测试对象划分
- 性能测试
- 安全测试
- 兼容性测试
- 文档测试
- 用户体验测试
- 业务测试
- 界面测试
- 安装测试
- 内存泄漏测试
按测试实施的组织
- α测试:Alpha 是内测版本,通常只在软件开发者内部交流,或忠实的粉丝之间发布,该版本软件的bug较多,普通用户最好不要安装
- β测试:Beta是公测版本,是对所有用户开放的测试版本,免费发布,因为里面还会有一些bug的存在
- γ测试:Gamma版本就是正式版的候选版本
- 负责人(甲乙方):
+ 甲方负责
+ 乙方协助(在甲方的授权及信任基础上)
+ 第三方评测机构
按是否手工执行划分
- 手工测试:测试人员手动去进行的测试
- 自动化测试:利用代码或者工具帮助人工进行测试
测试策略
- 冒烟测试:冒烟测试就是对系统进行最基本功能的测试,保证基本的功能和流程能走通
- 回归测试:当修复一个BUG后,把之前的测试用例在新的代码下进行再次测试
- 随机测试:随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例没有覆盖到的部分
- 探索性测试:探索性测试意味着同时设计测试和执行测试。测试人员通过测试来不断学习被测系统。