目录
测试分类
按照测试对象进行划分
界面测试
根据UI设计稿和界面设计规则对开发软件界面的全部内容进行测试和检查,主要从以下几个方面进行测试:
- 内容显示的完整性:内容是否全部清晰显示以及页面内容是否可以根据页面大小自适应
- 整个页面布局和排版是否合理:不同字体的设计和图片的展示是否符合要求
- 对界面不同控件的测试:对话框,滚动条,文本框是否可以正常使用,外观设计是否符合要求,有效和无效状态的设置是否合理
- 页面布局和色调符合当下实事的发展
思考:常见的界面错误有哪些?重叠,截断,文字不合理自动换行等
可靠性测试
可靠性即可用性,指系统正常运行的能力,指系统正常向用户提供软件服务的时间占总时间的百分比可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)*100%
系统非正常运行的时间可能是由于硬件,软件,网络故障或任何其他因素(如断电)造成的,这些因素能让系统停止工作,或者连接中断不能被访问,或者性能急剧降低导致不能使用软件现有的服务等。可用性指标一般要求达到4个或5个“9”,即99.99%或者99.999%不同的应用系统,可用性的要求是不一样的,非实时性的信息系统或一般网站要求都很低,99%和 99.5%就可以了,但是军事系统,要求则很高;
如果可用性达到99.99%,对于一个全年不间断(7*24的方式)运行的系统,意味着全年(252600min)不能 正常工作的时间只有52min,不到一个小时。如果可用性达到99.999%,意味着全年不能正常工作的时间只有5min。
容错性测试
容错性测试是指系统能够处理异常,用户的错误操作不至于使系统崩溃,从而提高系统的可用性,系统容错性的考量主要从以下几个方面进行考虑:
- 用户输入异常或者进行异常操作,以检验系统的保护性,如果系统容错性好,系统只给出提示或者内部消化掉,而不是导致系统崩溃比如数据级测试,校验测试,环境容错性测试,界面容错性测试
- 灾难恢复性测试:我们通过各种手段使软件强制发生故障,然后验证系统保存的数据是否丢失以及系统和数据能否快速恢复
文档测试
国家有关计算机软件产品开发文件编制指南中共有14 种文件,可分为3 大类。如何进行可用性的测试?开发文件:可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明 书、数据库设计说明书、模块开发卷宗。–用户文件:用户手册、操作手册,用户文档的作用:改善易安装性;改善软件的易学性与易用性;改善 软件可靠性;降低技术支持成本。–管理文件:项目开发计划、测试计划、测试分析报告、开发进度月报、项目开发总结报告。在实际的测试中,最常见的是用户文件的测试,例如:手册说明书等。也会有一些公司对需求文档进行 测试,来保证需求文档的质量。文档测试的关注点:
- 文档的术语
- 文档的正确性
- 文档的完整性
- 文档的一致性
- 文档的易用性
兼容性测试
对软件进行兼容性测试,主要从以下几个方面进行考量:
对不同的运行终端是否兼容:对于PC端而言,是指软件能否在不同的操作系统和不同的电脑品牌下正常运行,如:Windows,linux,mac等等;而对于手机,则要对Android,IOS等操作系统来进行测试
对不用的浏览器是否兼容:对于不同的浏览器和不同的版本能否正确运行
对第三方APP是否兼容:不同的APP能够兼容,比如我们下载饿了么之后美团能够正常使用以及下载美团之后饿了么能否正常使用
易用性测试
使用简单,不同年龄段用户都可以使用
安装卸载测试
应用的安装和卸载在任何一款APP中都属于最基本功能。一旦出错,就属于优先级为紧要Critical的缺陷。主要需要考虑以下方面:软件不同的安装和卸载方式;(在网页上下载,通过APK进行下载,通过应用市场进行下载)应用是否可以在不同的系统,版本下安装(安装兼容性)安装或者卸载过程中是否可以手动暂停,或者取消安装空不足的时候系统是否有提示是否可以正常的卸载,以及应用软件的各种卸载方式卸载和安装过程中出现环境问题,软件是否可以正常并且合理的应对,比如死机,断电,断网等
安全性测试
安全性是指信息安全,是指计算机系统或网络保护用户数据隐私,完整,保护数据正常传输和抵御黑客,病毒攻击的能力。安全性测试属于非功能性测试很重要的一个方面,系统常见的安全漏洞和威胁如下:
- 输入域,如输入恶性或者带有病毒的脚本或长字符串;
- 代码中的安全性问题,如SQL/XML注入
- 不安全的数据存储或者传递
- 数据文件,邮件文件,系统配置文件等里面有危害系统的信息或者数据;
- 有问题的访问控制,权限分配等
- 假冒ID:身份欺骗
- 篡改,对数据的恶意修改,破坏数据的完整性
性能测试
要进行软件产品的性能问题,要对产品的性能需求进行分析,然后基于系统的性能需求和系统架构,完成性能测试的设计和执行,最后要进行持续的性能调优。常见的性能问题如下:
- 资源泄露(内存泄漏)
- 资源瓶颈(宽带)
- 线程死锁,线程阻塞
- 查询速度慢或效率低
- 受外部系统影响越来越大
衡量一个系统性能好坏的关键性指标有,用户响时间,事务平均响应时间( TPS ),吞吐率,每秒点击 次数,内存和CPU 使用率等。
按照是否查看代码进行划分
黑盒测试
黑盒测试就是在完全不考虑程序逻辑和内部结构的情况下,检查系统功能是否按照需求规格说明书的规 定正常使用、是否能适当的接收输入数据而输出正确的结果,满足规范需求。黑盒测试的优点
- 不需要了解程序内部的代码以及实现,不关注软件内部的实现。
- 从用户角度出发设计测试用例,很容易的知道用户会用到哪些功能,会遇到哪些问题,锻炼测试人 员的产品思维
- 测试用例是基于软件需求开发文档,不容易遗漏软件需求文档中需要测试的功能。
黑盒测试的缺点不可能覆盖所有代码
白盒测试
白盒测试又称为结构测试或逻辑测试,它一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。白盒测试的测试目的是,通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不 同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。主要包含六种测试方法: 语句覆盖(一行代码为一条语句,要覆盖到所有的语句)、判定覆盖(下图中的每一个菱形都是一个判定条件)、条件覆盖(不同条件下的不同结果都要覆盖到)、判定条件覆盖、条件组合覆盖(不同条件下进行不同组合)、路径覆盖(不同路径下进行测试) 。
灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输 出、输入的正确性,同时也关注程序内部的情况。
按照开发阶段进行化划分
单元测试
在java中单元测试的对象是方法和类,在c语言中单元测试的对象是函数
测试阶段:编码后(根据程序进行测试用例的设计,进行测试)或者编码前(TDD)(开发人员根据测试用例进行代码的开发)测试对象:最小模块测试人员:白盒测试工程师或开发工程师测试依据:代码和注释+详细设计文档测试方法:白盒测试测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
集成测试
集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口 及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确。测试阶段:一般单元测试之后进行测试对象:模块间的接口测试人员:白盒测试工程师或开发工程师测试依据:单元测试的模块+概要设计文档测试方法:黑盒测试与白盒测试相结合测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块 缺陷对系统的影响
系统测试
将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。测试阶段:集成测试通过之后测试对象:整个系统(软、硬件)测试人员:黑盒测试工程师测试依据:需求规格说明文档测试方法:黑盒测试测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。随着系统 的庞大,回归测试的成本越来越大,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很 有意义的
冒烟测试
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件主要功能和核心流程正 常,在正式进行系统测试之前执行。冒烟测试一般在开发人员开发完毕后提交给测试人员来进行测试 时,先进行冒烟测试,保证基本功能正常,不阻碍后续的测试
验收测试
验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。测试阶段:系统测试通过之后测试对象:整个系统(包括软硬件)。测试人员:主要是最终用户或者需求方。测试依据:用户需求、验收标准测试方法:黑盒测试测试内容:同系统测试(功能...各类文档等)
按照实施组织进行划分
α测试
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的 测试。α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试。α测试不能由程序员或测试员完成。
β测试
Beta测试是一种验收测试。Beta测试由软件的最终用户们在一个或多个场所进行。
α测试与Beta测试的区别:测试的场所不同:Alpha测试是指把用户请到开发方的场所来测试,beta测试是指在一个或多个用户的场所进行的测试。Alpha测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。beta测试的环境是不受开发 方控制的,用户数量相对比较多,时间不集中。alpha测试先于beta测试执行。通用的软件产品需要较大规模的beta测试, 测试周期比较长。
第三方测试
由出于第三方,介于开发者和用户之间的测试
按照地域划分
本地与国际化测试
本地化和国际化测试与其他类型的测试存在很多不同之处。下面是本地化和国际化测试 的一些要点。1、本地化后的软件在外观上与原来版本是否存在很大的差异,外观是否墼齐、不走样。2、是否对所有界面元素都进行了本地化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括 声音的提示)、日志等。3、在不同的屏幕分辨率下界面是否正常显示。4、是否存在不同的字体大小,字体设置是否恰当。5、日期、数字格式、货币等是否能适应不同国家的文化习俗。例如,中文是年月日,而英文是月日年。6、排序的方式是否考虑了不同语言的特点。例如,中文按照第一个字的汉语拼音顺序排序,而英文按 照首字母排序。7、在不同的国家采用不同的度量单位,软件是否能自适应和转换。8、软件是否能在不同类型的硬件上正常运行,特别是在当地市场上销售的流行硬件上。9、软件是否能在Windows或者其他操作系统的当地版本上正常运行。10、联机帮助和文档是否已经翻译,翻译后的链接是否正常。正文翻译是否正确、恰当, 是否有语法 错误。软件本地化和国际化测试是一个综合了翻译行业和软件测试行业的测试类型。它要求测 试人员具备一定 的翻译能力、语言文化,同时具备测试人员的基本技能。