河南省周口市安吉软件测试培训中心第一次软件测试课程-测试理论篇

软件测试与质量 同时被 3 个专栏收录
71 篇文章 1 订阅
37 篇文章 0 订阅

练习使用禅道(下载32位开源版)
禅道:项目管理软件
测试人员一般用来跟踪缺陷的生命周期
常用的缺陷管理工具:禅道,jira、 bugzilla、QC等
登录地址:ip地址/zentao(在cmd命令行下面ipconfig获取ip地址)
本机:127.0.0.1/localhost
1:禅道管理与admin修改公司名称:安吉软件测试
2:禅道管理员admin建立部门:产品部、研发部、测试部
3:禅道管理员admin添加员工:产品经理(马化腾)、开发经理(张小龙)、开发人员(雷军)、测试人员(金朝阳)
4:产品经理添加一个产品:安吉ERP系统,并且维护模块:首页、登录、报表
5:开发经理到禅道里面创建一个项目:人力资源管理,并且关联到产品
6:开发经理维护项目团队(把相关的开发、测试、产品拉到项目里面)
7:开发经理建立一个新的版本V1.0
8:测试人员在禅道里面提交一个bug
9:开发人员在禅道系统里面对bug进行确认

 

软件测试的基础理论

软件测试的目的:
简单的来说,软件测试是为了找到软件中隐藏起来的bug,修复之后避免商业风险。


软件测试的定义:
使用人工和自动手段来运行或者测试某个系统的过程,其目的在于
检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。

软件测试原则:
1、测试证明软件存在缺陷:我们的测试工作只能证明当前软件是有缺陷的,而不能中证明它没有缺陷。
2、不能执行穷尽测试:具体的测试操作不可能将所有的的情况一罗列出来,所以测试工作肯定有终止的时候

3、测试应当尽早介入:一般不要在开发完成之后,这样不利于缺陷的尽早发现

4、测试存在群集现象:对于一款软件来说,核心功能只占20%,所以在测试的时候我们会去花跟更多的时间去专门测试这些功能,因为它里面缺陷暴露的可能就会更大些,我们称之为群集现象。

5:测试操作依赖于某个测试环境

6:杀虫剂现象:不要过多使用同一条测试案例来对软件进行问题查找,因为软件会产生“抗性”

7:不存在缺陷的谬论:任何的软件不可能是完美的


软件开发流程:
1、招标
2、软件公司过来做需求调研(整理需求文档)
3、做设计
4、编写代码
5、单元测试(开发来做)
6、集成测试(开发来做)
7、移交到测试部门进行系统测试(测试人员来做)
8、验收测试(alpha测试、Beta测试、第三方验收测试、或者由产品来验收)
9、软件的部署上线
10、维护阶段:
-修复软件在使用过程中的故障
-开发新功能

软件测试的流程
1、参与需求评审(产品经理为主导讲解,开发、测试、产品、项目经理参与)
2、测试组长编写测试计划(依据需求)
3、测试人员编写测试用例(依据需求和产品原型图)
-用例:具体的我们就可以理解是用户对于软件使用的一个完整操作流程,里面会包括测试什么和怎么样去测
4、测试用例的评审(以测试人员为主导),将我们设计好的用例进行适当的删除或者增加和修改。

5、搭建测试环境
所谓环境指的就是软件运行需要依赖的环境。
操作系统、数据库、服务器软件、当前软件底层代码执行所需要的环境(python java)
6、开发申请测试
7、测试人员在测试环境做冒烟测试(smoke testing),冒烟测试不通过的话,版本打回;如果冒烟测试通过的话,正式进入系统测试阶段。
8、执行测试用例、提交缺陷、对缺陷进行跟踪、进行回归测试。
9、验收测试
10、软件的正式发布上线
11、软件的运行维护阶段


软件质量
六大特性:
1、功能性:软件具有满足用户显示或者隐式功能的能力
2、可靠性:软件实现了自己规定的功能
3、易用性:软件在使用上容易上手,易于学习,吸引用户的能力
4、效率性:类似于软件的性能考虑
5、可维护性:在规定条件和规定时间内使用规定的工具修改规定功能的能力
6、可移植性:要求软件具有可以从一个平台移动到另外一个平台上使用的能力

