一、软件测试的分类
按测试技术划分
黑盒测试、白盒测试、灰盒测试
被测试对象是否运行划分
动态测试、静态测试(文档检查、代码走查)
按不同的测试手段划分
手工测试(点工)、自动化测试(工具+代码)
按测试包含的内容划分
功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试
- 功能测试:测试业务逻辑(手工、自动化)--------核心重要
- 界面测试:UI(user interface)------------外观美观,设计合理,友好---------主观性强----根据需求文档(原型图、UI切图)
- 安全测试:高级类型----攻击(使用工具(例如:扫描--appscan)、代码(脚本--sql注入))-----发现漏洞、薄弱-----------账号密码、http协议-->https协议
- 性能测试:高级测试----双十一(访问人数多)-----并发(10000)--------资源、CPU、内存--是否正常处理(压力测试、稳定性、负载测试)
- 兼容性测试:软件+硬件(windows、linux、MACos、Android、iOS);软件+软件(浏览器兼容)----调用;软件不同版本之间------APP升级(老功能、数据)
- 易用性测试:主观----人性化,舒适。用户使用习惯,用户体验----提bug---------站在用户角度考虑,参考成熟产品
按测试阶段划分--阶段
单元测试、集成测试、系统测试、验收测试、α测试(内测)、β测试(公测)
其他测试
回归测试、冒烟测试、探索性测试/自由测试(测试思维)
- 回归测试:regression test ----测试bug---开发修复bug(修改代码)----验证bug----其他没被修改的代码,有影响模块的测试;---上线前很多轮(2-4轮)的回归测试(重复)
- 冒烟测试:来源:硬件测试(电路板--通电--冒烟--短路)----打回开发重做----软件测试;软件提测--测试核心业务功能,主流程--打回开发;-----提高测试效率
- 探索性测试:发散测试----能力要求非常高;没有依据、方法,靠经验,积累,直觉
二、软件的生命周期:是软件开始研制到最终被废弃不用所经历的各个阶段。(来自软件开发模型)
- 瀑布型生命周期模型
- V模型:开发和测试同时进行的方式来缩短开发周期,提高开发效率。
- 敏捷开发模型:一种以人为核心、快速迭代、循序渐进的开发方式。
1、项目周期多久?(1个月、2周、1周) 迭代周期多久?
弱化文档;强化人之间的沟通:站会--站着开会:10分钟。今天的任务,昨天的问题,协调处理
三、软件测试工作流程
测试报告最后要进行评估:
1、遗留的bug;
2、测试用例覆盖率;
3、bug 的统计与分析;
4、风险
软件测试的基本流程(重点)
测试需求分析阶段:阅读需求,理解需求,主要就是对业务的学习,分析需求点。参与需求评审会议
测试计划阶段:编写测试计划,参考软件需求规格说明书、项目总体计划,内容包括测试范围(来自需求文档)、进度的安排,人力物力的分配,整体测试策略的指定,和风险的评估与规避措施有一个规定,一般由测试负责人编写,当然我们可能也会参与相关的评审工作。
测试设计阶段:主要任务是编写测试用例,会参考需求文档(原型图)、概要设计、详细设计等文档,有不明确的也会及时和开发、产品经理沟通。用例编写完成后会进行评审。
测试执行阶段:首先搭建测试环境,执行预测(冒烟),以判定当前版本可测与否,如果预测通过,正式进入系统测试(2-4轮),遇到问题提交Bug到缺陷管理平台,并对 bug 进行跟踪,直到被测软件达到测试需求要求,没有重大bug,测试结束。-----(完善测试用例)
测试评估阶段:出测试报告,对整个测试的过程和版本质量做一个详细的评估(剩余bug数量/严重程度,测试用例的覆盖率,bug的统计与分析,风险)
UAT测试阶段:部署到UAT测试环境,由产品或者领导来验证功能。
拿到项目的基本测试思路:(分析需求)
1、明确一下这个项目是做什么的?基本业务逻辑流程:淘宝---注册--登录--商品浏览--购物车--提交订单--支付.....流程图(主流 分支流程)
2、细化每一个功能,细化分析提取测试点:注册,登录.....
3、所有的细化模块的分析、组合在一起--------完成项目的测试点-------功能
4、非功能:界面、安全性、兼容性、性能压力、易用性