软件测试就是利用手工或测试工具按照测试方案和流程对产品进行功能、性能方面的测试,也就是对软件作“质检”
通过尽可能少的人力、财力、物力来查找并解决软件中存在的缺陷,从而降低商业风险
(1)测试只是证明软件存在缺陷,不能证明软件没有缺陷
(2)没有错误就是好的,这种说法是谬论,软件测试不仅要找出缺陷,同时要确认软件是否满足需求
(3)不能执行穷尽测试:测试操作不可能将所有情况都罗列出来
(4)测试应当尽早介入
(5)缺陷存在集群现象:二八原则,80%的缺陷存在于20%的模块
(6)杀虫剂现象:不要过多使用一条case对软件进行问题查找,因为这条case如果多次被发现,就更容易被开发人员注意避开这个缺陷,要进行发散思维寻找其他方向
(1)单元测试:单个模块或方法,对代码测试,开发完一个模块后
(2)集成测试:将多个单元模块集中起来测试,对代码测试,单元测试完成后
(3)系统测试:将代码、环境、中间件等集合起来,已经构成了产品,对该产品整体进行测试,测试功能、性能、兼容、界面
(4)验收测试:用户或者需求方对产品进行测试
白盒测试:基于代码进行测试,只看内部结构
黑盒测试(数据驱动测试):不关注内部结构,只看功能。只关注输入对应的输出结果
灰盒测试:介于白盒和黑盒之间
功能测试+性能测试
性能测试:时间性能(事物响应时间)、空间性能(系统资源消耗)、一般性能测试、稳定性测试、负载测试、压力测试
(1)功能不对或功能遗漏
(2)界面错误
(3)数据库访问或者处理错误
(4)性能问题
静态测试:不运行程序,只看需求规格说明书、软件设计说明书、对源程序做结构分析
动态测试:运行程序,检查运行结果是否符合预期
(1)α阿尔法测试(内测)-开发环境测试
初步完成的产品,开发人员自测或测试人员在测试环境(受控环境)进行测试,有问题可以直接找开发人员修复,bug最多。用户不能安装
(2)β贝塔测试(公测)-测试环境
主要由内部测试人员测试,或者部分测试爱好者在相关站点进行下载测试。相比于阿尔法,bug少了很多
(3)γ伽马测试-生产环境
正式发行候选版,与最终发布版本几乎无差别,几乎没有bug
手工测试:手动执行,也叫点点点
自动化测试:编写测试脚本等,接口自动化、UI自动化等
冒烟测试:提测后,部署完环境后,测试人员针对主要业务流程(最基本流程)进行的测试
回归测试:开发修复完bug后,需要回归测试是否修复成功
随机测试:主要是对软件的重要功能进行复测,或者之前出现过的重大bug进行测试,可以是特殊场景的case
探索性测试ET:将对需求了解的人和完全不了解的人集中在一起,在某个时间段对已经基本测试完成的产品进行点点点测试,以发现隐藏的bug