软件的组成
文档
程序
数据

软件的架构:
C/S架构:client/server:客户端/服务器,QQ,微信,手机上APP应用
B/S架构:browser/server:浏览器/服务器,淘宝网,京东商城

区别:
1、C/S架构下载、安装、卸载、升级;B/S架构不需要
2、效率:C/S架构的软件一些复杂的计算是放在客户端进行的,C/S架构的软件可以分担一些服务器数据的存放,因此相对来说C/S架构的软件处理效率会更高一些
3、安全性:C/S架构的软件相对于B/S架构的软件安全性更高一些
4、开发成本:C/S架构的软件开发成本相对较高


软件开发模型
1、瀑布模型
软件计划
需求分析和定义
软件设计
软件实现
软件测试
软件运行维护

优点:
1:开发的各个阶段比较清晰
2:当前一阶段完成后,只需关注后续阶段

缺点:
1:依赖于早期的需求调查,不适应需求的变化
2:风险往往延至后期才显露,失去及早纠正的机会
3:前面未发现会传递并扩散到后面的阶段,可能导致项目失败

适用于需求很明确的项目(需求不频繁变化),分阶段向下执行,无法回溯


2、快速原型模型
在开发真实的系统之前,构造一个原型,在改原型的基础上,逐渐完成整个系统的开发工作。
第一步:建造一个快速原型,实现用户与系统的交互,用户对原型进行评价,通过逐步调整原型使其满足用户的要求,可以确定用户的真正需求是什么
第二步:是在第一步的基础上开发出用户满意的软件产品

优点:
1、克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目风险

缺点:
1、不适合大型系统的开发(适合开发小型的,灵活性高的系统)
2、前提要有一个展示型的产品原型,因此在一定程度上可能会限制开发人员的创新

3、增量模型
4、螺旋模型
5、敏捷模型
在敏捷开发中,软件项目被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之
就是把一个大项目分为多个相互联系,但是也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。


软件测试模型
1、V模型
需求分析:用户需求、业务需求、需求规格说明书
概要设计:系统架构、模块划分、模块与模块之间的接口
详细设计:模块内部实现的逻辑和方法
编码:实现上面的设计
单元测试:检测代码的开发是否符合详细设计的要求
集成测试:检测此前测试过的各组成部分是否能完好地结合到一起
系统测试:拿到产品之后,检测一下最基本的功能和业务流程是否能走通,检测产品的安全性和性能等方面测试
验收测试:检测产品是否符合最终用户的需求

优点:
1、测试的V模型即包含了底层测试又包含了高层测试
底层测试:检验源代码质量的测试:如单元测试
高层测试:检验整个系统的需要,如:系统测试

2、v模型清楚地标识出了软件开发的阶段

3、它采用自顶向下逐步求精的方式把整个开发过程分成不同的阶段,每个阶段的工作都很明确,因此便于控制研发


缺点:
1、很多前期的错误一直到测试阶段才发现,修复成本太高
2、在实际的开发过程中,用户很难把需求完全明确下来,因此当需求变更的时候,会导致阶段反复,而且都要重复需求、设计、编码、测试等过程,返工量非常大,模型的灵活性较低。

2、W模型
双V模型,在开发的每个阶段都有测试活动与之对应
优点:
1、开发强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求和概要设计同样要测试
2、更早地介入测试,可以发现开发初期的缺陷,那么可以用更加低的成本进行缺陷修复
3、同样是分阶段的工作,便于控制项目过程


缺点:
1、对应当前很多项目,在执行过程中根本不产生文档,那么W模型基本上无法适用
2、使用起来技术复复杂度很高,对于需求和设计的测试要求很高,实践起来困难

3、H模型
H模型指出软件测试要尽早执行,只要某个测试达到准备就绪点,测试活动就可以展开。
1、测试准备:所有测试执行活动的准备;判断是否到测试就绪点
2、测试就绪点:测试准入准则,即是否可以开始执行测试的条件
3、测试执行:具体的执行测试的程序

4、X模型
5、前置测试模型

