软件测试基础
软件测试基础
软件测试行业介绍 :
1:什么是软件测试?(定义)
顾名思义,就是在规定的条件下对一个产品或程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
2:发展现状
目前国内软件产业规模越来越大,国内软件行业突破了传统的作坊式生产,从单打独斗的开发模式升级为工业化、流水线式的生产模式,导致专业的软件测试人才需求缺口巨大。
据悉,目前国内软件测试和开发人员比例大约在1:4—1:5,而国外测试和开发人员比例为1:1,可见,国内软件测试人才需求和职业发展潜力巨大。据分析,中国软件测试职业具有以下特征:
-
就业竞争小,工作起点高
信息产业部门发布的报告显示,我国目前软件测试人才的缺口在30万以上,在未来的十年中这一数字还将持续增大,因此从事测试职业所面临的竞争压力将远小于其他职业。而目前单独设立软件测试部门,对测试工程师有强烈需求的企业多是较大规模的软件企业,就业平台是比较高的。
-
薪资待遇好,职业寿命长
随着测试软件行业的兴起,薪资待遇越来越完善,刚入行的软件测试人员,起步月薪就在6000—10000元左右,远高于同龄人的薪资水平,工作2-3年后的薪资更是翻番。质量是产品的灵魂,作为软件质量的把关者,软件测试工程师在企业中的地位也越来越重要,其工作相对更加稳定,而且随着项目经验的不断增长,对不同行业背景了解的不断深入,软件测试工程师的水平将会越来越高,越“老”越吃香。
-
无性别歧视
目前软件开发领域一直趋于男生居多,而且很多公司加班通宵赶项目时常发生,而软件测试人员相对来说前期比较清闲,大多数只有产品上线的时候整个项目团队会加班。
由于工作的特殊,软件测试人员往往更偏好认真、耐心、细致、敏感、等个性元素,而这在一定程度上与女性的个性气质相吻合。据了解,目前很多IT企业中软件测试人员的比例更趋向平衡,甚至出现女性员工成主流的情况。
3:职业发展
初级测试工程师
通过网络或者是书籍学习或具有一些手工测试经验的个人,通常需要掌握独立编写功能测试用例,执行测试计划,编写测试报告,以及常用命令和常用工具的使用
测试工程师/测试分析员
具有1-2年经验的测试工程师或程序员。 能编写自动测试脚本和性能测试,进一步拓展编程语言、操作系统、网络与数据库方面的技能。
高级测试工程师/测试分析师
具有3-4年经验的测试工程师或程序员。帮助开发或维护测试或编程标准与过程,负责同级的评审,并为其它初级的测试工程师或程序员充当顾问。继续拓展编程语言、操作系统、网与数据库方面的技能。
测试组负责人
具有4-6年经验的测试工程师或程序员。负责管理 1至 3名测试工程师或程序员,担负一些进度安排和工作规模/成本估算职责,更集中于技能方面。
测试/编程负责人
具有6-10年经验的测试工程师或程序员。负责管理8至 10名技术人员,负责进度安排、工作规模/成本估算、按进度表和预算目标交付产品,负责开发项目的技术方法,为一些用户提供支持与演示,开发一些特定领域的技术专长。
测试/质量保证/开发(项目)、经理
具有10多年的工作经验。 管理 8名或更多的人员参加的1个或多个项目, 负责这一领域 (测试/质量保证/开发)内的整个开发生存周期业务,为一些用户提供交互和大量演示,负责项目成本、进度安排、计划和人员分工。
计划经理
具有15年以上开发与支持(测试/质量保证)活动方面的经验。管理从事若干项目的人员以及整个开发生存周期,负责把握项目方向与盈亏责任。
1.软件缺陷与故障:
- 所属产品,所属模块,当前指派(重要),bug类型,操作系统,重现步骤(重要),验证程度(重要),优先级(重要),附件等
- 软件不正常的错误或者是代码行错误等均称为缺陷
- 将缺陷按照严重程度:
- 系统崩溃 :严重,一般,次要,建议缺陷报告含有:
- 缺陷编号 缺陷标题 缺陷描述 重现步骤 严重程度 优先级 用例编号
2.软件缺陷产生的原因 :
(1) 需求解释有错误;
(2) 用户需求定义错误;
(3) 需求记录错误;
(4) 设计说明有误;
(5) 编码说明有误;
(6) 程序代码有误;
(7) 测试错误;
(8) 问题修改不正确;
(9) 不正确的结果是由于其他的缺陷而产生。
3. 测试流程:
4. 测试流程分类:
5.黑盒测试与百合测试:
黑盒测试(Black Box -Test)指的是把被测试的软件看做一个黑盒子,我们不去关心盒子里边的结构是
不需要了解程序的源代码,通过使用整个软件功能来验证程序是否满足需求的测试方法
白盒测试(White Box Testing)
是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的测试方法
6.静态测试和动态测试
静态测试,是指不实际运行被测试软件,而只是静态的检查程序代码、界面或者文档中可能存在的错误的过程。
动态测试:是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
7.功能测试和性能测试
1.1.1. 功能测试
- 是黑盒测试的一部分,它检查实际软件的功能是否符合用户的需求。
- 功能测试可以细分逻辑功能测试,界面测试,易用性测试,安装测试和兼容性测试。
- 逻辑功能测试:测试应用是否符合逻辑,比如应该先注册账号之后,才能进行登录,登录之后才能看我的购物车
- 界面测试:窗口大小,按钮大小,点击按钮弹出什么样的提示框,是否有滚动条,下拉菜单是否有展示内容…
- 易用性测试:从软件使用的合理性和方便性等角度对软件系统进行检查,比如,软件窗口长宽比例是否合适,颜色色彩是否赏心悦目,字体大小是否合适
1.1.2. 性能测试
- 时间性能:软件的一个具体事务的响应时间。比如点击一个登陆按钮,到登录成功(失败)的反应时间,浏览器非常常见,ANR(Application not responding 应用程序无响应)
- 空间性能:软件运行时所消耗的系统资源,比如对内存和cpu的消耗
- 一般性能测试:软件正常运行,不向其施加任何压力的测试
- 稳定性测试:也叫可靠性测试,是指连续运行被测系统,检查系统运行时的稳定程度。
- 负载测试:让被测系统在其能够忍受的压力范围之内连续运行,来测试系统的稳定性。(测试载重)
- 压力测试:持续不断的给被测试的系统增加压力,直到被测试的系统压垮为止,用来测试系统所承受的最大压力。(测试强度)
8. 回归测试、冒烟测试、随机测试
1.1.3. 回归测试
是指对软件的新版本进行测试时,重复执行上一个版本测试时的用例,比如在1.0版本中,有一个bug,到了2.0版本中,再重新测试1.0中这个bug(回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。)
1.1.4. 冒烟测试
指对一个软件进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
测试小组在正式测试一个新版本之前,先指派一两个测试人员测试一下软件的主要功能,如果没有实现,则打回开发组重新开发,这样做可以节省大量的时间成本和人力成本。
1.1.5. 随机测试
是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
9. 单元测试、集成测试、系统测试和验收测试
10. V模型
V 模型的左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程的各个阶段。
V 模型的优点在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发各阶段的对应关系。
V模型的缺陷及解决思路
V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证。
解决的思路是,当一个软件开发的时候,研发人员和测试人员需要同时工作,测试在软件做需求分析的同时就会有测试用例的跟踪,这样,可以尽快找出程序错误和需求偏离,从而更高效的提高程序质量,最大可能的减少成本,同时满足用户的实际软件需求。
优点:
1 每一个阶段都清晰明了,便于控制开发的每一个过程。
2 既包含单元测试又包含系统测试。
缺点:
1 测试介入的比较晚,对于前期的一些缺陷无从发现和修改。
2 测试和开发串行。
11. 软件测试工具
https://zhidao.baidu.com/question/8152959.html
- 软件测试工具是通过一些工具能够使软件的一些简单问题直观的显示,使测试人员更好的找出软件错误所在。
- 软件测试工具分为自动化软件测试工具和测试管理(禅道)工具。
- 软件测试工具存在的价值是为了提高测试效率,用软件来代替一些人工输入。
- 测试管理工具是为了复用测试用例,提高软件测试的价值。
- 一个好的软件测试工具和测试管理工具结合起来使用将会使软件测试效率大大的提高。
- Bug管理工具: 禅道 Jira(付费),Trac,gitlab
- 自动化 python+ selenium ,python+ appnium (ui自动化) pytest,unites,Junit (测试用例 单元测试) innerHtml (发送测试报告) request +python+allure 接口自动化
- 性能测试工具 jmeter ,Loadrunner、
- 抓包工具 Fiddler ,charles (弱网测试的)
- 接口工具 postman ,jmeter
- 录制脚本 bodyboy jmeter
- 云测 腾讯云 模拟不同的移动端或者是web浏览器
- 命令 Linux adb monkey
- 数据库 myql,oracle,redis
- 语言 python,java,c,c++
meter ,Loadrunner、
4. 抓包工具 Fiddler ,charles (弱网测试的)
5. 接口工具 postman ,jmeter
6. 录制脚本 bodyboy jmeter
7. 云测 腾讯云 模拟不同的移动端或者是web浏览器
8. 命令 Linux adb monkey
9. 数据库 myql,oracle,redis
10. 语言 python,java,c,c++