目录
测试用例设计
常见测试用例题型:
- 非软件题型:水杯
- 软件题型:某个软件的某个模块
- 代码题型:①根据参数设计 ②根据程序逻辑设计:路径覆盖、分支覆盖、判断覆盖、条件覆盖、条件组合覆盖
- 关于个人项目设计测试用例
测试用例万能公式:
功能+界面+兼容+易用+性能+安全+网络(用Fiddler模拟网络)(+安装测试)(每个维度4个)
自动化测试
什么是自动化以及为什么要做:测试人员为了提高工作效率,保障软件的质量,通过代码去辅助测试人员测试软件。
实施自动化测试的前提:需求变动不频繁,项目周期足够长,自动化测试脚本可重复使用。
自动化测试包括UI自动化、接口自动化、单元测试自动化。其中Java单元测试框架是Junit;接口测试就是API测试,相比于UI自动化,它更加容易实现并且执行起来更稳定,常见的测试工具有JMeter,Postman;UI层的自动化测试更加贴近用户的需求和软件系统的实际业务,测试框架主要有web测试的selenium。
设计自动化测试的思路
1、明确项目中哪些页面需要做web自动化测试(重要页面、访问量比较大的页面、页面更新周期比较长)
2、实施:设计测试用例、搭建自动化结构、编写自动化用例、维护
3、优化展望:后期尝试代码提交之前,可以自动触发自动化测试脚本
性能测试
测试人员借助性能测试工具,模拟各种特殊场景去观察系统相关的性能指标是否正常。
按测试对象划分
界面测试(UI测试)
验证页面内容显示的完整性、一致性、准确性、友好性。如页面内容对屏幕大小的自适应,内容是否清晰展示。
界面布局和排版是否合理,不同板块字体的设计,图片的展示。
对界面不同控件的测试,如对话框、文本框、滚动条。
可靠性测试
指系统正常运行的能力或程度,一般用正常向用户提供软件服务的时间/总时间的百分比表示。
容错性测试
系统能处理异常,用户的错误操作不至于系统崩溃,从而提高系统的可用性。
输入异常数据或进行异常操作,检验系统的保护性;灾难恢复性测试,通过让软件强制发生故障,检验用户数据是否丢失,系统和数据能否恢复。
兼容性测试
系统自身版本的兼容性,已有数据的兼容;测试与应用环境的兼容,如操作系统、浏览器、应用平台;与第三方系统及第三方数据的兼容。
易用性测试
关注用户体验,是否舒适易用。包含七个要素:符合标准和规范、直观性、一致性、灵活性、舒适性、正确性和实用性。
安装卸载测试
软件不同的安装卸载方式;应用是否可以在不同的环境、版本下安装;安装卸载过程中是否可以手动暂停或取消;安装时空间不足,是否会提醒;安装卸载过程中出现环境问题,如死机、断电、断网,软件是否可以正常合理应对。
安全测试
代码中的安全性问题,如SQL注入;数据文件里有危害系统的信息或数据;访问权限。进行代码评审,借助安全测试工具。
性能测试
衡量一个系统性能好坏的关键性指标,用户响应时间、事务平均响应时间,吞吐量、每秒点击次数、内存和CPU使用率。
内存泄漏测试
原因:分配内存后忘记回收;程序书写问题,如造成死循环,无法执行到回收步骤;某些API函数的使用不正确,造成内存泄露。
方法:人工静态法:代码走读,人工查找未回收的内存;自动工具法:借助相应测试内存泄漏的工具。
按是否查看代码划分
黑盒测试
在完全不考虑程序逻辑和内部结构的情况下,检查系统功能是否按照需求规格说明书的规定正常使用、是否能适当的接收输入数据而输出正确结果,满足规范需求。黑盒测试又称为数据驱动测试,只注重软件的功能。
白盒测试
它又称为结构测试或逻辑测试,一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。优点:代码覆盖率高。缺点:业务功能覆盖率低。
包含六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
灰盒测试
介于黑盒测试和白盒测试之间的一种测试,多用于集成测试阶段,不仅关注输入、输出的正确性,同时也关注程序内部的情况。
按开发阶段划分
单元测试
对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。
测试内容:模块接口测试、局部数据结构测试、路径测试。
集成测试
将程序模块采用适当的集成策略组装起来,对系统接口及集成后的功能进行正确性检测。主要目的是检验软件单位之间的接口是否正确。
测试内容:模块之间数据传输、模块之间功能冲突、全局数据结构、单模块缺陷对系统造成的影响。
冒烟测试
测试对象是每一个新编译的需要正式测试的软件版本,目的是确认软件主要功能和核心流程正常,在正式进行系统测试之前执行,保证基本功能正常,不阻碍后续测试。回归测试和冒烟测试都属于系统测试。
回归测试
修改了旧代码之后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
系统测试
将软件系统看成是一个系统的测试,包括对功能、性能以及软件所运行的软硬件环境进行测试。
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性
验收测试
部署软件之前的最后一个测试操作,也称为交付测试。验收测试的目的是确保软件准备就绪。测试人员主要是最终用户或需求方。
测试内容:同系统测试
按测试实施组织
α测试
在开发环境下的测试,公司内部用户在模拟实际操作环境下进行的测试,用户数量相对较少,时间集中。
β测试
验收测试,在一个或多个用户场所进行的测试,环境不受开发方控制,用户数量相对较多,测试周期长。
是否按手工划分
手工测试
测试人员一个个的输入测试用例,然后观察测试结果。优点:探索性测试,发散思维结果的测试。缺点:执行效率低,量大易错。
自动化测试
自动化测试是指利用软件测试工具自动实现全部或部分测试,它是软件测试的一个重要组成 部分,能完成许多手工测试无法实现或难以实现的测试。
自动化测试和手工测试的区别
- 手工测试的目的在于通过“破坏”发现系统有bug;自动化测试的目的在于“验证”系统没有bug。当测试系统处于前期不稳定的时候,做自动化测试将毫无意义,因为程序运行到一半就会因为某个bug而停止的,而当这个bug未被修复之前所有的自动化测试都会卡在这里无法往下执行。而当测试系统处于稳定的时候,通过手工测试重复着一样的操作也会变得烦琐和枯燥,所以这两者在不同的测试阶段都有着不可替代的作用。
- 手工测试可以尽可能地覆盖测试系统的各个角落;自动化测试只能覆盖测试系统的主要功能。完全自动化测试,所消耗的时间和资源大于手工测试。所以自动化测试用于重要和稳定的功能,而更多的一些细节的测试还需要手工测试来完成。
- 不管是什么类型的测试方法,只要能发现问题,保障软件质量就是好的测试方法。