什么是“软件测试”,What is Software Testing?

有关软件测试,脑里很空,目前自己Google、百度了一下“软件测试”,

各种琳琅满目的培训广告,说明了啥?

这是好的征兆,自己体会喽

写下此文,全方面了解软件测试,知己知彼、刨根问底、技能提高、职业规划。

以下也是对软件测试最基础的认知。



1、什么是软件

软件 = 程序 + 文档

程序:按实现设计的功能和性能要求执行的指令序列。

文档:是与开发、维护和使用有关的图文材料。



2、什么是软件测试

软件测试:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。

经典定义:在规定条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

【简言之,对软件质量的检查】



3、软件测试原则

一,测试人最好在需求阶段开始介入。

二,程序员应该避免检查自己的程序。

三,设计测试用例应尽量100%覆盖需求。

四,应该充分注意测试中的群集现象。

五,对缺陷进行交叉测试和验证。

六,制定严格的有指导性的计划。

七,妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。

【简言之,就是为了交付更高质量的产品给客户】



4、软件测试的对象

程序、数据、文档



5、软件测试分类

先贴上大神Findyou整理的一张图


什么是“软件测试”,What is Software Testing?_第1张图片



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年以上开发与支持(测试/质量保证)活动方面的经验。

  具体工作:管理从事若干项目的人员以及整个开发生存周期。负责把握项目方向与盈亏责任

什么是“软件测试”,What is Software Testing?_第2张图片

你可能感兴趣的:(什么是“软件测试”,What is Software Testing?)