软件测试之基础

软件测试定义

软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际
输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对
其是否能满足设计要求进行评估的过程。
IEEE(行业标准)定义:使用人工或自动的手段来运行或测量软件系统的过程,目的是检验软件系统是否满足规定的需求,并找出与预期结果
之间的差异。

软件测试目的

• 从用户角度看的目的:通过软件测试发现隐藏的错误和缺陷,考虑是否可以接受该产品。
• 从开发者角度看的目的:表明软件产品不存在错误,验证软件实现了所有用户的要求。
• 从测试人员角度看的目的:发现错误,预测错误,提供软件可靠性错误,对软件做出评价。
增强软件使用可靠性,发现软件存在的不足和差异。最终目的是确保最终交给用户的产品的功能符合用户的需求,把尽可能多的问题在产品交给
用户之前发现并改正。
a. 软件测试是为了发现错误而执行程序的过程。
b. 测试是为了证明程序有错,而不是证明程序无错。(发现错误不是唯一目的)
c. 一个好的测试用例在于它发现至今未发现的错误。
d. 一个成功的测试是发现了至今未发现的错误的测试。
e. 帮助开发人员、测试工程师发现问题、分析问题。
f. 减少软件的缺陷数目或者降低软件缺陷的密度。
g. 提高软件的可靠性
h. 评估软件的性能指标。
i. 增加用户对软件的信心。

软件测试流程

1. 测试人员进入项目,首先要确定项目的类型,项目成员,组织架构,项目的定位和目标客户
2. 测试人员拿到需求文档/需求原型,首先要对需求文档/需求原型进行分析
3. 编写测试计划和测试方案(一般由测试经理编写)
 a. 测试计划包括:
   	 1)、测试目标:对测试目标进行简要的描述。
    2)、测试概要:所需测试的软件、名称解释、以及提及所参考的相关文档。
    3)、测试范围:需测试的范围和优先级,哪些需要重点测试,哪些无需测试或无法测试或推迟测试。
    4)、重点事项:主要功能和测试重点。
    5)、质量目标:产品质量目标和软件测试目标。
    6)、资源需求:软硬件、测试工具、必要的技术资源、培训、文档等。
    7)、人员组织:多少人,角色和责任,进行相关的学习和培训
    8)、测试策略:制定测试整体策略、所使用的测试技术和方法
    9)、发布提交:交付的软件产品、测试案例、测试数据及相关文档
    10)、测试进度和任务人员安排:将测试的计划合理的分配到不同的测试人员,并注意先后顺序,如果发的Release不确定,可以给出测试的时间段
    11)、测试开始/完成/延迟/继续的标准:制定测试开始和完成的标准;
    12)、风险分析:需要考虑测试计划中可能出现的风险和解决方法
  b. 测试方案
    1)、测试范围
    2)、测试策略
    3)、测试方法
    4)、测试工具
    5)、测试准备
    6)、测试用例
    7)、测试标准(即通过标准)
    8)、测试风险
    9)、测试输出
4. 参与需求评审(需求评审中,要提出自己的疑问。如争议比较大则会后与相关人员讨论)
5. 准备测试数据,编写测试用例,并划分用例优先级
6. 用例评审(参与评审人员,整个项目成员),评审完成后,修改和补充用例,确保用例覆盖率尽可能的达到100%
7. 收到提测版本后,进行冒烟测试,冒烟测试通过则进行全面测试,不通过则把提测内容返回到相应的开发员
(并通知项目负责人,提测不达标,会造成项目延期,并进一步调整测试计划)
8. 单元测试(白盒测试)->集成测试->系统测试->验收测试(功能测试即黑盒测试);
也就是说:冒烟测试->功能测试->接口测试/接口自动化测试->UI自动化测试->性能测试->输出测试报告->协助产品验收测试	(1.产品验收 )
9. 编写操作手册,培训手册
10. 交付相关测试文档,培训,协助客户验收
11. 准备上线准备,上线后进行绿灯测试,和数据监控

软件测试分类