软件测试的分类
按测试阶段(时间阶段)划分:
1:单元测试
2:集成测试(检查模块与模块之间的交互是否正常)
3:系统测试(对整个系统进行测试,包括功能测试、性能测试、安全性测试、兼容性、易用性测试、界面测试、文档测试)
4:验收测试

按照测试技术来划分
黑盒测试:不关注程序的内部逻辑结构,只关注输入和输出
白盒测试:关注程序的内部逻辑
灰盒测试:关注输入和输出,能够根据软件的表现分析出程序的执行逻辑

是否运行程序
静态测试:不运行软件,检查文档、检查编码规范
动态测试:软件运行起来进行测试

按照是否自动化来划分
人工测试(手动测试)
自动化测试

按照测试实施组织划分:
开发方的测试:alpha测试
用户方的测试:beta测试
第三方测试

按其他分类:
冒烟测试(smoke testing)
随机测试
回归测试(部分回归、全部回归)

性能测试
一般性能测试
负载测试
压力测试
稳定性测试

软件测试计划:
软件测试计划Testplan,描述了要进行的测试活动的范围、方法、资源和进度的文档,它确定测试项、被测试特征、测试任务、谁执行测试、各种可能的风险。测试计划可以有效预防计划的风险,保障计划的顺利实施。

测试计划包含6要素(5w1h):
1:why——为什么要进行这些测试
2:what——测试哪些方面,不同阶段的工作内容
3:when——测试不同阶段的起始时间
4:where——相应的文档、缺陷存放的位置、测试环境等
5:who——项目相关的人员组成,安排哪些测试人员进行测试
6:how——如何去做,使用哪些测试工具以及测试方法进行测试
课堂练习:《华东电脑软件测试计划模板》找出5w1h
测试计划:依据需求文档,在计划中要包含测试通过的标准,测试风险分析

测试用例(TestCase):测试用例就是一个文档,描述输入、动作、和一个期望结果,其目的是确定应用程序的某个特性是否正常工作。
测试用例是软件测试的核心
测试用例需要评审
1、测试用例的编号
2、测试用例的标题
3、测试的输入(操作步骤)
4、预期结果
5、优先级
课堂练习:编写登录测试用例

黑盒测试技术用例设计:基于用户需求规格说明书和UI原型图
等价类划分法
边界值法
因果图法
决策表法
错误推测法
场景法
正交法

等价类划分法:依据需求对输入的范围进行细分,然后再分出的每一个区域内选取一个有代表性的测试数据开展测试。
等价类=有效等价类+无效等价类
有效等价类:符合需求说明,合理地输入数据集合
无效等价类:不符合需求说明,无意义地输入数据的集合
设计等价类划分法测试用例步骤:
1、依据常用的方法划分等价类(包括有效等价类和无效等价类)
2、为等价类表中的每一个等价类分别规定一个唯一的编号
3、设计一个新的用例,使他能够尽量多覆盖尚未覆盖的有效等价类,重复该步骤,直到所有的有效等价类均被用例所覆盖
4、设计一个新的用例,使他仅覆盖一个尚未覆盖的无效等价类,重复该步骤,直到所有的无效等价类均被用例所覆盖
何时采用?
-任何测试过程都需要采用
-把可能的用例组合缩减到足以满足测试需求为主

边界值分析法:
边界值分析法是对输入或者输出的边界值进行测试的一种测试方法。通常边界值分析法是作为对等价类划分法的补充。
何时采用?
-边界值法是对等价类划分法的补充,两者结合使用

于等价类划分法的区别
-不是典型值而是所有边界值
-不仅要考虑输入还要考虑输出

边界值分析的原则:
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界值以及刚刚超过这个范围边界的值作为测试输入数据。
2)如果输入条件规定了值的个数,则用最大个数、最小个数和比最大个数多1个、比最小个数少1个的数作为测试数据。
3)如果程序的规格说明给出的输入域或输出域是有序集合 (如有序表、顺序文件等),则应选取集合中的第一个和最后一个元素作为测试用例。
4)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
5)等等

错误推测法(错误猜测法):基于经验和直觉推测程序中所有可能存在的各种缺陷,从而有针对性的设计测试用例的方法。

