热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

软件测试基本理论——软件开发模型与测试分类

软件开发流程1、瀑布模型图片来源网络瀑布模型以上一个阶段的输出作为下一个阶段的输入,相邻的两个阶段具有因果关系,紧密相连。瀑布模型是线性模型的一种&

软件开发流程


1、瀑布模型

在这里插入图片来源网络图片描述
图片来源网络

瀑布模型以上一个阶段的输出作为下一个阶段的输入,相邻的两个阶段具有因果关系,紧密相连。
瀑布模型是 线性模型的一种,在所有模型中占有重要地位,是所有其他模型的一个基础

测试的切入点:
测试阶段处于软件实现后,必须在代码完成后留出足够的时间给测试活动,否则将导致测试不充分,很多问题到项目后期才暴露。


优点缺点
强调需求、设计的作用难以适应需求的频繁变化
前一阶段完成后,只需关注后续阶段项目后端在能看到结果
为项目提供了按阶段划分的检查点,里程碑清晰强制的里程碑,完成时间点
文档规范文档工作量大

2、V模型

在这里插入图片描述
图片还是来自于网络

需求分析,概要设计,详细设计,编码,单元测试,集成测试,系统测试,验收测试。v模型由瀑布模型扩展而来


单元测试又称模块测试,针对单一的程序模块进行测试(类,函数等)
集成测试又称组装测试,在单元测试的基础上,对手所有模块进行测试
系统测试将整个软件看做一个整体进行测试,包括功能,性能,兼容性,(我们常见的功能测试就是系统测试)
验收测试1:内侧版 (alpha) 2:公测版(beta)3:候选版(gamma)(准正式版)

W模型

在这里插入图片描述
图片依旧来自于网络

w模型强调了测试伴随着整个开发周期,测试的对象不仅是程序,而且还有需求,功能,设计同样要测试,
测试跟开发室同步进行的,从而更早的、更有效的发现问题,降低成本。


定义开发一个V,测试一个V,W模型就是双V模型
优点开发跟随着整个开发周期,需求,和设计同样要测试,跟早的介入测试,可以发现初期的缺陷,修复成本低;分阶段工作方便项目的整体管理;
缺点开发和测试依旧是线性关系,需求的变更和调整,依然不方便,如果没有相关文档不能执行W模型,对项目组成员的技术要求更高

H模型

在这里插入图片描述
图片又来自于网络

在H模型中,软件测试模型是一个独立的流程,贯穿于整个产品周期,与其他流程并发地进行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。

H模型解释了:
软件测试不仅仅是指测试的执行,还包括很多活动,
软件测试是一个独立的流程,贯彻整个产品的生命周期,与其他流程并发的进行
软件测试要尽早准备,尽早执行
软件测试是根据被测物的不同而分层次进行的。不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的


PS:

V模型强调了在整个项目开发中需要经历的诺干个测试级别,并与每一个开发级别对应,忽略了测试的对象不应该仅仅包括程序,没有明确的指出对于需求、设计的测试

W模型补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求和系统设计的测试,与V模型相同,没有对软件测试的流程进行说明。

H模型强调了测试是独立的,只要测试准备完成, 就可以执行测试。


测试分类


按代码是否运行分类

静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法,结构,过程,接口等来检查程序的正确性

动态测试:指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率,正确性和健壮性等


按是非查看代码分类


·白盒测试

白盒测试:又称结构测试,透明盒测试,逻辑驱动测试或者给予代码的测试,白盒测试的测试方法有代码检查法,静态结构分析法,静态质量度量法,逻辑覆盖法,基本路径测试法,域测试,符号测试,路径覆盖和程序编译。


·黑盒测试

黑盒测试:也称功能测试,是以用户的角度,从输入数据与输出数据的对应关系出发,进行测试,和黑测试从不关注代码,主要检查UI和功能是否符合设计书


·灰盒测试

灰盒测试:介于白盒测试盒黑盒测试之间,灰盒测试多用于集成测试阶段,他不仅关注输出,输入的正确性,同时也关注程序内部的情况,回合测试不像白盒那样详细、完整但又比黑盒测试更关注岑旭的内部逻辑。


其他测试


·冒烟测试

冒烟测试:是指在正式测试前,在新编译的版本中对软件的基本功能进行测试,确保软件的基本功能正常,整体流程可以使用,在进行后续的正式测试工作


·回归测试

回归测试:贯彻整个测试的各个阶段的测试活动,其目的是检验依据发现的缺陷有没有正确修改和修改过程中有没有引发新的缺陷,
1:完全重复测试
2:选择性重复测试


·随机测试

随机测试: 是指测试着根据经验对于软件进行功能和性能的抽查,随机测试是根据测试说明书执行用例测试后的重要补充手段,是保证测试覆盖完整性的有效方式和过程,随机测试主要是对被测试软件的一些重要功能进行复测,也包括测试那些当前测试用例没有覆盖到的地方


推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Final关键字的含义及用法详解
    本文详细介绍了Java中final关键字的含义和用法。final关键字可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,final类中的方法默认是final的。final方法不能被子类的方法覆盖,但可以被继承。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。文章还讨论了final类和final方法的应用场景,以及使用final方法的两个原因:锁定方法防止修改和提高执行效率。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
  • 如何使用代理服务器进行网页抓取?
    本文介绍了如何使用代理服务器进行网页抓取,并探讨了数据驱动对竞争优势的重要性。通过网页抓取,企业可以快速获取并分析大量与需求相关的数据,从而制定营销战略。同时,网页抓取还可以帮助电子商务公司在竞争对手的网站上下载数百页的有用数据,提高销售增长和毛利率。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
author-avatar
佐什么猗
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有