1. 单元测试:
-单元测试又称模块测试,针对软件设计中的最小单位——程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
-单元定义: C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单。
-如何进行单元测试:单元测试主要用白盒测试,先静态地检查代码是否符合规范,然后动态运行代码,检查其实际运行结果,检查程序的运行结果是否正确是一个最基本的要求,还要关注容错处理,程序的边界值处理等。
2. 集成测试:
-集成测试又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分。
3. 系统测试:
-指将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
4. 验收测试:
-验收测试指按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。在系统测试的后期,以用户测试为主或有测试人员等质量保证人员共同参与的测试。
-α测试:指的是指的是由用户,测试人员、开发人员等共同参与的内部测试。
-β测试:指的是内测后的公测,即完全交给最终用户测试
-验收测试的重要性:验收签字,收钱。
5. 静态测试:
-指不实际运行被测软件,而只是静态地检查程序代码、界面和文档中可能存在的错误的过程。
①概念:被测试对象没有被运行(比如代码的编译,文档的评审),主要是针对软件生产过程中的中间产品
②自动化手段(静态分析,语法分析,符号执行)
③人工手段(评审:代码走读;设计文档技术评审;需求规格说明书的正规检视)
④正规检视:必须严格遵守流程规范(角色分配;活动安排),目的是为了发现缺陷
⑤技术评审:对技术文档进行评估,选择方案
⑥走读:形式比较随意,作者自己讲解,目的是为了发现缺陷,同时可以交流学习
6. 动态测试:
-指实际运行被测程序,输入相应的测试数据,检查实际输出结果与预期结果是否相符。(动态测试方法为结构和正确性测试;动态测试工具Robot、QTP等)概念:被测试对象被运行
软件公司中,往往采用黑盒测试&白盒测试相结合的方式。(静态黑盒测试:看文档,看页面等)
7. 黑盒测试:
-指的是把被测的软件看做一个黑盒子,我们不关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出
①概念:针对软件系统的整体规格做测试,看不到内部的细节结构,好比一个黑色的盒子,所以叫黑盒测试
②黑盒的方法:等价类划分法;边界值分析法;判定表法;因果图法;正交实验法;状态迁移图法;流程分析法
③常见的黑盒测试类型:功能测试;性能测试;负载测试;容量测试
④黑盒测试特点
    优点:对代码能力要求低,只测试最终的贵,测试效率高,容易理解
    缺点:解决问题的成本高,问题定位比较难,不测试软件系统内部细节逻辑结果,对软件需求规格说明书的要求比较高
8. 白盒测试:
-指的是把盒子打来,去研究里面的源代码和程序结构。
静态白盒测试:看源代码等
动态黑盒测试:使用软件等
动态白盒测试:运行源代码等)
①概念:针对软件系统的内部细节做测试,考察内部的逻辑结构,好比盒子是开发的或者透明的,所以叫做白盒测试。(Open Box Testing;Glass Box Testing;Logic Driven Testing)
②白盒的静态测试:控制流分析,数据流分析,信息流分析
③白盒的动态测试:程序插装与逻辑覆盖率
程序插装:将测试代码插入到被测试代码,通过运行插入测试代码的程序得出测试结果,查出被测试代码中是否有问题。
逻辑覆盖率:语句覆盖率;判定覆盖率;条件覆盖率;路径覆盖率
④白盒测试特点
    优点:问题发生容易定位
                测试的比较彻底
                解决问题的成本比较低
    缺点:对测试人员的代码能力要求高
                测试的工作的工作量大
                测试的成本比较高
                对规格问题不做验证
9. 灰盒测试:
-是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。综合运用黑盒测试与白盒测试,灰度取决于被测试对象的颗粒度
10. 功能测试:
-是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
-逻辑功能测试(functiontesting)
-界面测试(UItesting)
-易用性测试(usability testing)
-安装测试(installationtesting)
-兼容性测试(compatibilitytesting)
11. 性能测试:
-是软件测试的高端领域,通常我们所说的高级软件测试工程师一般就是指性能测试或是白盒测试工程师。
-时间性能(事务响应时间等)
-空间性能(系统资源消耗)
-一般性能测试
-可靠性测试
-负载测试
-压力测试
12. 回归测试:
-指对软件的新版本测试时,重复执行上一个版本测试时的用例。
13. 冒烟测试:
-是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测试性。
14. 随机测试:
-是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
15. 自动化测试和人工测试
-人工测试:需要智能的,执行一次的
-自动化测试:机械的重复的,不需要智能的,人工无法完成的(大并发量,查看微妙级的时间相应的)

软件测试模型

1. 瀑布模型
 
2. V模型

3. H模型

4. 双V模型(Verification and Validation)

测试活动与规范

1. 测试计划
针对测试阶段做规划:
①时间的安排
②人员安排
③任务的分配
④测试目标的要求
⑤测试范围的划定
⑥测试计划文档(单元测试计划;系统测试计划;集成测试计划;验收测试计划)
2. 测试设计
①针对测试计划给出时间要求,给定的人员要完成分配的测试任务进行各种策略(详细说明怎么做:具体的工具;方法;模板;任务的顺序)
②测试方案文档(单元测试方案;集成测试方案;系统测试方案;验收测试方案)
3. 测试实现
①针对方案中给出如何编写测试用例,编写测试脚本完成测试用例;测试脚本以及测试规程
②测试用例(单元测试用例;集成测试用例;系统测试用例;验收测试用例)
③测试脚本(单元测试脚本;集成测试脚本;系统测试脚本;验收测试脚本)
④测试规程(单元测试规程;集成测试规程;系统测试规程;验收测试规程)
⑤测试规程(Test Procedure):规定一组测试用例的执行顺序
4. 测试执行
针对计划中安排的测试执行时间、人员、按照方案中给定的环境搭建数据选取等策略,对测试实现中的用例,脚本按照测试规程编排的顺序执行,具体的测试执行工作:
①搭建测试环境
②准备测试数据
③执行测试用例
④记录测试用例执行结果
⑤提交缺陷
⑥跟踪缺陷
⑦回归测试
⑧测试报告

