软件测试目的:
测试是为了发现系统中的错误而执行程序的过程
好的测试方案在于尽可能发现迄今尚未发现的错误
成功的测试是发现了至今为止尚未发现的错误的测试
测试并不仅仅是为了找错误,还需要分析错误产生的原因和错误发生趋势,可以帮助项目管理者发现当前软件生命周期的缺陷,以便及时改正过程,通过测试分析有助于改正后期测试人员设计和测试方法,改善测试效率和有效性,没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
软件测试原则:
- 所有的软件测试都是要基于用户的需求(公司内部的产品使用人员、淘宝用户群体会很广)
- 软件测试越早介入越好(需求调研就可以介入,更透彻的了解产品需求)更好的设计测试用例,在产品规格说明书评审时测试人员必须介入
- 谁都无法确保产品0 缺陷(产品生命周期无法出现的bug )
- 软件测试无法覆盖所有的场景
- 测试是有周期的,不可能无止境执行下去(测试计划会规定测试执行周期,评估发布版本)
- 缺陷越早发现修复成本越低(评审,产品流程规范性 QA )
软件测试对象:
程序(软件 app 微信 QQ 51job 58 应用 C/S 基于客户端架构.net B/S 基于浏览器 淘宝 京东) 80%
文档 测试(文档规范性测试)
QA 流程规范性的测试 软件生命周期,V X 模型 需求调研阶段 需求设计阶段 概要设计 编码 单元测试 集成测试 功能 验收测试 敏捷(小快跑)
数据测试(数据完整性 准确性 安全性)
硬件(ATM 机 电脑 手机)
网络(弱网络 4G 3G 5G 无线网络)
兼容性(不同机型 不同品牌 不同操作系统 不同服务器)
优秀软件测试工程师具备的能力:
软件测试分类:
- 单元测试 单元测试是软件测试最小单元 junit 需要导入junit jar Test() setUp() tearDown()
- 集成测试 也可以叫做组装测试 各功能模块组合在一起进行的联调测试 (系统测试之前进行)
- 系统测试(功能性测试 兼容性 易用性 UI 界面等测试 ) 实现的功能是否跟需求规格说明一致,确定功能是否OK
- 性能测试 第一个层面是应用层面,系统响应时间 错误率 吞吐量(TPS) 指标,服务器层面的指标 cpu 内存 i/o 监控 压力测试 并发测试 稳定性测试
- 白盒测试 代码层面的测试,盒子是白色的可以看到代码结构 业务实现逻辑 接口 一般由开发人员在做
- 黑盒测试 功能性层面的测试,盒子是黑色的,所以看不到里面的业务逻辑 只需要验证功能是否OK 测试人员在做
- 灰盒测试 介于白盒测试和黑盒测试之间
- 安全性测试 很容易被攻击 所以 需要进行安全测试,服务器层面 网络是安全 代码层面,代码是否漏洞 安全策略 进行安全测试,paros appscran awvs 需要付费的软件 代码层面的漏洞,有没有sql 注入
- 验收测试
第一种:公司内部系统 一般由产品经理进行验收(需求提供方进行验收 一般是产品经理)
第二种:公司外部系统第三方系统(项目外包),需要第三方客户进行验收(a 验收 非正式的 有开发人员在现场 b 验收 这是在 客户的现场,没有开发在现场)