#嗨咯大家好,
我是你们的笨蛋程序员灰南。
软件测试到底是什么?
想必无论是我,还是还没有工作的的大家都十分困惑。
它到底需要什么,需要我们会什么,究竟对于我们做程序员有什么优势和帮助。
我也搞不懂
经过多方考证,以及前辈的点醒,我有一些自己的理解
、
我的理解就是狙击手
对 就是这个很扯的名词 狙击手
为什么会这样觉得呢
因为做软测就是一个在不断找bug的过程,需要有敏锐的嗅觉
有点需要你一击致命的感觉
不断有那种 the shot感觉的职业
What is software testing?
软件测试是在测试中识别软件产品和服务的准确性和质量的过程。显然,它的诞生是为了验证产品是否满足客户的特定先决条件、需求和需求。
在一天的工作结束前,确定特定的最终目标并测试执行一个框架或应用程序,以指出其错误、错误或缺陷。
测试的职责是找到bug并指出问题问题,并给Dev(开发人员)提供一个线索,以帮助他们根据需求纠正错误
挺牛的,事实也是这样
各个行业,软测这一块是非常被需要的,一旦这一块自身是bug,一切的概念都是空谈。
这部分的学习目标:掌握软件测试的基本概念、软件测试的流程,并能熟练的应用常见的用例设计方法来设计测试用例。掌握常见的测试方法和类型,并知道如何进行每个阶段的测试。
1.测试需求:测试的规格说明书,主要作用是定义待测试的模块 和 功能模块的测试要点
2. 测试计划:测试过程中的纲领性文件,对测试活动中的测试环境,测试方法,测试时间人员安排。
3.测试用例:是测试需求的细化,是一群元素的集合,主要包含,用例编号,操作步骤/测试数据,预期结果,实际结果,判定,覆盖需求。
4. 缺陷报告:将软件的实际情况 和 测试用例的预期结果相比较,记录问题报告单。
5.测试的基本过程:四个过程,测试策划,测试设计,测试执行,测试总结
6.测试所需要的文档:测试需求,测试计划,测试用例,缺陷报告,测试报告(可能编写)
软件测试的经典技术分为黑盒测试和白盒测试技术。其中黑盒测试技术忽略程序内部结构,看不到程序的代码细节,只针对程序的功能进行测试,黑盒测试的方法有:
说完黑盒测试,就该介绍白盒测试了,白盒测试也称结构测试,白盒测试深入程序内部结构,分析程序代码结构,因此学好白盒测试,首先要掌握必要的编程语言,比如说Java或者C/C++/C#等。白盒测试的方法有:
1. 软件测试原则
所有的软件测试都应追溯到用户需求
应当把“尽早地和不断地进行软件测试”作为测试者的座右铭
完全测试是不可能的,测试需要终止
测试无法显示软件潜在的缺陷;
充分注意测试中的群集现象
程序员应避免检查自己的程序
尽量避免测试的随意性
2. 软件测试对象
程序开发过程中的各个文档、源程序
3. 软件测试过程模型-V模型
是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系;
局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现
4. 软件测试过程模型-W模型
在V模型的基础上,增加千开发阶段的同步测试,形成W模型;测试与开发同步进行,有利用尽早的发现问题
局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整
5. 软件测试过程模型-H模型
在H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;软件测试可以进行尽早的进行;软件测试可以根据被测物的不同而分层次进行
6. 测试模型使用
在实际工作中应灵活地运用各种模型的优点
V模型
强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应;忽略了测试的对象不应该仅仅包括程序,没有明确指出对需求、设计的测试
W模型
补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求和系统设计的测试;与V模型相同,没有对软件测试的流程进行说明
H模型
强调测试是独立的,只要测试准备完成,就可以执行测试
7. 单元测试
定义
又称模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作;可以从程序的内部结构出发设计测试用例,多个模块测试可以平行地独立进行测试
目的
发现模块内部可能存在的各种差错
内容
模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
步骤
利用设计文档设计测试用例;创建被测模块的桩模块或驱动模块;利用被测试模块、驱动模块和桩模块来建立测试环境,进行测试
8.集成测试
定义
又称组装测试或联合测试,在单元测试基础上,将所有模块按概要设计和详细设计进行组装
目的
发现模块连接中的接口可能存在的各种差错
内容
穿越模块之间的数据是否会丢失;一个模块组装后是否会对另一模块或其他模块存在影响;各个子功能组装在一起是否会达到预期的父功能;全局数据结构是否有问题;单个模块的错误累积起来是否会放在
组装方法
一次性组装方式,非增殖式方式也叫整体拼装,对模块分别测试然后将所有模块组装;第二种增殖式组装方式,可以是自顶向下或自底向上
完成标志
成功地执行了测试计划中规定的所有测试用例;修正了所发现的错误;测试结果通过专门小组的评审
9.确认测试
目的
验证软件的功能和性能及其他特性是否与用户的要求一致
测试内容
有效性测试 运行黑盒测试方法验证所测软件是否满足需求规格说明书列出的需求;所有文档正确且便于使用;软件可移植性、易用性、兼容性进行测试;软件配置复查 保证软件配置的所有成分都齐全
10.系统测试
目的
验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试
测试内容
在真实或模拟系统运行环境下,检查完整的程序系统能否和系统(硬件设备、网络、系统软件)正确配置、连接,满足用户需求
11.验收测试
测试内容:根据任务书或合迥、供需双方约定的验收依据文档进行对整个系统的测试与评审,确认是否接收或拒绝系统;
12.开发方测试
通常也叫‘验收测试’或‘a测试’,在软件开发环境中,开发者检测与证实软件的实现是否满足软件设计说明或软件需求说明的要求
13.用户测试
在用户的应用环境下,用户检测与核实软件实现是否符合自己预期的要求。B测试通常被认为是用户测试,把软件有计划地免费地分发到目标市场,让用户大量使用、评价检查软件
14.第三方测试
由第三方测试机构来进行的测试,也称独立测试
15.动态测试
通过人工或使用工具运行程序进行检查,分析程序的执行状态和程序的外部表现
16.静态测试
不运行程序,能过人工对程序和文档进行分析与检查,包括走查、符号执行、需求确认等
很多时候,比起专业技术能力,软技能更为重要,特别是面试的时候,因为面试官也是人。同时,比起学历、专业、年龄,技术能力更重要,所以,转行者们不需要担心,这不会成为你们的绊脚石。
在这里特别感谢一下PracticeTest的资料收集和报告出具,同时感谢中文版的翻译团队。
相信看到这里的,不管是新手还是前辈,都对测试行业有了一个大体的认知。希望这篇文章(实际上是报告文章)能帮助新人更好地了解软件测试行业(发展前景,技术要求,薪资水平等),希望这篇文章同样能帮助已经有几年测试经验的前辈们做好自己的职业定位,确定未来的发展方向以及做好技术沉淀。
不管你是否选择软件测试行业,是否决定在测试行业继续发展,是否是软件测试人员,我都希望本文能够帮助到需要帮助的人。
如果大家感兴趣的话,可以学习交流讨论的,咱可以一起加油,可以点击这里,咱们一起进步