软件质量模型

(1)功能性
子特性:适合性
说明:软件系统应该具备的功能是否有缺失以及是否做了额外的实现(功能少了吗,多了吗(画蛇添足))
举例:【ATM自动存取款机:存款;取款;转账;查询。
缺失:只做了存款取款和查询。
额外的实现:存款;取款;转账;查询;天气预报。】

子特性:准确性
说明:软件系统的功能对数据处理的精准能力(对不对)
举例:【ATM自动存取款机:存款(20,000RMB,每次最多100张面值100的RMB);取款(20,000RMB,每次最多3,000RMB,每天最多8次);转账(同行同地转账50,000RMB);查询(每天查询8次)。
存款(最多50张100RMB);取款;转账;查询】

子特性:互操作性
说明:软件系统和其他软件硬件的交互能力。
举例:【微信的聊天可以发送图片(相册);饿了么点外卖支付(支付宝;微信);图形处理软件中的图片传送到手机。】

子特性:安全保密性
说明:信息安全(1.防止未被授权用户访问到未被授权信息;2.保证被授权用户能够访问到授权的信息)
举例:【微信付账指纹(你的指纹可以确认付款;防止其他人的指纹确认付款);
银行转账50万元RMB(允许本人当天转账50万元RMB;防止其他人转你银行的账)】

子特性:功能依从性

(2)可靠性 
子特性:成熟性
说明:内部存在的问题比较少
举例:微信运行一年不闪退。

子特性:容错性
说明:外部的异常操作,攻击的处理能力。
举例:微信朋友圈每次试图添加十张图片。

子特性:易恢复性
说明:对问题进行处理恢复正常的能力。
举例:重启APP;重新启动操作系统。

子特性:可靠依从性

(3)效率 
子特性:时间
说明:软件系统的某个功能运行的响应时间。
举例:ATM机群看5,000RMB3秒吐出;

子特性:资源
说明:软件系统运行或者某个功能运行资源占有率。

子特性:效率依从性

(4)易用性
子特性:易理解性
说明:使用控件资源都一致,提示信息框没有误解。
举例:快捷键;提示信息;Tooltip(工具贴士)

子特性:易学性
说明:提供软件系统学习的资料。
举例:帮助手册;用户手册;操作向导

子特性:易操作性
说明:软件系统操作的步骤简单不繁琐。
举例:苹果手机铃声设置

子特性:易吸引性
说明:吸引用户的能力
举例:标题党;

子特性:易用依从性

(5)可移植性
子特性:适应性
说明:软件系统对不同环境的适应能力,环境发生变化对软件的修改比较少。
举例:微信可以Andriod系统;IOS;Windows都可用。可以在不同版本的Andriod;IOS;Windows下可用。

子特性:易安装性
说明:软件系统的安装步骤简单,能够在不同环境下进行安装,不需要做过多的安装配置。(卸载)
举例:手机App。

子特性:易替换性
说明:软件系统的升级、更新和打补丁。
举例:手机APP。

子特性:共存性
说明:在同一个环境下,类似软件共存的能力不能相互影响和抵制。
举例:360和腾讯浏览器。

子特性:可移植依从性

(6)可维护性
子特性:易分析性
说明:出现缺陷或者bug,能够分析出来缺陷产生的原因。
举例:注释行

子特性:易改变性
说明:缺陷发生后有解决缺陷的方案。
举例:教学管理系统报表出错,找不到合适的解决方案。

子特性:稳定性
说明:对缺陷修复之后造成的影响有多大。
举例:代码的耦合度要低

子特性:易测试性
说明:能够被量化,能够编写测试用例,有能够确定的输入数据。
举例:ATM自动存取款机:存款一定金额;取款允许范围内的金额;

子特性:可维护依从性

(7)依从性
对国家法律、行业法规、企业内部规则的遵守

其他

1. 软件测试的定义(软件测试的概念)
2. 软件生命周期(瀑布型、V型、W型、敏捷开发)
3. 软件测试的分类(黑盒测试、白盒测试、集成测试、系统测试、性能测试、安全测试、自动化测试)
4. 软件测试流程(测试需求分析阶段、测试计划阶段、测试设计阶段、测试执行阶段、测试评估阶段)
5. 软件测试方法(等价类、边界值、因果图、判定表、场景法、错误推测法)
6. 软件测试用例(用例编号、测试功能、测试标题、用例优先级、前置条件、测试数据、测试步骤、预期结果、实际结果)
7. 缺陷(bug)的定义(bug的生命周期、bug的类型、bug 的严重级别、bug的管理、bug的提交、bug的跟踪。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值