场景法
什么是场景?
-由一系列相关活动组成,且场景中的活动还能由一系列场景组成
从一个流程开始通过描述经过的路径来确定的过程,经过遍历所有的基本流和备选流来完成整个场景,通过运用场景来对系统的功能点或者业务流程进行描述,从而提高测试效果。

基本流+备选流=场景法

基本流
-是经过用例的最简单的路径,无任何差错,程序从开始直接执行到结束。

备选流
-一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或者终止用例,不再加入到基本流中。

场景法设计测试用例的步骤:
1、根据需求,描述出程序的基本流和备选流
2、根据基本流和各项备选流生成不同的场景
3、对每一个场景生成相应的测试用例
4、审核用例、去掉冗余、给用例确定测试数值

因果图法
因果图法是从需求中找出因(输入条件)和果(输出或者程序状态的改变),通过因果图转换成判定表。
-输入条件之间的关系(组合关系、约束关系等)
-输入和输出之间的关系

因果图设计测试用例的步骤:
1、提取因果,赋予标识符
2、提取因果关系,表示因果图
3、标明约束条件
4、转换成判定表
5、设计测试用例

因果图法什么时候使用?
-应用的输出结构依赖于各种输入条件的组合或者各种输入条件的之间的的某种相互制约的关系候
-当输入的条件过多时,可以考虑输入的所有排列组合情况,考虑条件之间的结果之间的关系,防止遗漏

因果图于(等价类+边界值)的区别:
等价类+边界值:着重考虑输入条件,忽略输入条件的组合情况以及各个输入条件的相互制约关系
因果图:针对输入条件之间的关系,考虑输入条件之间的组合、约束情况


什么是软件的缺陷
软件的缺陷(Defect),常常叫做bug。
所谓软件缺陷,即为计算机软件或者程序中存在某种破坏正常运行能力的问题,错误、或者隐藏的缺陷,缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。

缺陷的严重程度:
1:致命:导致程序崩溃
2:严重:功能不通(比如注册失败)
3:一般性:结果不正确(数据不一致)
4:不严重:界面上的问题(图片无法显示、文案错误),不影响功能的使用

缺陷的优先级:
1:最高优先级
2:次高优先级
3:中等优先级
4:最低优先级


缺陷报告的组成:
1:缺陷的标题
2:重现的步骤(包括操作步骤、期望结果、实际结果)
3:严重级别
4:优先级别
5:缺陷的类型
6:指派给谁
7:软件的版本
8:软件的模块
9:bug产生的环境,操作系统,浏览器
10:给缺陷增加附件
强调一点:一条缺陷报告只能包含一个缺陷


缺陷的生命周期:
1:激活(测试人员来做)——>确认(开发来做)——>已解决(开发来做)——>关闭(测试人员来做)
2:激活(测试人员来做)——>确认(开发来做)——>已解决(开发来做)——>重新激活(测试人员来做)——>已解决(开发人员来做)——>关闭(测试人员来做)
3:激活(测试人员来做)——>拒绝修改(开发人员来做)


测试日报(测试进度报告,每个测试工程师每日下班后把自己的当天的工作情况提交给测试组长):
1:今日的Case执行情况/今日的进度
2:Bug的统计和分析
3:遇到的问题
4:明日的工作计划

测试报告:一般由测试组长来编写
1:测试环境(软硬件的配置环境和网络环境)
2、测试的执行统计:测试的执行时间、测试的人力投入
3、测试的内容:功能模块、子功能、是否有遗留问题,遗留问题的单号
4、测试的结果:A类问题、B类问题、C类问题、D类问题
5、问题的统计及分析:问题按模块统计、问题按严重性统计、问题的详情
6、遗留问题的分析
7、测试的结果

SVN:是一个开源的版本控制系统
一:SVN服务器的搭建
1、安装好之后,启动Visual Server Manager
2、建立版本库
3、建立用户和组,并且需要分配权限(在Repositories属性)
4、给用户组设置权限

二:安装客户端
1、迁出文件版本check out(用于客户端第一次从SVN服务器上下载版本库数据)
2、增加文件,Commit(将文件上传)
3、更新文件,update
4、删除文件
5、比较版本差异

 

 

 

 

 

 

 

 

 

 

 

 

展开阅读全文
  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

金朝阳

感谢大家一直以来的支持和关注

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值