第一章、认识软件
一、概述
软件又叫做软体,英文是software
不同的设备上叫法不一样
- 普通的电脑上:软件
- 手机,平板电脑:app(application)
1、软件定义
官方:软件是按照特定顺序组织的计算机指令(代码,程序)和数据集合(用户名和密码,商品图片,价格,名称,银行存款记录,取款记录...)
自己的理解:软件是具备特定目的,特定的功能,为了提高生活工作等方面的效率,由代码做出来的一个东西。
2、软件依赖于硬件
软件还是一个特殊的东西,特殊在:软件必须依赖于硬件设备而存在,不能独立存在。
以后做软件,一定会用到设备
可能会用到的设备:
- 普通的电脑:cpu:i5,内存:8G
- 移动端设备(手机,平板电脑):小一些的设备
- 服务器设备:其实就是电脑,但是比普通的电脑配置好很多,cpui10,内存:64G
二、操作系统/系统软件(system software)
不同的硬件设备上安装的操作系统也不一样
普通的电脑:以为图形化为主,以命令行为辅的操作系统,eg:windows,mac
服务器设备:以命令行为主,以图形化为辅的操作系统,eg:linux,unix...
- 图形化:用鼠标点击图标,按钮来操作系统
- 命令行:使用命令来操作系统
windows VS Linux系统:
- 相同点:windows和Linux都是操作系统,都有图形化和命令行两种,但是看以哪个为准
- 不同点:使用方式不同
- windows:通过在图形,图标上用鼠标点击来操作,操作简单,适合广大群众来使用
- linux:通过一个一个命令来使用,提前背命令,适合由电脑基础的人使用
移动端设备:安卓,ios, 鸿蒙
虽然windows以图形化为主,但是仍然要记住的几个命令:
cmd窗口打开方式:点击开始菜单==》搜索程序和文件中输入:cmd ==》 敲回车
- ipconfig ---查看IP地址命令
- ping 对方设备的IP地址 --检查自己电脑到对方电脑之间的网络连通状况
补充:
mstsc ==》远程控制别人的电脑
shutdown -s -t 1800 ==》在1800秒以后关机
shutdown -a ==》取消关机
logoff ==》注销
三、应用软件(application software)
从架构上分类:
1、无架构的应用软件
单机版软件
使用这种软件的时候不需要上网,很多单机版的游戏,eg:植物大战僵尸
2、B/S架构软件
涉及到两个设备
B:browser,浏览器
S:server,服务器
凡事用浏览器访问的网站都是B/S架构的软件,eg:百度网站,淘宝网站
3、C/S架构软件
涉及到两个设备
C:client,客户端
S:server,服务器
需要用户在自己电脑上安装一个专门的客户端软件,才能和服务器进行通信
4、P2P架构
peer to peer,点对点架构
相当于只有客户端,没有服务器,客户端与客户端之间需要上网,eg:飞秋
比较:
- 单机版:只有客户端,没有服务端,而且不需要上网
- P2P:相当于只有客户端,没有服务端,但是客户端与客户端之间需要上网
- B/S:使用浏览器访问服务端,有服务端,需要上网
- C/S:使用客户端访问服务端,有服务端,需要上网
目前,主流的软件架构 B/S,C/S,单机版的比较少了,P2P现在基本上见不到了
四、中间件
介于系统软件和应用软件之间的软件,一般是开发会用到。
第二章、软件团队
又叫做项目组,项目组有大有小,团队成员也会不一样
做一个软件:实现加减乘除,团队小,项目组小
做一个软件:QQ(聊天,QQ空间,QQ邮箱,QQ游戏):团队大,项目组大
一、项目经理(PM)
负责管理整个项目团队,让整个项目团队顺利开展工作
二、开发(dev)
写代码的人,做软件的人
开发经理,开发组长,开发人员(初级,中级,高级,资深)
三、测试(QE)
做质检的,检查软件的质量是否符合客户的要求
测试经理,测试组长,测试人员(初级,中级,高级,资深)
四、需求人员/产品经理
负责和客户进行沟通,获取客户的真实想法,把客户的真实需求记录到文档中 ==?需求文档:开发和测试的工作依据
五、配置管理员(CMO)
负责管理项目组的所有的文档资料
六、质量保证员(QA)
不同的公司对QA的理解不一样,有的公司认为QA就是测试
大部分公司认为测试就是测试,QA就是QA
QA是给项目组来制定工作规范的,让团队的工作变得更加的规范 ==》纪检委
七、维护人员
类似于售后
八、实施人员
驻派到客户现场的人,类似于装空调的人
注意:
如果是大项目组,每个岗位都会有专职人员来做
如果是小项目组,可能会出现某些岗位没有专职人员,是兼职人员做。eg:测试兼职需求,测试兼职CMO,测试兼职QA,测试兼职维护,测试兼职实施
一般情况下不可能出现,开发兼职测试,测试兼职开发,即:开发和测试是同一个人。
第三章、软件的生命周期
一、概述
概念:软件的生命周期指的是软件从无到有,到做出来,到慢慢的使用,到慢慢的不维护,淘汰的过程,即:软件丛生到死的过程。
分为六个阶段:项目计划和可行性研究阶段 ==》 需求分析阶段 ==》 设计阶段 ==》 编码阶段 ==》 测试阶段 ==》 发布与维护阶段
每个软件做出来都会经历这6个阶段。
二、项目计划和可行性研究阶段
参与人员:项目经理,公司决策层等领导层参与,也会和客户进行沟通
先分析这个软件能不能做
eg:做一个赌博的软件 ==》 政策不允许
注册时自动识别三围,素颜 ==》 技术不允许
电商软件:买东西 ==》 做
再确定项目计划:需要做多长时间(规划时间),需要多少人(需要多少开发,需要多少测试),考虑做软件的过程中可能会出现的一些突发状况。盈利,成本。
三、需求分析阶段
参与人员:需求人员
需求人员需要找客户沟通,落实软件的细节,注意:挖掘客户的真实需求
福特的客户说:我想要一匹更快的马
四、设计阶段
参与人员:开发人员
开发人员设计将来写代码要怎么写
五、编码阶段
参与人员:开发人员
开发人员写代码,真正的把软件做出来
六、测试阶段
参与人员:测试人员
测试人员来检测软件的质量,检测做出来的软件是否符合客户的要求
七、发布与维护阶段
参与人员:实施人员,维护阶段
把测试测完的没有问题的软件交付给客户使用,使用的过程中还可以进行维护
注意:不同的软件生命周期的长度会不同
可能有的软件做的时候做了1年,维护6年
可能有的软件做的时候做了3年,维护2年
也有可能有的软件一直做,一直维护下去,一般常用的软件都会一直做一直维护,eg:QQ,微信,支付宝,电信计费系统
第四章、初步介绍软件测试
官方概念:软件测试是指通过人工或自动化方式来检测软件的过程
一、测试方法
1、按人机
- 手工测试:手动的在被测软件中操作来进行测试(手洗衣服)
- 自动化测试:通过写代码,让代码代替人操作进行测试(洗衣机洗)
2、按方法
- 白盒测试:
- 从代码上,从结构上着手进行测试,关注的是代码的内部逻辑
- 黑盒测试:
- 从软件上,从页面上着手进行测试,关注的是页面中呈现出来的功能
- 灰盒测试:
- 介于白盒测试和黑盒测试之间的,即关注代码的内部逻辑,又关注呈现出来的功能,二者都要兼顾
3、按状态
静态测试:不运行代码,不启动软件,来进行测试 ==》代码审查,代码走读
动态测试:运行代码,启动软件,来进行测试
二、测试目的
软件测试的目的是为了找问题(比较片面) --早期
软件测试的目的是为了证明软件可用(软件的质量符合客户的要求)
软件测试的目的是为了预防问题 --预防问题,就需要提早测试
建议测试人员从需求分析阶段就开始介入测试
三、测试流程
测试过程:计划、设计、实现、执行
--指导了测试工作
1、先熟悉被测软件
--医生望闻问切,了解病情
2、定制测试计划(计划)
3w:who、what、when,规划的是谁什么时间点做什么事情
--医生定治疗计划:规划治疗几个疗程,几个月能治好
3、设计测试方案(设计)
制定测试策略,怎么测试?用什么方法测试?测试哪些地方?
---医生定治疗方案:开刀
4、设计测试用例(实现)
进一步思考用什么数据来测试,用什么步骤来测试?
--进一步思考开刀前准备**,开刀的过程中**,开刀后**
洗衣服
计划:二狗子 9.13洗衣服 狗蛋子 9.13 洗裤子 狗腿子 9.14 洗床单
方案:手洗+洗衣机洗 领口、袖口 --粗
用例:
洗领口的步骤: --细
- 打湿
- 涂洗衣液:手搓 半小时
- 温水泡半小时
- 放到洗衣机里洗
5、执行环节(执行)
真的到软件中来测试,真正的测试 --真正的拉进手术室,开刀
6、编写测试报告
总结测得怎么样?测的好不好,测完之后质量是不是合格?能不能交付给客户使用
---医生结论:几年之内不会复发
该吃吃,该喝喝,啥事别忘心里搁
第五章、软件的研发流程
概念:就是做软件的过程,软件的研发流程也叫做研发模型
一、瀑布模型
1970年提出的一种研发模型 --串行模型
严格的按照:项目计划 ==》 需求分析 ==》设计阶段 ==》 编码阶段 ==》 测试阶段 ==》 发布与维护阶段 这个过程做软件。
问题:需求分析阶段的问题要到测试阶段才能发现,改起来花费的代价太大了。
二、螺旋模型
在瀑布模型基础上,更加细化,更加好一点,每个环节都是串行的
问题:必须等到测试结束后,客户才能使用到这个软件
电商:登录,注册,下单,秒杀,直播,搜索商品...
开发设计和编码:9个月
测试:3个月
用户使用到这个软件:1年以后
三、敏捷模型
可以先开发一部分,测试人员测试一部分,客户先使用一部分,分批次来做,慢慢叠加的模式
电商:登录,注册,下单,秒杀,直播,退款,搜索商品...
迭代一:登录,注册,下单,开发:2个月,测试1个月 ==》3个月以后使用到这个软件
迭代二:退款
迭代三:将第一次做的用户名和密码登录改成扫码登录
好处:客户提前享受到这个软件,还比较灵活,快速响应客户的需求变化
第六章、质量
一、概念
质量是实物具有的一种物理属性,每个事物都具有的
eg:衣服的质量,房子质量,电脑质量...
软件的质量,指的是软件的实体特征对用户需求的满足程度,即:软甲是否能满足客户的要求,满足的程度
什么样的衣服质量好??
不褪色,不缩水,不起球,版型好,穿着舒适,衣服材质对人体没有伤害。。。各方面能让我们满意,衣服的质量好。
如何评判软件质量的好坏?
从多方面综合起来评判,全部都让客户满足,软件的质量才好,一旦一方面不让客户满意,软件的质量就不好了。
到底从哪些方面评判软件的质量?有一个专业的质量模型评判
eg:评判登录功能质量的好坏
- 使用正确的用户名和正确的密码能登陆成功
- 使用正确的用户名和错误的密码,提示:用户名或密码错误
- 登录页面文字提示信息能够容易被客户理解
- 登录页面长的好不好看
- 从点击登录按钮到跳转到首页花了10分钟
这些方面全部都符合客户的要求,软件的质量好
二、质量铁三角
想要一个质量好的软件,就要确保三方面
流程 + 技术 + 组织,想象它是一个等边三角形,缺一不可,也是最稳定的,如果有一边变长或变短,则另外两边必定收到影响,只有三边保持平衡的关系,才能达到最佳效果。
1、流程
有一个好的流程,就能让软件的质量做的更好
2、技术
越复杂的软件产品,技术越重要,技术好的,就可以让软件的质量做的更好。
3、组织
团队,具备凝聚力,有共同的目标
三、软件质量的构成
包含三方面:内部质量,外部质量,使用质量
1、内部质量
软件内部的结构过程,即:代码 --》开发人员比较关注的
代码写的好不好,内部质量如果要检测的话需要测试代码,一行一行的检测代码写的好不好 --》白盒测试
2、外部质量
软件做好之后,对外呈现的质量,是否和需求匹配 测试人员比较关注的
从软件上着手来进行测试 --黑盒测试
3、使用质量
软件使用过程中的质量 --客户比较关注的,也是测试人员关注的
第七章、测试阶段
整个测试阶段分为四个阶段:单元测试,集成测试,系统测试,验收测试,也有人认为是5个阶段
一、单元测试
现在基本上不做了,测试零部件的,测试代码的最小构成单元(函数或类),代码:一行一行的测试代码 --白盒测试
二、集成测试
测试零部件整合在一起的一个小部件,还测试部件与部件之间的衔接 --灰盒测试
三、系统测试
大多数测试做的。测试整体的,整个的软件,从软件上进行测试 --黑盒测试
比较:单元,集成,系统 ==》测试的颗粒度越来越大的,测得越来越粗,越来越节省人力
都是测试人员来主导的
验收测试是客户来主导的
四、验收测试
1、正式验收
专业验收,客户会找专门验收机构来帮他们验收
2、α测试
非正式验收,是把客户请到公司来,由开发坐在客户旁边,指挥客户操作来验收
3、β测试
公测,用户在实际的使用环境中进行测试
五、第5个阶段:需求测试阶段
对需求测试(很多人叫做需求评审,不叫测试),当需求人员来客户沟通后写的需求文档,开发,测试,需求,项目经理,客户 ...和软件相关的所有人都要对需求进行测试
发动机:烧汽油
50马力 100个5cm,80个10cm
- 需求评审
- 开发:熟悉需求 ==》计划==》概要设计==》详细设计==》编码
- 测试:熟悉需求==》计划==》测试方案==》测试用例==》单元测试==》集成测试==》系统测试==》验收测试
第八章、测试模型
一、V型
出现原因:瀑布模式中设计和编码占的时间很长,基本上会占到项目周期一半以上的时间,人们往往认为测试只是一个收尾的工作。不是主要环节。
V型是瀑布模式的一个改进,每个环节的产出都测试到了
问题:需求分析,设计阶段隐藏的问题要到编码之后才能发现,太晚了
二、W型/双V型
提出原则:尽早测试和不断进行软件测试
第九章、回归测试
当软件发现问题之后,开发会重新修复bug,bug修复后测试还需要验证,验证的过程叫做回归测试。
一、回归测试策略
完全回归:把之前测试过的地方全部重新测试一遍。
部分回归:把问题多的地方,把核心的功能,把常用的功能重新测试一遍
二、如何选择回归测试
时间,开发水平