软件测试进阶
软件测试的分类
按照开发阶段分类
测试金字塔与业务测试分析(经典模型)
名词解释:
- SDK:全称(SoftWare Development Kit),一般是指软件工程师特定的开发工具集合;
- ROI:投入产出比;
单元测试
概念:对软件组成单元进行测试;
目的:检验软件基本组成单位的正确性;
相关信息:
①TDD(Test Driven Development):测试驱动开发(编码前或者编码后)
②测试对象:最小模块
③测试人员:白盒测试工程师或者开发工程师
④测试依据:代码注释+详细设计文档
⑤测试方法:白盒测试
⑥测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
集成测试
概念:将程序模块采用适当的集成策略组装起来,对系统的接口和集成后的功能进行正确性检测的测试工作;
目的:检查软件单位之间的接口是否正确;
相关信息:
①测试阶段:一般在单元测试之后进行;
②测试对象:模块间的接口;
③测试人员:白盒测试工程师或者开发人员;
④测试依据:单元测试的模块和概要设计文档;
⑤测试方法:白盒测试和黑盒测试相结合;
⑥测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响;
系统测试
概念:将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试,包括回归测试和冒烟测试;
相关信息:
①测试阶段:集成测试之后;
②测试对象:整个系统(软、硬件);
③测试人员:黑盒测试工程师;
④测试依据:系统设计文档;
⑤测试方法:黑盒测试;
⑥测试内容:产品的功能、界面、安全性、兼容性、可移植性、性能、易用性、可靠性等进行测试;
冒烟测试
概念:冒烟测试是在软件开发过程中的一种针对软件版本包的快速基本功能验证策略,是对软件基本功能进行确认验证的手段。
目的:快速验证软件基本功能是否有缺陷,如果冒烟测试的测试例不能通过,则不必做进一步的测试;
回归测试
概念:
在当前版本中对上一个版本中测过的功能再重复测试;
为什么要回归测试?
1.之前版本中发现的bug被解决后可能产生新的问题.
2.新添加的功能可能会对原有功能产生影响,形成新的缺陷.
回归测试的必要性:
回归测试中存在大量的重复测试,所以为了提高测试效率,企业中会选择使用自动化的方式进行(条件允许时}
验收测试
概念:是部署软件之前的最后一个测试操作;
目的:是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,满足影虎需求。
相关信息:
①测试阶段:系统测试之后;
②测试对象:整个系统(软、硬件);
③测试人员:主要是最终用户或者需求方;
④测试方法:黑盒测试
⑤测试依据:用户需求、验收标准;
⑥测试内容:产品的功能、性能等,各种文档;
按照测试实施组织分类
α测试
概念:用户到开发现场去进行测试;
β测试
概念:用户在实际使用环境下进行测试;
第三方测试
概念:介于开发方和用户方间的组织的测试;
按照测试执行方式分类
静态测试
概念:静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性;
动态测试
概念:动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能;
按照是否执行手工划分
手工测试
概念:手工测试就是由人去一个一个的输入用例,然后观察结果;
自动化测试
概念:把以人为驱动的测试行为转化为机器执行的一种过程;
按照是否查看代码分类
黑盒测试
概念:在测试中,把软件看做一个黑色的盒子,不关心盒子的内部结构,只关心软件的输入和输出是否满足用户需求;
黑盒测试的测试方法:
等价类、边界值、因果图、正交法、场景分析法、错误猜测法
白盒测试
概念:在测试中,将软件看做一个透明的盒子,关心程序内部结构、源代码,研究程序的内部逻辑结构;
白盒测试的测试方法:
①语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次;
②逻辑覆盖法:判定法,条件法,判定和判定组合,条件和条件组合,判定和条件组合
③循环覆盖法:for while 等
④路径覆盖法:设计足够多的测试用例,要求覆盖程序中所有可能的路径;
灰盒测试
概念:是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况;
按照测试地域分类
软件国际化
概念: 开发软件的时候,使得软件能够适用于不同国家的语言风俗,当软件需要转化语言的时候不用修改源代码的技术;
本地化测试
国际化测试
按照测试对象分类
业务测试
概念:测试人员把系统各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的过程;
界面测试
概念:简称UI测试,测试用户界面的功能模块的布局是否合理、整体风格是否一致、各个控件的放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性、导航简单易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等;
容错性测试
概念:检查软件在异常条件下自身是否具有防护性的措施或某种灾难性恢复的手段;当系统出错时,能否在指定时间间隔内修正错误并重新启动系统;
兼容性测试
概念:指软件之间能否很好的运做,会不会有影响、软件和硬件之间能否发挥很好的效率工作,会不会影响导致系统的崩溃;
易用性测试
概念:交互的适应性、功能性和有效性的体现;
安装测试
概念:测试程序的安装、卸载;
安全测试
包括内存泄漏、性能测试等;