一、按开发阶段划分
测试金字塔与业务测试分析
1.单元测试
手机功能很多,女孩子都喜欢用美颜功能,为了保证这些功能一直可用,就要针对这些功能进行测试
单元测试是对软件组成单元进行测试,目的是检验软件基本组成单位的正确性。 测试对象是软件设计的最小单位:模块,又称为模块测试,也就是说,一段代码中每一个方法的测试就是单元测试。 测试阶段:编码后或者编码前 测试对象:最小模块 测试人员:白盒测试工程师或开发工程师 测试依据:代码和注释+详细设计文档 测试方法:白盒测试 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
2.集成测试
比如手机拨打电话 通讯录可以添加、删除、更改手机号码 打电话,可以手动输入电话,也可以从电话本中查询需要打给哪个人的电话进行拨打,手动输入电话可以正常拨打,电话本查询出来也必须正常拨打
集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检验的测试工作。主要目的是检查软件单位之间的接口是否正确, 测试阶段:一般单元测试之后进行 测试对象:模块间的接口 测试人员:白盒测试工程师或者开发工程师 测试依据:单元测试的模块+概要设计文档 测试方法:黑盒测试与白盒测试相结合 测试内容:模块之间的数据传输、模块之间的功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响
3.系统测试
新买的手机都会有一个合格标签,在出厂前手机厂会所某型号的手机上的功能全部测试一遍,包括手机硬件本身,手机上自带的APP
将软件系统看成是一个系统的测试,包括对功能、性能以及软件所运行的软硬件环境进行测试,时间大部分在系统测试执行阶段,包括回归测试和冒烟测试 测试阶段:集成测试通过之后 测试对象:整个软件(软、硬件) 测试人员:黑盒测试工程师 测试依据:需求规格说明文档 测试方法:黑盒测试 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性、可移植性等
回归测试 回归测试是修改了旧代码后(引入新代码或修改系统Bug),重新进行测试以确认修改没有引入新的错误或者导致其他代码产生错误。 回归测试的策略:自动化测试 自动回归测试将大幅度降低系统测试、维护升级等阶段的成本
注:在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试,随之系统的庞大,回归测试的成本越来越大,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的
冒烟测试 冒烟测试是来源于硬件,给硬件加电,如果没有冒烟,则通过测试。 冒烟测试是对系统的主要功能和核心流程进程测试。 冒烟测试对象是每一个新编译的需要正式测试的的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。也就是说,冒烟测试是正式进行系统测试之前,测试人员是否接受本次迭代正式测试的依据。 冒烟测试的执行者是版本编译人员。
4.验收测试
买到新手机,一般会有7天包退,一月包换,我们会尽量在7天内把手机的所有功能都试一遍
验收测试是部署软件之前的最后一个测试操作,它是技术测试的最后一个阶段,也称为交付测试。 验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件满足原始需求。 测试阶段:系统测试通过之后 测试对象:整个系统(包括软硬件) 测试人员:只要是最终用户或者需求方 测试依据:用户需求、验收标准 测试方法:黑盒测试 测试内容:同系统测试(功能…各类文档等)
二、按测试实施组织
1.α测试
手机出厂前最后一次测试,开发和测试人员不参与
α测试是由一个用户在开发环境下进行的测试,亦可以是公司内部的用户在模拟实际操作环境下进行的测试 α测试的目的是评价软件产品的FLURPS(即功能、局预化、可使用性、性能和支持)。
2.β测试
新手机购买回来,参与测试的人是购买者,使用的场所及环境已不再是手面厂商的环境及场所
β测试是一种验收测试,由软件的最终用户在一个或多个场所进行
3.第三方测试
介于开发方和用户之前的组织的测试
三、按是否运行划分
1.静态测试
静态方法是指不运行被测试程序本身,仅通过分析或检查源程序的语法、结构过程、接口等来检查程序的正确性,对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。 检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;走查、审查与技术复审手册 静态测试的标准:性能、兼容性、易用性、可靠性、安全性、可维护性、可移植性
2.动态测试
动态测试就是运行软件进行测试。由三部分组成:构造测试用例、执行程序、分析程序的输出结果
四、按是否手工划分
1.手工测试
手工测试就是由人一个一个输入测试用例,然后观察结果 优点:自动化无法替代探索性测试、发散思维结果的测试 缺点:执行效率慢、量大易错
2.自动化测试
写自动化脚本,按照预先设定好的条件运行系统 自动化测试条件:系统功能稳定后
五、按是否查看代码划分
1.黑盒测试
也称功能测试,被测试的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据和输出数据
2.白盒测试
又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。研究源代码和程序结构的测试
3.灰盒测试
介于白盒测试和黑盒测试之间的一种测试,多用于集成测试阶段,不仅关注输入输出的正确性,同时关注程序内部的情况。
六、按测试对象分
1.业务测试
将孤立的功能点按照一定的策略组合在一起,形成一个业务,对这个业务进行测试。 业务测试关注需求和用户
比如查看邮件 登录网址-输入用户名、密码登录-进入收件箱-查看邮件-点击打开-查阅-关闭邮件-退出邮箱-关闭网站
2.界面测试
简称UI测试,测试用户界面的功能模块的布局是否合理,各个控件的放置位置是否符合客户使用习惯,测试界面操作简洁性,页面元素可用性,界面中文字是否正确,明明是否统一,页面是否美观,文字,图片组合是否完美 常见Bug:不合适的快捷键,文字丢失,截断,自动换行,重叠,重复快捷键,没有对齐等
3.容错性测试
当系统由于外部环境或者用户操作不当引起一些问题时,系统可以自我消化这些错误,不展示给用户。 包括两个方面: 1.输入异常数据或进行异常操作,以检验系统的保护性。如果系统容错性好,系统只给予提示或内部消化,而不导致系统出错甚至崩溃 2,。灾难恢复性测试:通过各种手段,让软件强制性发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据是否能够尽数恢复。
注:从容错性概念上看,当软件出现故障时如何转易故障与恢复有用的数据是十分重要的
4.文档测试
文档测试的关注点: 1.文档的术语 2.文档的正确性 3.文档的完整性 4.文档的一致性 5.文档的易用性
5.兼容性测试
兼容性主要是指软件之间能否很好的运作,会不会有影响、软件和硬件之间能否发挥很好的效率工作,会不会影响导致系统的崩溃 1.平台测试 2.浏览器测试 3.软件本身能否向前或向后兼容 4.测试软件能否与其他相关的软件兼容 5.数据兼容性测试 其中最常见的就是浏览器的兼容性测试,不同浏览器在css、js解析上的不同会导致页面的显示不同。
6.安装测试
1.测试程序的安装和卸载 2.app的安装和卸载
7.安全测试
安全测试是一个相对独立的领域从软件来说,熟悉各种攻击手段,例如SQL注入等。
8.性能测试
1.系统是否可以很快地响应用户请求 2.在超过负荷的情况下,系统是否稳定 3.系统要在预期和非预期情况下,让用户有良好的体验 4.响应时间,点击率(服务器每秒处理http请求的个数) 5.事务的平均响应时间(TPS) 6.系统运行时占用的资源使用情况
9.内存泄漏测试
很多软件系统都存在内存泄漏的问题,尤其是缺乏自动垃圾回收机制的“非托管”语言编写的程序,比如C、CH等 造成内存泄漏原因有很多,常见几种如下 1.分配完内存之后忘了回收 2.程序写法有问题,造成没办法回收 3.某些API函数的使用不正确,造成内存泄漏 4.没有及时释放
针对内存泄漏的检测: 1.对于不同的程序可以使用不同的方法来进行内存泄漏的调查,还可以使用一些专门的工具来进行内存问题的检查 2.通过代码扫描分析工具来检查
|