一、环境搭建
1.安装禅道
2.安装mySQL、navicat
3.安装Linux
(1)安装虚拟机VMware(服务端)
(2)安装远程连接工具Xshell(客户端)和Xftp(用于把本机文件传到虚拟机上)
二、功能测试
1. 什么是软件?
软件 = 程序 + 数据 + 文档。
2. 软件开发的流程(生命周期)
包括:需求分析、设计、编码、测试、维护。
3. 软件开发模型
1. 瀑布模型
开发流程:需求分析 =》 设计 =》编码 =》测试 =》维护。
缺点:严格的分级,导致自由度很低,不适用于需求频繁变更的项目。
2. v模型
开发流程:需求分析 =》 概要设计 =》 详细设计 =》 编码 =》
单元测试 =》 集成测试 =》 系统测试 =》验收测试
缺点:无法回溯,不适用于需求频繁变更的项目,如果频繁变更会导致工作量会急剧增加。
特点:
1)是线性模型,必须前一个阶段完成,才能进入下一个阶段。
2)会形成大量的文档,用于指导工作。
3)开发周期长,每个阶段会持续几个月。(如果出现需求变更,会更耗时。)
适用行业:航空、航天,这些不会出现需求变更的软件。
------------------ 具体流程 -----------------------------
需求分析:产品经理写的。
概要设计:架构师:设计软件的架构,软件包含的模块。
数据库:数据库的选择、设计接口、数据库表的设计、字段设计、表与表之间的关联。
详细设计:产品经理:设计产品原型图。 开发:设计开发文档。
编码:码农写代码。
单元测试:主要是开发者自测。(属于白盒测试,也就是代码本身测试)
集成测试:主要是开发完成,测试工程师协助测试。负责不同模块代码、把代码集合起来、实现软件的功能,把开发人员开发的独立模块集成到一起,实现软件完整的功能。(比如淘宝:登陆 > 下单 > 支付 > 结算)(属于灰盒测试,也就是接口测试)
系统测试(功能测试):这个阶段app已经完整开发完毕了,完全是由测试工程师负责。主要是验证产品的各个功能是否正常使用。(属于黑盒测试)
验收测试:整个系统测试完毕后,由开发、产品、甲方,给客户演示app各个模块功能,如果客户通过了,就可以安排部署上线。
-----------------------------------------------
3. 迭代模型(现代互联网常用,每次更新一部分功能)
优点:
1)人员:每个迭代版本有单独的项目组,需要更多的人。
2)软件风险:降低了风险。
3)用户反馈:可以得到早期用户的反馈。
4)软件测试:可以持续的测试、集成。
5)软件版本:软件版本快速迭代,上线周期短。
6)软件文档:文档轻量化。
7)对比瀑布模型:与瀑布模型刚好相反。
4. 敏捷开发模型
特点:
1)人员:重视人与人之间的沟通协调。
2)软件版本:软件版本快速迭代,小步快跑,两三周就迭代一次版本。
3)软件文档:轻量化文档。
4)对比瀑布模型:敏捷开发模型是针对瀑布模型的缺陷,而产生的新模式。
4.软件质量模型(8个指标)
最重要的有5个:功能、性能、兼容、易用、安全。
5.软件测试分类
(1)按阶段划分
单元测试:属于白盒测试。基准是逻辑覆盖率。单元内部数据结果,逻辑控制,异常处理。
集成测试:属于灰盒测试。基准是接口覆盖率。模块与模块之间、接口与接口之间数据传递。
系统测试:属于黑盒测试。基准是需求的覆盖率。整个系统相对于需求的符合度。
验收测试:产品经理完成,确保满足用户需求。验收测试又分为α测试、β测试。
α测试:Alpha是内测版本。通常在公司内部测试,人员有可能是测试人员,也可能是公司其他部门的人。
β测试:Beta是公测版本。是面向全球用户群体开放的测试版本。(目的是为了搜集用户的线上反馈和bug,为正式版做好准备。)
(2)按是否可运行划分
静态测试:只测试,不运行程序。也就是说只审查和检查代码逻辑、评审文档(接口文档)、
需求规格说明书(PRD)、产品流程图。
例如: 二手车 —— 踢一下车轮胎、打开引擎盖检查。(静态测试)
动态测试:运行程序,按照预设的数据、步骤来运行被检测的软件系统,从而对被测系统进行检测
的一种测试技术。
例如:发动汽车,听一下发动机的声音、上路行驶。(动态测试)
(3)按是否自动化划分
手工测试:点点点。
自动化测试:通过计算机模拟人的操作,通过运行脚本,自动的测试软件。
(4)其他测试
冒烟测试:测试该版本的核心功能(一般是主干流程测试)。如果明确知道没开发好,就没必要测试,一般从测试用例中选一组最基本的测试用例来执行,一般通过冒烟测试来衡量开发提测的版本是否达到了可以测试的标准,只有冒烟测试通过了,才能开始进行全面的测试。(比如说淘宝的核心流程:登录、选商品、加入购物车、下单、支付)
随机测试:根据以往的经验,去测最平时最有可能出现问题的功能模块,去复测一下。(工作中,有时间就干,没时间就不测)
探测性测试:是一种测试思维,强调测试人员的主观能动性,抛弃繁琐的测试计划、测试用例,在遇到问题时要改变测试的策略。
回归测试:测试人员发现bug,提交给开发去处理,开发解决后,测试人员需要验证bug是否解决调,同时还要测试是否引发新的bug,有没有影响到其他功能。
6.软件测试流程(核心)
核心流程:
(1)需求评审
(2)需求分析(测试人员)
(3)编写测试计划(测试组长)
(4)提取测试点
(5)设计测试用例、用例评审
(6)冒烟测试
(7)执行测试用例
(8)提交bug与管理
(9)编写测试计划
7.提取测试点
1. 如何提取测试点,参考下面的几种方法
步骤1:先从需求入手。
// 功能:
(1)根据需求文档列出的功能,提取出每一个功能里面的要求。
(2)如果没有需求文档,可以参考同类产品,从中提取出每一个功能里面的要求。
(3)重点看增删改查。
(4)提取隐形需求,一般需求文档对功能的描述是正向的,那么我们就需要考虑逆向的情况。
(5)分析业务流程。
// 非功能:
(1)性能测试。 比如说:页面响应时间一般为2,5,8。
(2)用户体验。 比如说:点击删除,需要弹出提示框,然后"是"在右边,"否"在左边。
(3)界面。 比如说:页面的布局、字体、下拉框、超链接。
步骤2: 使用一些技术方法来从需求中提取测试点。
步骤3:场景法。
示例:以邮箱地址为例。
8.写测试用例
1. 测试用例8大要素
2. 测试用例编写流程
需求分析 =》 提取测试点 =》 设计测试用例 =》测试用例评审 =》修改测试用例
格式1:常见。
格式2
9.bug提交与管理
重新激活bug,让开发继续改。
bug的整体流程:提交bug =》 开发人员改bug =》测试人员回归bug =》 测试人员在禅道关闭bug。
10.编写测试报告
在数据库第一个视频中有讲解。
一个版本写一份测试报告,一般由测试组长来写。