文章目录
软件测试基础
什么是软件测试
顾名思义,就是在规定的条件下对一个产品或程序进行操作,以发现程序错误,衡量软件质量,并对其能否满足设计要求进行评估的过程
发展现状
目前国内软件产业规模越来越大,国内软件行业突破了传统的作坊式生产,从单打独斗的开发模式升级为工业化、流水线式的生产模式,导致专业的软件测试人才需求缺口巨大。
据悉,目前国内软件测试和开发人员比例大约在1:4—1:5,而国外测试和开发人员比例为1:1,可见,国内软件测试人才需求和职业发展潜力巨大。据分析,中国软件测试职业具有以下特征:目前国内软件产业规模越来越大
职业发展
初级测试工程师
通过网络或者是书籍学习或具有一些手工测试经验的个人,通常需要掌握独立编写功能测试用例,执行测试计划,编写测试报告,以及常用命令和常用工具的使用
测试工程师/测试分析员
具有1-2年经验的测试工程师或程序员。 能编写自动测试脚本和性能测试,进一步拓展编程语言、操作系统、网络与数据库方面的技能。
高级测试工程师/测试分析师
具有3-4年经验的测试工程师或程序员。帮助开发或维护测试或编程标准与过程,负责同级的评审,并为其它初级的测试工程师或程序员充当顾问。继续拓展编程语言、操作系统、网与数据库方面的技能。
测试组负责人
具有4-6年经验的测试工程师或程序员。负责管理 1至 3名测试工程师或程序员,担负一些进度安排和工作规模/成本估算职责,更集中于技能方面。
测试/编程负责人
具有6-10年经验的测试工程师或程序员。负责管理8至 10名技术人员,负责进度安排、
工作规模/成本估算、按进度表和预算目标交付产品,负责开发项目的技术方法,为一些用
户提供支持与演示,开发一些特定领域的技术专长。
测试/质量保证/开发(项目)、经理
具有10多年的工作经验。 管理 8名或更多的人员参加的1个或多个项目, 负责这一领域 (测试/质量保证/开发)内的整个开发生存周期业务,为一些用户提供交互和大量演示,负责项目成本、进度安排、计划和人员分工。
计划经理
具有15年以上开发与支持(测试/质量保证)活动方面的经验。管理从事若干项目的人员以及整个开发生存周期,负责把握项目方向与盈亏责任。
测试流程
软件测试分类
黑盒测试和白盒测试
黑盒测试(Black Box -Test)
指的是把被测试的软件看做一个黑盒子,我们不去关心盒子里边的结构是不需要了解程序的源代码,通过使用整个软件功能来验证程序是否满足需求的测试方法
白盒测试(White Box Testing)
是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的测试方法
静态测试和动态测试
静态测试,是指不实际运行被测试软件,而只是静态的检查程序代码、界面或者文档中可能存在的错误的过程
动态测试:是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程
功能测试和性能测试
功能测试
是黑盒的一部分,它检查实际软件的功能是否符合用户的需求
功能测试可以细分逻辑功能测试,界面测试,易用性测试,安装测试和兼容性测试
逻辑功能测试:测试应用是否符合逻辑,比如应该先注册账号之后,才能进行登录,登录之后才能看到我的购物车
界面测试:窗口大小,按钮大小,点击按钮弹出什么样的提示框,是否有滚动条,下拉菜单是否有展示内容…
易用性测试:从软件使用的合理性和方便些等角度对软件系统进行检查,比如,软件窗口长宽比例是否合适,颜色色彩是否赏心悦目,字体大小是否合适
安装测试:
兼容性测试:硬件兼容性和软件兼容性测试
硬件兼容性:比如一款软件在pc机,笔记本,主机上是否兼容
软件兼容性:比如一款软件在Windows8和Windows10上是否兼容
性能测试
时间性能:软件的一个具体事务的响应时间。比如点击一个登陆按钮,到登陆成功(失败)的反应时间,浏览器非常常见,ANR(Application not responding 应用程序无响应)2/5/8
空间性能:软件运行时所消耗的系统资源,比如对内存和cpu的消耗 80%
一般性能测试:软件正常运行,不向其施加任何压力的测试
稳定性测试:也叫可靠性测试,是指连续运行被测系统,检查运行时的稳定程度
负载测试:让被测系统在其他能够忍受的压力范围之内连续运行,来测试系统的稳定性 (测试载重)
压力测试:持续不断的给被测试的系统增加压力,直到被测试的系统压垮为止,用来测试系统所承受的最大压力。(测试强度)
回归测试、冒烟测试、随机测试
回归测试
是指对软件的新版本进行测试时,重复执行上一个版本测试时的用例,比如在1.0版本中,有一个bug,到了2.0版本中,再重新测试1.0中这个bug(回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误)
冒烟测试
指对一个软件进行系统大规模的测试之前,先验证一下软件的基本功能否实现,是否具备可测性
测试小组在正式测试一个新版本之前,先派一俩个测试人员测试一下软件的主要功能,如果没有实现,则打回开发组重新开发,这样做可以节省大量的时间成本和人力成本
随机测试
是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
单元测试、集成测试、系统测试和验收测试
单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。
总的来说,单元就是人为规定的最小的被测功能模块。
单元测试当一段代码完成之后,是由白盒测试工程师或者开发人员自行测试,比如java中执行单元测试叫做junit测试。
目前大部分公司单元测试由开发人员简单编译和调试一下自己的程序,没有相应的单元测试计划。
单元测试方式:先静态地观察代码是否符合规范,然后动态地运行一下代码,检查运行的结果。
集成测试
集成测试是单元测试的下一个阶段,是指将通过测试单元模块组装成系统或者子系统,在进行测试,测试不同模块的接口部分
l 在把各个模块连接起来的时候,穿越各个模块的接口的数据时候会丢失
l 一个模块的功能是否会对另一个模块的功能产生不利的影响
l 各个子功能组装完成后,能否达到预期的父功能
l 全局数据结构是否有问题
l 单个模块产生的误差累计起来是否会放大
例如:模块接口测试
l 应对通过所测模块的数据流进行测试
l 调用所测模块时的输入参数与模块的形式参数的个数、属性和顺序是否匹配
l 所测模块调用子模块时,输入子模块的参数与子模块的形式参数在个数、属性和顺序上是否匹配。
l 输出给标准函数的参数的个数、属性和顺序是否正确
系统测试和验收测试
集成测试完成后,就是系统测试和验收测试
系统测试:指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试
系统测试由黑盒测试人员在整个系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境的兼容性等
验收测试:以用户为主的测试,软件开发人员和质量保证人员参加
测试用例
测试用例的需求(功能测试,性能测试,界面测试,安全测试,易用测试)
软件生命周期
软件生命周期 同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生命周期(软件生存周期)[1] 。软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考。
V模型
V 模型的左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程的各个阶段。
V 模型的优点在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发各阶段的对应关系。
优点:
**1 每一个阶段都清晰明了,便于控制开发的每一个过程 **
2 既包含了单元测试又包含系统测试
缺点:
**1 测试介入的比较晚,对于前期的一些缺陷无从发现和修改 **
2 测试和开发串行
W模型
相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。
优点
1 测试伴随着软件的整个生命周期,例如,在需求分析结束后就可以进行需求分析测试。
2 测试于开发是并行独立进行的。
缺点
1 对有些项目,开发过程中根本没有文档产生,故W模型无法使用。
2 对于需求和设计的测试技术要求很高,实践起来很困难。