A. 从事软件测试的工作,需要学点什么
软件测试就是对开发的软件功能进行测试,找出软件的bug,也就是要找出软件的缺陷和不足,在找出问题之后,还需要把问题整理成报告,让软件开发人员根据所呈现的报告去修复去完善。软件测试主要需要学的东西有很多,具体分析如下:
需要学习测试基础和理论知识,包括测试计划编写、设计测试用例、编写BUG报告单;需要学习python语言以及计算机的硬件知识;需要学习数据库知识,包括MySQL数据库、Redis数据库等;需要学习自动化测试工具、性能测试工具、接口测试工具的使用。比如在性能测试则会用到Loadrunner软件,它包含Controller、VuGen、Analysis
这些组件。VuGen用于协议、参数化、事务、集合点、检查点、关联、思考时间、文件下载、浏览器模拟设置。Controller用于手动场景设计、IP
Wizard应用、场景运行、负载生成器、场景监控、服务水平协议(SLA)、服务器硬件监测。Analysis则用于HTTP报文结构、事务相关、吞吐量相关、执行结果分析、网页细分图、图表分析。
B. 软件开发过程一般有几个阶段每个阶段有什么作用
1、首先制定项目计划,最初计划是里程碑性质的。可以先按瀑布模型设置,里程碑点主要为需求评审、设计评审、经过代码开发和单元测试后进行集成测试、部署上线是一个很重要的里程碑,一般用户会期望系统何时能使用,进入试运行期。
2、需求开发阶段:怎么样写好需求很关键,这个需要实践经验锻炼自己。如果有项目成员,可以一起做需求,这个阶段对于业务理解、分析、如何开展调研以及文字表述、业务流程图描述还有文档编辑能力都有不少要求。一般分为《用户需求说明书》和《需求规格说明书》,小项目可以写一个《需求分析报告》,《用户需求说明书》是用用户的语言进行描述,让用户和开发团队对于需求的达成一致的理解,《需求规格说明书》,则是对用户需求的分析,形成系统要具有的功能,这个是真正提供用户可交互操作的文档,也就是后期设计和代码开发的重要基线。
另外,作为了解需求,拿出用户UI和用户交流也是一项比较重要的需求获取手段,虽然这个属于设计的范畴
3、系统设计阶段:
系统总体架构,结合用户对系统环境、开发语言以及运行的网络硬件等要求,确定开发工具等,对应用系统关系进行架构性设计,通过需求阶段对用户的分析归类,用图的方式描述出用户和各子系统或模块的全局视图,以及和其他系统的关系。也就是搞清楚系统的边界问题。
概要设计中除了高层架构设计,还需要设计网络拓扑图,以及系统部署图。概要设计比较重要的还有就是子系统、模块进行合理的划分。模块的名称很大程度上会成为用户的主要菜单,如何用用户的角度去取比较清楚的子系统和模块是很重要的。
4、代码开发和单元测试阶段:这个阶段一般来说需要改进瀑布模型,类似跌代开发,把模块进行合理划分,把项目总体计划的代码开发测试阶段划分为多个时间段,每个时间段都包括代码开发、单元测试和集成测试,这个阶段还需要对需求变更进行跟踪控制,如果需求有变更,那么要把需求文档、设计文档都重新跟上。跌代开发的好处就是不让代码开发阶段拉的过程,没有进行及时的自我检查,不小心到了提交时间,却不是用户想要的,还有可能都不是自己想要的。
项目经理重要的责任是控制好进度,能及早发现风险,并能拿出好的预防和解决办法的措施。合理安排好开发团队的任务,合时的任务安排和衔接,你会觉得非常有艺术感,这个要自己体会了。另外,关注项目团队各人员的状况,保持高的战斗力,及时发现并能鼓励团队共同朝一个目标前进。
5、测试工作,测试是项目的很重要的环节,怎么测试,怎么准确测试,怎么有效测试,怎么覆盖测试,时间、人手、经验扽个方面都会有制约。高级测试人员能够分析系统各测试要点,在需求、设计阶段都要参与,提早了解如何去测试,能写出测试用例。
6、文档工作,文档在项目开发中也占有重要位置,除非你觉得代码是项目唯一的成果,那么你把文档抛掉吧,什么都在你的脑子里,团队中人员一走,项目的一部分也就带走了。代码开发其实也需要文档,代码是成果,代码注释是成果,模块开发卷宗也是重要的成果,因为程序员在开发时候的逻辑是怎么样的,对于今后查问题很有作用。除非你的系统设计程度到了方法、类,把代码逻辑也都设计好了,那么程序员就CODEING去吧。
7、QA是对项目过程的质量保障,有些公司吧QA和测试工作合成一个岗位叫做QA&测试人员,或者就叫QA人员。QA是对项目全过程的监管,独立于项目之外。监督项目经理在各项目里程碑提交相关成果,入库形成基线。
C. 黑马程序员软件测试课程主要包含哪些
对这个不是很清楚,给你说说我们的。
啄木鸟学院软件测试培训课具体课程大纲:
第一阶段:基础测试。掌握测试从业者必备的基础技能,能够更加高效的辅助测试工作。
第二阶段:编程语言。java和python编程语言,具备最基本的编程思维、 掌握基础的编程技术、结合自动化框架相关技术才能达到企业的用人标准。
第三阶段:web自动化。熟练掌握Selenium框架、UnitTest、Page Object模式、数据驱动和日志收集、可满足企业级的Web自动化测试工作。
第四阶段:App自动化。熟练掌握appium框架、pytest、PO模式、数据驱动和持续集成。
第五阶段:接口测试。熟练掌握postman、JMeter、requests、UnitTest、Mock测试和数据库操作。
第六阶段:性能测试。熟练掌握性能测试的理论和流程、能够使用Loadrunner开发对应的性能测试脚本。
第七阶段:数据结构+单元测试+sell脚本。对前几个阶段的总结以及延伸。学习完成后能更好的找到工作。
D. 按照软件测试阶段划分,软件测试分为
单元测试
单元测试又称模块测试,是针对程序的一种测试。
模块:C函数,JAVA方法
模块的基本属性:名字、明确的功能、与其他模块的关联、算法。
在实际中,很多的单元测试工作都是程序员在做。
实际意义:一开始并不把程序作为一个整体来测,而首先
集中测试最小单元,这样能尽早的发现问题,解决问题。
• 实际演示一个单元测试例子
• 演示完成后,你的技能够做单元测试吗?
集成测试
时常有这样的情况发生,每个模块都能单独工作,但是将这些
模块组装起来之后却不能正常工作。
p A程序员写了代码,这些代码的功能提供给B程序员调用,但是
由于A和B之间在方法的命名,大小写等问题上不一致,所以根
本无法让A的数据给B用。
p 也就是说,在局部上不出问题,整合起来也不出问题吗?这很
难说,因此集成测试就显得非常有必要。
集成测试又称为接口测试,是针对程序接口的一种测试。
• 接口:模块与模块之间的耦合
• 在实际中,很多的集成测试工作都是程序员在做
• 实际意义:单元测试做完后,方法已经没有问题了,局部
不出问题了,程序员之间的各个功能整合起来,集中测试,
要保证整合后的代码和代码实现的功能完全对接,没有问题。
因此集成测试就显得非常有必要
现在问题出来了,我们怎么做集成呢?
• 独立的测试完成后,组合成一个整体测, 非增量式集成
问题:容易出现混乱,因为测试时可能发现一大堆问
题,但每个故障的定位和纠正问题很难。
• 把一个待测模块组合到已经测试过的模块上去,再进行
测试,这种方式称为 增量式集成
自上向下:桩程序
自下向上:驱动程序
p 思考一个问题:清洗一台已经完全装配好的绞肉机容易,还是
清洗一台被完全拆分的绞肉机容易?
确认测试
确认测试:对照软件需求规格说明,对软件产品进行评估以
确定其是否满足需求的过程。主要是对软件需求满足程度的一
种评价和评估。
p 经过确认测试,应该得出的评价无非2种情况:
① 经过检验,软件功能、性能及其他方面的要求都已满足
软件需求规格说明的规定,是一个合格的软件
② 经过检验,发现与软件需求规格说明书有相当的偏离,
得到了一个缺陷清单,这就需要开发部分和用户进行协
调,找出解决的办法。
系统测试
什么是系统测试:
将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试。
系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案。
对象不仅仅报测测试的软件,还包含软件所依赖的硬件,外设甚至包括某些数据、某些支持及接口等。
系统测试范围:功能、性能、界面、强度、容量、安全性、配置、安装、卸载、数据库等。
验收测试
验收测试:验收测试:可以类比为建筑的使用者对建筑进行的检测。
验收形式:
1.Alpha;alpha 测试是在用户组织模式软件系统的运行环境下的一种验收测试,有用户第三方测试公司进行的测试,模拟各类用户行为对即将面市的软件产品进行测试。试图发现并修改错误。
2.Beta:Beta测试是用户公司组织各方面的典型终端用户在
日常工作中实际使用beta版本,并要求用户报告异常情
况,提出批评意见。
实际过程中:初验、终验
Alpha和Beta的区别
区别:两者的主要区别是测试场所不同。
p Alpha测试是指把用户请到开发方的场所来测试, Alpha测试的环
境是受开发方控制的,用户的数量相对比较少,时间比较集中。
p Beta测试是指在一个或多个用户的场所进行的测试。beta测试的环
境是不受开发方控制的,谁也不知道用户如何折磨软件,用户数
量相对比较多,时间不集中。
p alpha测试先于beta测试执行。
p 通用的软件产品需要较大规模的beta测试,测试周期比较长。如
果产品通过了beta测试,那么就可以正式发行了。
p 一些软件开发公司把Alpha测试后发布的产品定义为:一个早期的、
不稳定的软件版本所进行的验收测试,而Beta测试看成是对一个
晚期的、更加稳定的软件版本所进行的验收测试。
E. 软件测试分为几个阶段
一、单元测试
单元测试:单元测试是针对软件设计的最小单位--程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。
对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。
总的来说,单元测试是对软件中的最小可验证单元进行检查和验证。
测试原则:
1、尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例中重写模拟方法);
2、此阶段一般由软件的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
单元测试的好处:
1、尽早的发现缺陷;
2、利于重构;
3、简化集成;
4、文档;
5、用于设计。
单元测试的不足:
1、不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误;
2、每行代码需要3~5行代码进行单元测试,存在投入与产出的平衡。
二、集成测试
集成测试是在单元测试的基础上,把软件单元按照软件概要设计规格说明的规格要求,组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求。
集成测试包括BigBang、自顶向下、自底向上、核心系统集成、高频集成。
三、系统测试
系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。
集成测试和系统测试之间的比较:
1、测试内容:集成测试是测试各个单元模块之间的接口,系统测试是测试整个系统的功能和性能;
2、测试角度:集成测试偏重于技术的角度进行测试,系统测试是偏重于业务的角度进行测试。
四、验收测试
验收测试也称交付测试,以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。是针对用户需求、业务流程进行的正式的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
验收测试包括alpha测试和beta测试,alpha测试是由开发者进行的软件测试,beta测试是由用户在脱离开发环境下进行的软件测试。
F. 软件测试的流程是什么
软件测试工作流程:
1、需求分析、需求评审
需求分析和评审就是分析客户的需求可不可行,需要怎么进行测试。
2、编写测试计划
编写测试计划通俗一点讲就是什么人在什么时间做什么事,最后产出什么东西。那也就是测试人员要测试哪些模块、在什么期限内,提交哪些文档。
3、编写测试用例、用例评审
测试用例就是指导测试的文档,比如我们要测试商城登录、买东西等功能,通过测试方法和策略设计测试用例。
评审就是评价审查,不能想当然该怎么测。不能只是输入正确的用户名和密码,能登录进去就完事了。作为软测工程师需要有破坏性,比如密码输错时怎么办?会不会有相应的报错等等?
4、执行测试、提交bug、回归测试
Bug就是缺陷,发现bug之后,要提交给开发人员让他们去修改,然后进行回归测试,验证开发人员有没有改好。
5、编写测试总结报告
Bug都改好了之后,要编写测试总结报告,这款软件的质量如何。
G. 软件测试难吗,一般多久可以学会
其实主要看自身,还是比较好学的!一般情况3个月是没啥问题的~
0基础进入IT行业,完全是ok的,IT行业分好几种有开发,测试,UI,自动化,测开,运维等这些岗位。在这些岗位里面测试相对来说还是比较容易上手学会的。因为开发、运维、自动化这些都对代码的要求挺高,0基础的话对代码认识不是一、两天就可以学好的。可以先明确以下几个问题:
1、首先自己要明确好自己是否要进入软件测试的行业,身边有朋友做这行更好,可以给出相对比较中肯的建议,或者也可以去咨询一些机构都是ok的,另外学习的话,培训还是很有必要的,这个可以根据自身情况来定,一家好的培训机构对于学习也是锦上添花的!
2、主要看自己是否感兴趣,如果自学的话一定要有全面的课程和实战项目,实战项目在后续找工作中是至关重要的,另外自学的话是需要有较强的自律能力,其次就是一定要坚持学习,坚持学习才会有结果!
3、基础理论知识一定要扎实,软件测试一定要有理论+实战项目,这样学的更扎实,也更容易就业!
4、另外选择培训机构也是很重要的,会得到系统的学习,同时也会有很多小伙伴一起学习可以加油打气,老师也会时刻解决你的疑难问题,当然前提是自己要想要去学,鉴定进入这个行业的信念,有“心力”成功更容易!
以上,希望可以帮助到你,一定要加油,坚持学习!