软件发展过程
软件的发展在一定硬件的基础上发展来的, 软件是硬件的灵魂,不同于硬件发展的电子管晶体管,小规模大规模集成电路时代,在计算机语言中 C语言属于高级语言 C/C++ java python ,低级语言主要是汇编语言。
计算机时代 - 成就个人电脑,微型计算机(大型计算机)
网络时代 - 网站,聊天QQ(OICQ - icq),游戏
数字时代 - 电子商务,网上购物,电子办公类
互联网时代 - 移动端发展
5G时代 - 物联网(物物相连)
什么是软件测试
什么是软件测试?软件测试就是一场本该在用户面前发生的灾难提前在自己面前发生了,这会让他们生出一种救世主的感觉,拯救了用户,也就拯救者这个软件,避免了他们被卸载的命运。
使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
正向思维:验证程序是否正常运行,以及是否达到了用户预期的需求
逆向思维:通过执行测试用例发现程序的错误和缺陷
软件测试目的
狭义
就是找Bug
广义
找出软件中潜在的错误和缺陷,通过修复错误和缺陷提高软件的质量,回避软件发布后因缺陷或错误带来的商业分风险
为了检验产品是否符合用户需求
为了提高用户的体验
流畅度、性能范畴
软件的生命周期
需求采集
潜在性,看是否有价值
岗位:商业分析师/需求部门
计划
项目的计划(需求分析、研发设计、测试部署等等的工作时间计划)。由项目经理完成。
需求分析
搜集客户需要,形成需求文档。
软件需求规格说明书(SRS)software requirements specification
设计
概要设计(HLD)High Level Design
详细设计(LLD)Low Level Design
编码
开发编写代码
测试
进行测试。手工测试、自动化测试、性能测试等等,但不是一个项目任何测试类型都要做。
上线、部署、运维
软件维护是软件生命周期持续时间最长的阶段,在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适用用户的需求,要延续软件的使用寿命,就必须对软件进行维护。软件的维护主要包括纠错性维护和改进性维护两个方面。
软件分类
1. 系统性软件 - 操作系统,驱动软件,
2. 应用软件 - 办公软件,浏览器(chrome谷歌,firefox火狐,360,腾讯)
3. 嵌入式软件 - 手机系统
软件行业的职业
1. 软件开发 - 撸代码
2. 软件测试 - 找缺陷
3. 产品经理 - 产品负责产品,提要求(需求),设计产品(画原型图),规划,周期
4. 项目经理 - 负责实施的整个过程
5. 开发经理 - 协调并管理开发人员
6. 测试经理 - 协调并管理测试人员
7. 运维 - 技术类运营维护人员
软件项目组人员组成
项目经理
需求分析人员
设计人员
UI
开发人员 前端、后端
测试人员
手工测试人员、自动化测试人员
配置管理人员
不一定有单独的人员
SQA()
质量管理。测试从技术技术角度保证软件质量,SQA是从流程角度把控质量,跟踪开发/测试的代码、文档进度、质量
QA和QC的区别
QA:品质保证
从流程角度把控质量,看的是整个流程有没有问题,有没有执行到位。跟踪开发/测试的代码、文档进度、质量。
QC:品质控制
QC就是测试人员所做的。测试从技术技术角度保证软件质量。
软件测试职业规划
1. 1-2年,初级测试,掌握基础测试技能,熟悉产品,掌握自动化测试工具,掌握一定开发能力
2. 3-4年,中级测试,熟悉测试过程,原理,操作系统,网络,语言。
3. 4-5年,高级测试,有一定测试组织能力,能进行管理工作,能够考虑成本
4. 5年以上,技术管理,管理测试工程师,控制测试的进度,指导其他测试工程展开工作
5. 其他分类,测试管理 - 测试经理,可以管理8人以上的测试团队,负责多个测试项目,与客户可以进行沟通
初级测试工程师(测试执行)-中级测试工程师(执行和编写)-高级测试工程(设计,管理)-测试经理- 各种经理->副总