有关软件测试,脑里很空,目前自己Google、百度了一下“软件测试”,
各种琳琅满目的培训广告,说明了啥?
这是好的征兆,自己体会喽
写下此文,全方面了解软件测试,知己知彼、刨根问底、技能提高、职业规划。
以下也是对软件测试最基础的认知。
1、什么是软件
软件 = 程序 + 文档
程序:按实现设计的功能和性能要求执行的指令序列。
文档:是与开发、维护和使用有关的图文材料。
2、什么是软件测试
软件测试:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
经典定义:在规定条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
【简言之,对软件质量的检查】
3、软件测试原则
一,测试人最好在需求阶段开始介入。
二,程序员应该避免检查自己的程序。
三,设计测试用例应尽量100%覆盖需求。
四,应该充分注意测试中的群集现象。
五,对缺陷进行交叉测试和验证。
六,制定严格的有指导性的计划。
七,妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
【简言之,就是为了交付更高质量的产品给客户】
4、软件测试的对象
程序、数据、文档
5、软件测试分类
先贴上大神Findyou整理的一张图
6、软件开发流程
=> 需求分析 => 概要设计详细设计 => 软件编码 => 单元测试 => 代码审查 => 集成测试 => 打包提交测试部 => 等待测试提交bug => 修复bug => 等待测试回归bug => N轮 => 版本上线 => 面向用户使用
7、软件测试流程
-->需求分析 => 设计和评审测试用例 => 搭建测试环境 => 等待开发研发完成提交测试包进行测试 => 部署测试包 => 冒烟测试 => 执行测试用例 => 缺陷跟踪处理 => N轮 => 版本上线 => 面向用户使用 => 测试总结和报告
8、软件测试阶段
一般分为4个阶段:单元测试、集成测试、系统测试、验收测试
单元测试
单元测试是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,测试的对象是软件设计的最小单位:模块。
集成测试
集成测试也称联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。
系统测试
系统测试主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试。
回归测试
回归测试指在软件维护阶段,为了检测代码修改而引入的错误所进行的测试活动。
ps. 回归测试的研究方向还涉及自动化工具,面向对象回归测试,测试用例优先级,回归测试用例补充生成等。
9、软件测试需要技能
硬技能 Hard skill(初级测试工程师)
以下表格是某大型培训机构的课程介绍,大概可以知道需要掌握的技能了(更新于2018.06)
第1阶段: 计算机基础
1.1、【计算机基础】计算机体系结构基础;操作系统基础
1.2、【软件测试基础】软件的基础概念;软件质量及质量模型;软件测试的基础理论;软件测试的需求分析;软件测试流程及模型;软件测试计划及范例。
1.3、【管理工具】SVN
第2阶段: 功能测试
2.1、【系统测试基础】产品需求分析;黑盒用例设计;缺陷定义描述;测试报告撰写。
软件测试策略及方法:白盒测试、黑盒测试、灰盒测试、单元测试、集成测试、系统测试、回归测试、验收测试;
等价类划分法、边界值方法、因果图法、判定表法、正交排列法、错误推算法、场景法编写测试用例;
负载测试、压力测试;易用性、兼容、安装卸载、GUI、安全、文档等测试
2.2、【测试管理工具】测试管理工具 Qc;缺陷管理工具 Jira;项目管理工具 禅道。主要包括:站点管理、版本管理、需求管理、测试计划管理、测试执行管理、缺陷跟踪管理等 测试平台搭建
2.3、【配置管理工具】Git
2.4、【企业级环境配置】虚拟机;Linux基础命令;LAMP环境搭建;WAMP环境搭建;中间件tomcat\Weblogic;数据库的安装;Linux网络连接;应用软件部署。
2.5、【常用数据库】 安装卸载;创建数据库;数据库的增删改;查询(单表,多表);视图,存储过程。主流的数据库管理系统Oracle/MySQL/SQL Server
第3阶段:自动化测试
3.1、【开发语言基础Java、Python】基础语法;程序机构;文件操作;面向对象;异常处理。
深入掌握通用的编程技能,广泛了解C-S、B-S等各种系统的系统架构及核心技术实现,为白盒测试及自动化测试脚本打好基础
了解Python的简史,特点,掌握Python的语法,Python Web及自动化运维,为自动化测试脚本打好基础
3.2、【Web端项目自动化】自动化测试原理;自动化测试适用范围;Selenium的工作原理;Selenium的定位方式;Python+unittest框架;Svn+jenkins持续集成。
3.3、【移动端项目自动化】移动端测试原理;Appium的工作原理;元素定位技术;常见API使用;移动端环境部署;Python脚本开发;搭建完成无人值守框架;
3.4、【接口自动化】网络协议Http、Https;抓包工具:fiddler;接口测试基础及用例设计;使用Postman工具完成接口测试;
第4阶段:性能测试
4.1、【性能测试基础】性能测试理论;Web前端性能分析;性能测试分类;性能测试流程;性能测试用例编写。
4.2、【性能测试工具】loadrunner工作原理;脚本开发技术;参数化技术;关联技术;事务、检查点和集合点;场景设计和监控。
4.3、【性能调优】数据库调优;中间件调优;Linux调优。
4.4、【性能测试报告撰写】撰写性能测试报告步骤;合并、修饰性能监控结果。
ps. 高级测试工程师只能自己慢慢进阶了
软技能 Soft skill
测试意义:找到测试意义,才不会轻易迷失自己。
心理素质:看得清自己的路,抗压能力。
主观能动:找资料、与人沟通、实践、总结。
乐观精神:阿Q精神,做一行,爱一行。
沟通能力:快速全面描述并反馈跟进问题。
分析能力:发现、分析、解决、总结问题。
有条不紊:分配好所有事情的轻重缓急。
富有责任:对自己所做的一切进行负责。
大胆勇敢:勇敢的钻研,尝试,实践、创新。
10、软件测试职业规划
第一阶段:【测试员】初级测试工程师(初出校门)
自身条件:初入具备计算机专业学位,有一些手工测试经验。
具体工作:执行测试用例,记录bug,并回归测试,通过qtp等测试工具录制回归测试脚本,并执行回归测试脚本。
学习方向:开发测试脚本并且开始熟悉测试生存周期和测试技术。
第二阶段:【测试工程师】程序分析员(1-2年)
自身条件:有1~2年工作经验。具有初步的自动化测试能力,完善自动化测试脚本。
具体工作:设计和编写测试用例,编写自动测试脚本程序且担任测试编程初期的领导工作。
学习方向:拓展编程语言、操作系统、网络与数据库方面的技能。
第三阶段:【高级测试工程师】程序分析员(3-4年)
自身条件:有3~4年经验。具有一定的行业业务知识,储备系统分析员的能力。
具体工作:帮助开发或维护测试或编程标准与过程,分析软件需求,获得测试需求。确定测试需求相应的测试方法,获得测试策略方案。参与同行的评审 (软件需求,软件测试计划等),并为其它初级的测试工程师或程序员充当顾问。
学习方向:继续拓展编程语言、操作系统、网络与数据库方面的技能。
第四阶段:测试组负责人(4-6年)
自身条件:有4~6年经验。具有丰富的行业业务知识,具有系统分析员的能力,专长性能测试。
具体工作:负责管理1~3名测试工程师或程序员。集中于技能方面,担负一些进度安排和工作规模/成本估算职责。分析性能瓶颈的原因,为开发团队提供bug解决策略。
学习方向:性能测试,测试技能
第五阶段:【资深安全或性能测试工程师】测试/编程高级负责人(6-10年)
自身条件:有6~10年经验的测试工程师或程序员。
具体工作:负责管理8~10名技术人员。性能测试整体方案设计,软件系统性能问题定位和性能优化,内存优化及分析数据溢出等,分析系统的安全漏 洞等。负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品。负责开发项目的技术方法。为一些用户提供支持与演示。
学习方向:开发一些特定领域的技术专长
第六阶段:测试/质量保证/开发(项目)、经理(10年以上)
自身条件:有10多年的工作经验。
具体工作:管理8名或更多的人员参加的1个或多个项目。负责这一领域(测试/质量保证/开发)内的整个开发生存周期业务。为一些用户提供交互和 大量演示。负责项目成本、进度安排、计划和人员分工
第七阶段:【公司级质量总监】计划经理
自身条件:有10年以上开发与支持(测试/质量保证)活动方面的经验。
具体工作:管理从事若干项目的人员以及整个开发生存周期。负责把握项目方向与盈亏责任