1.1 刚刚起步 软件测试现在在国外非常热门,而在国内起步不久.根据中国商业的发展状况来看,在一个领域还刚刚处于起步状态的时候,就进入这个领域,是个不错的选择.任何东西等大红大紫后再涉入,将是一个不明智的选择. 1.2 发展状况 目前中国越来越多的重视软件测试这一行业,而且,这一行业的人才缺口非常大(国内120万软件从业人员中,真正能担当软件测试职位的不超过5万人,人才缺口达到20万并有逐年扩大的趋势).现在好多大型企业在招聘会中直接打出高薪聘请软件测试工程师的条幅,可见其就业形势还是蛮不错的. 1.3 薪资状况 我现在工作,深圳7k-月薪20k+(10-15居多).以下是网上找的资料,可供参考: 以前起步月薪就在3000-5000元左右,远高于同龄人7000-10000元的薪资水平,另外还可享受带薪年假、内部培训、住房公积金等福利待遇,工作2-3年月薪大约在8000-13000元之间,甚至超出很多相同服务年限的软件开发人员的薪资水平。 2.开发好还是测试好: 2.1 首先要看你的专业素养,现在的就业状况是,C++和C#找工作还可以,若是只会JAVA,除非你技术非常过硬,否则很难找到理想的工作.开发在国内已经处于饱和状态,也就是所谓的已经大红大紫了,这是再往里塞,就要有被塞扁的思想准备. 2.2 若是你水平只是处于中等,那么建议你去做测试.国内开发的高级人才很多,跟他们竞争,无论是从实力还是经验,都不如人家.而测试需要的是计算机知识广泛,最好熟悉多种开发语言,这样比较有前途 3.该如何前进 3.1 首先要提高自己的英语水平,尤其是专业英语的水平,这样等你有机会跟国外客户直接沟通的时候比较方便. 3.2 尽量拓宽自己的计算机方面的知识范围,包括对网络,数据库等的学习. 3.3 最好熟练掌握一门开发语言,对其他的开发语言也最好知道一些. (三)课程内容 q群发课件(一)讲解送进入正题: 1.MBTI职业性格测试 MBTI是国际最为流行的职业人格评估工具,作为一种对个性的判断和分析,是一个理论模型,从纷繁复杂的个性特征中,归纳提炼出4个关键要素——动力、信息收集、决策方式、生活方式,进行分析判断,从而把不同个性的人区别开来。 2.软件测试拿一个杯具开来说: (1)需求测试:制作杯子的使用说明书 客户要实现的功能,开发去进行编写的代码的依据 公司中需求一般是产品经理负责() (2)界面测试: 外观界面测试也称为UI测试(设计) 测试用户界面的功能模块的布局是否合理、整体风格是否一致、各个控件的放置的位置是否符合客户的使用习惯;此外还要测试界面操作便捷性、导航简单易懂性,页面元素的可用性,界面中文字是的正确,命名是否统一,页面是否美观,文字、图片组合是否完美等等 (3)功能测试: 杯子是否漏水等,以及能否喝到里面的水 功能测试就是对产品(软件)的各个功能进行验证,验证产品是否达到客户的要求; (4)安全性测试: 制作材料是否对人体有伤害 软件安全性测试包括程序、网络、数据库安全性测试; 根据系统安全指标不同测试策略也不同 定义:安全性测试是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程;应用程序安全等级测试主要目的是查找软件自身程序设计中存在安全隐患,并检查应用程序对非法侵入的防范能力; (5)可靠性测试: 杯子从高处落下的损坏程度 定义:可靠性测试就是为了评估产品在规定的寿命期间内,在预期的所有环境下,保持功能可靠性而进行的活动,来验证其是否达到在研发、设计、制造中预期的质量目标,从而对产品整体进行评估,以确定产品可靠性寿命。(通过使用各种环境试验设备模拟气候环境中的高温、低温、高温高湿以及温度变化等情况,加速反应产品在使用环境中的状况,来验证其是否达到在研发、设计、制造中预期的质量目标,从而对产品整体进行评估,以确定产品可靠性寿命。) (针对漏洞有相对应可靠的措施,在规定的时间内和范围内完成规定的事情) (6)可移植性测试: 在不同地方不同环境是否正常使用 软件是否可以被移植到指定的硬件或者软件平台上运行 由于计算机的硬件体系结构不同,因而导致在某一类型机器上开发的软件不能在另一类计算机上运行,所有某一种语言开发环境 开发出来的程序,如果不用修改或者只修改极少量的代码便能在其他类的计算机上运行,就是可移植性好。 (7)兼容性测试: 除了装水外是否支持装其它液体 兼容性测试是指协调性 指对所设计程序与硬件、软件之间的兼容性的测试主要是平台兼容:Android、iOS 浏览器的兼容:谷歌、IE(8、9、10)、火狐、360浏览器 分辨率兼容性测试 面试题:谷歌浏览器和360浏览器有什么区别? (8)易用性测试: 使用是否烫手等 (尼尔森十大定律) 易用性是指是否方便使用 易用性包含易理解性、易学习性和易操作性; 易用性是指在规定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。 (9)压力测试:不断对杯子施加重量 压力测试是性能测试之一,软件高负载测试; 临界值() 压力测试:也称为破坏性测试,突破临界值,看系统运行状态 (1)负载测试:慢慢的接近我们的临界值,看系统能承受的最大的值 举例:测试一个空调,一个杯子, (四)IT 常见基本术语 1、硬件:计算机的硬件是计算机系统中各种设备的总称。计算机的硬件应包括5个基本部分,即运算器、控制器、存储器、输入设备、输出设备。 2、 软件:当电脑启动时软件包括应用软件(应用程序包)、系统软件(操作系统,语言编译解释系统服务性程序)、 硬件和软件的关系:互相依存, 无严格界限,协同发展 (云服务器) 3、 pc机 pc机是指个人电脑(超级计算机、小型机、大型机、工作站) 4、 物理机 物理机是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。 5、os (操作系统) 常见系统(windows,macos,linux,ios,andrioid) 功能:处理器管理、存储器管理、设备管理、文件管理 特征:并发、共享、虚拟,异步 6、dos命令 (1)查看ip 打开方式win+r ;输入cmd ; 查看ip地址:ipconfig (ipv4:ip地址,mac地址 ) (2)dir 、cd 、 ping、 net stop 、net user、 netstat 、 网络共享:信息交流,资源共享 备份:数据备份,存储下来 路径:从起点到终点的全程路由;(日常生活中的道路) 服务器:与普通电脑结构差不多,(x86,非x86) 7、BS架构与CS架构 (1)、b/s 浏览器端-----服务端 (web) c/s 客户端 -----服务端 (app) B:browser 浏览器 S:server 服务器 C:client 客户端 B/S:(豆瓣,天涯,知乎) c/S:(抖音App和微信App) (2)区别:bs不需要更新,下载客户端,直接通过浏览器输入网址进行访问; cs 需要下载客户端才能使用,需要定期更新 (3)bs 架构对服务器性能要求高 cs 架构客户端能替 服务端分摊部分的性能压力 (4)bs 不会占用存储内存 cs会占用的存储的内存 优缺点:cs 优: 手机携带方便,操作简单,上传下载的速度相对较快,安全性高 缺:需要安装升级app,服务器相对比较难维护 bs 优:不需要安装直接访问网页,服务器好维护,信息量比较大,资料比较多 缺:安全性不高,信息容易泄露,容易病毒 8、单机软件与共享软件app; 共享软件:一般的功能是不收费,但是部分功能是收费的 开源软件:一般是不收费的 商业软件:都是需要收费的,把软件当做一个商品去交易 APP application 应用程序 9、人员架构: CEO 首席执行官 CTO 首席技术官 PM 项目经理(管理项目,负责项目的进展,项目的安排;开发一款软件,一个系统,直到系统可以正常的上线) 产品经理 负责公司的产品,了解客户需求,把客户需求整理提供给开发和测试 开发经理 管理开发人员,安排开发任务 开发 程序员 de UI设计工程师, 画原型图 前端开发 页面布局,前端的代码,html 后端开发 负责代码逻辑, Java c++ 测试经理 TPM 管理测试人员,安排测试任务 测试主管 TL 测试组长 软件测试工程师 TE 一般都叫测试 主要任务编写测试用例,执行测试用例 测试用例:描述需要验证的功能点,显示操作的步骤,已知预期的结果 pm 项目经理 产品经理 开发经理 de 开发 测试 我们自己 te tpm 测试经理 ba 需求分析 db:表示数据库 dba:数据库管理员 cmo:运维,环境部署 为什么要测试? • 1.软件的非正常运行或其自身的缺陷(BUG)会 引发很多问题。 • 2.软件是由代码和文档组成的,而这些都是由 “人”来设计和编写的,人都有可能犯错。 • 3.环境也会影响软件,以致出现软件“失效”现 象。 • 4. 软件测试活动只是关键的质量保证活动之一 1.软件测试是什么?(software testing) 软件测试广义是(描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程); 经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程; 概括性的说: a、“以检验产品是否满足需求为目标” b、(1)验证软件的正确性;2:发现软件中的缺陷 (2)软件测试从杯具 什么是测试? • 制造业的定义: “以检验产品是否满足需求为目标” • 软件行业的定义,有多种说法: a:验证软件的正确性; b:发现软件中的缺陷 什么是测试? • 制造业的定义: “以检验产品是否满足需求为目标” • 软件行业的定义,有多种说法: a:验证软件的正确性; b:发现软件中的缺陷 软件生命周期概念? • 软件生命周期别称:软件生存周期或软件开发生 命周期 • --指的是软件从产生到报废的整个过程,是一种 时间的概念。 • 例:举一个生活的例子:一部手机的寿命·· 10、v模型 概要设计:简称HLD 是一个文档 概要设计文档中主要的内容有哪些? 架构的初步设计文档,使用说明类型的数据库;架构的描述,设计,模块的名称 (理解为要盖一栋房子,文档里面记录着房子的大概的设计规格) 详细设计:简称LLD 也是一个文档 详细设计主要的内容有哪些? 针对功能具体的实现文档,模块功能的具体实现,具体的设计,架构的具体描述 (房子的具体装饰设计) 重点:四个阶段 1、什么是单元测试 UT unit test (简称叫白盒测试 --开发自测) 单元测试是指验证软件单元是否满足详细文档的规格,能正常执行;主要是对代码进行测试; 单元测试是最小的测试单位; 在工作中,单元测试一般都是开发自测;如果测试要进行单元测试,对测试的技术要求非常高,你必须要懂开发语言 2、什么是集成测试 IT () 集成测试是指多个单元组合验证软件是否满足概要设计文档的规格,能正常执行;主要测试的是模块与模块之间数据的交付;我们也叫做接口测试。 3、什么是系统测试? ST 系统测试是指把软件进行正常的运行,对整个系统进行测试,验证这个系统能正常的运行;主要测试的是一个整体,业务的流程。 4、什么是验收测试 UAT 验收测试是指:站在用户的角度对系统进行测试,验证系统满足用户需求。 验收测试分alpha和beta测试 如果公司验收需要经过α测试和β测试,都是先α(内部测试)测试然后再β(客户方测试)测试 alpha和beta区别(重点) 1、α测试地点是在公司;β测试地点一般都是客户方 2、α测试都是内部人员进行测试,开发在现场,发现问题及时解决; 3、β测试都是客户方的员工测试,发现问题后统一反馈给开发 4、alpha测试时间比较短,测试人员比较集中;beta测试时间较长,测试人员不集中 H模型 测试计划 也是一个文档;也需求评审 测试计划一般都是测试经理或者测试骨干去编写 测试计划中主要的内容:告诉我们这次项目周期,有哪些人参与,每个测试人员负责的模块。 测试用例 是一个Excel文件 一条测试用例代表着你的一个的测试功能点 例如: 验证淘宝首页搜索功能,能够正常的搜索商品 用例评审 召开一个会议(一般都是测试人员去召开) 在会议中,主要是产品经理和测试组所有人员(开发人员);产品经理去看我们写的测试用例是否正确(描述上、逻辑上、预期结果上);简单来说就是开会来验证我们写的测试用例是否正确 交叉评审和组内评审 (一般都会评审1-2轮) 组内评审:产品和开发以及测试所有人员 交叉评审:甲的用例给乙,乙的用例个丙,丙的用例给甲 评审通过后会输入我们的基线化测试用例,然后把用例导入到禅道(用例管理工具),进行用例的分配,分配的原则是哪个写的分配给哪个 环境搭建 (一般都是测试经理或者测试骨干去搭建) 准备一套测试人员进行测试的时候使用的一套环境 开发环境 dev 提供一个开发人员进行编码调试的一个环境 测试环境 sit 测试人员进行验证软件是否可以正常使用的一个环境 验收环境/预生产环境 uat 给公司领导或者客户方去验收的一个环境 生产环境/线上环境/真实环境 最终测试通过之后,对外客户使用的环境 提交版本,也叫做版本包? 所有的代码进行打包,然后放到一个文件中 一般在公司提供都是 war包 xxx.war jar包 xxx.jar 转测/提测 开发人员把版本包(项目包)给到测试人员,叫做转测或者提测 项目包部署 把开发提供的项目包部署到我们之前搭建的环境中 什么是冒烟测试?(重点) 一般冒烟测试不会超过半天(2个小时) 每一次开发提交心感动转测版本/提测版本,测试都需要在测试环境上进行冒烟测试; 冒烟测试定义:是对新版本的主要功能,基本功能进行测试,如果通过,那么冒烟测试通过;测试失败,也就是冒烟测试失败,失败就版本打回给开发进行修改。 冒烟测试又称为版本验证测试、提交测试 冒烟测试通过之后才能进入到系统集成测试(sit1) 回归测试:系统维护阶段,对原有的功能、bug再次进行验证测试,我们称为回归测试 冒烟测试和回归测试的区别? 二者测试阶段不同,冒烟测试是在版本提交时进行的第一个测试;回归测试是在系统维护阶段进行的验证测试。 除了sit1(第一轮系统集成测试外,其他的系统集成测试都可以叫做回归测试) sit测试也就是系统集成测试 (一般会测试3-4轮) sit1(站在测试用例的角度:全量测试):执行全部测试用例 注意点: 1)bug(缺陷)级别:致命、严重、一般、建议(提示) 提bug我们也叫做提单:发现一个bug要及时提交一个 2)所有用例执行完后,我们需要及时的补充测用例 sit2我们也叫做回归测试(站在用例的角度:(增量测试): 1)、也要进行冒烟测试(每一轮都要进行冒烟测试) 2)、验证上次版本提交的bug 3)、测试和bug相关联的模块 4)、测试你认为可疑的测试用例或者是测试场景 5)、测试补充的测试用例或者测试场景 敏捷开发模型: 概念:新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。 敏捷软件开发描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成。敏捷软件开发主张适度的计划、进化开发、提前交付与持续改进,并且鼓励快速与灵活的面对开发与变更。这些原则支援许多软件开发方法的定义和持续进化。 四条原则: 递增、避免不必要的开销、协作、说真话 迭代式开发: 迭代式开发也被称作迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。 迭代一般指某版本的生产过程,包括从需求分析到测试完成; 版本一般指某阶段软件开发的结果,一个可交付使用的产品。 [1] 优点 1.降低风险 2.得到早期用户反馈 3.持续的测试和集成 4.使用变更 5.提高复用性 开发特征 1.在进行大规模的投资之前就解决了关键的风险分析。 2.使得早期的用户反馈在初始迭代中就能出现。 3.对各个目标里程碑提供了短期的焦点(阶段性的中心)。 4.对过程的测量是通过对实现的评定(而不仅仅是文档)来进行的。 5.可以对局部的实现进行部署。 螺旋开发: 适合于大型复杂的系统 螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。 补充资料: 云服务器:(cloud server)是一种简单、高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。 特点:稳定、安全、高效 支持:电子商务、论坛、sns、企业网站、OA系统 产品:腾讯云、华为云、百度云、阿里云、亿恩云、西部数码、景安云、青云、小鸟云、盛大云、 云计算 大数据