第一章 IT行业及软件测试
一、程序员所做的测试与软件测试的区别:
程序员所做的测试本质上为调试,是以程序员视角检查缺陷,从而满足程序员设计的需求;软件测试则是从用户角度出发,发现并提出代码或应用层面的缺陷。二者各司其职的分工方式,更适合于当今社会的合作发展模式。
二、优秀的软件测试任职要求:
1、技能要求:
1)熟悉软件研发流程,即软件生命周期;
2)相关软件业务知识;
3)软件开发模型、测试模型;
4)常见测试方法:黑盒测试、白盒测试;
5)常见测试工具:LD、Jmeter、selenium等;
6)测试相关文档的编写;
7)功能、性能、安全测试等;
8)开发语言、数据库、相关操作系统等。
2、职业素养要求:
1)责任心(最重要):
A、测试过程中尽量发现软件中的缺陷,实在发现不了可进行交叉测试;
B、如果线上出现问题,不要推卸责任,应积极推动问题重现与解决;
C、测试要有原则,如果有缺陷影响到功能或者用户体验,测试人员就不能让它上线。
2)沟通能力:对问题和内容的阐述要有理有据,具有说服力。
3)要有团队合作精神;
4)要耐心、细心、信心;
5)要有风险防范意识;
6)要有持续学习能力。
三、开发人员与测试人员的思维模式有何不同:
开发人员:创造性思维,编写高质量代码;
测试人员:破坏性思维,想方设法模拟用户,从用户的角度破坏系统,构建正常、异常输入,发现被测对象表现特征与用户需求的偏离现象。
第二章 软件生命周期
一、软件的概念:
软件是个逻辑概念,且不以实体展示,是源代码、文档、配置数据的集合体。最后的终点往往是升级改造。
二、软件生命周期:
1、市场需求调研:
1)对于产品:被动模式,由软件公司主动挖掘市场需求,用户被动接受。风险较高,会面临需求频繁变更和后期销售不利的风险,且产品研发是长期性的,需要不断优化改进。会输出《XXX市场分析报告》
2)对于项目:主动模式,由客户主动提出需求让软件公司负责开发设计。风险较低,需求明确、资金充足,但仍然会面临客户临时加需求,所做项目达不到客户需求等风险。会输出《XXX系统初步需求预研报告》
2、可行性研究:重点解决前期市场调研的产品或项目是否可行,是否能为公司带来适当的经济利益或社会利益。软件产品的成败受时间、范围、成本、风险四个约束。
3、产品项目立项:构建产品或项目研发小组,制定产品或项目运作计划;列出一系列工作的步骤及时间点。
4、需求调研开发:进行详细的需求调研,输出《需求规格说明书》——SRS(software requirements specification)。
5、设计开发测试:输出《系统概要设计说明书》及《软件详细设计说明书》,测试在拿到需求规格说明书就要完成用例设计及评审。
6、发布运行维护
第三章 团队组织形式
一、****自研公司与外包公司的区别:
- 自研公司:有自己的研发产品,具有较强的业务实力及资本储备,拥有核心产品竞争力,团队建设及管理更规范。
- 外包公司:一般没有自己的研发产品,业务实力及资本储备较弱,团队建设及管理不太规范,但是技术实力强劲。
二、测试人员的构成:
- 测试主管、测试组长、环境保障人员、配置管理员、测试设计人员、测试工程师。
- 现实生活中是针对不同级别或能力对测试人员在模块式划分。
三、研发人员的构成:
- 研发组长、美工/页面制作人员、系统架构师、开发工程师。
第四章 开发与测试模型
一、常见软件研发模型及优缺点:
1、瀑布模型
- 优点:各项活动严格按照线性方式进行,每一阶段的输入是上一阶段的输出。
- 缺点:过于强调文档的作用,耦合度较高,不利于需求频繁变更或需求灵活的项目。
1)各阶段划分完全固定,会产生大量文档,增加工作量;
2)用户只能等到末期才能看到开发结果,从而增加开发风险;
3)早起错误要等到后期测试阶段才发现,测试介入较晚,人员闲置严重,后续工作跟不上。
2、原型模型
- 优点:在瀑布模型需求分析阶段增加原型设计阶段,可针对需求设计出对应的原型并得到确认。可减少由于需求调研不充分、需求不明确带来的开发风险,提高产品研发成功率。
- 缺点:依然会产生大量文档,测试依然介入较晚。
3、螺旋模型
优点:结合瀑布模型和原型模型,强调风险分析,抗风险能力强,适合大型复杂模型。
缺点:
1)要求客户接受和相信风险分析,并作出相关反应是不容易的;
2)如果执行风险分析大大影响项目利润,那将毫无意义;
3)成本相对较高,需要专业的风险分析专家参与。
4、RUP(统一软件开发过程)模型
5、敏捷模型(常用)
- 优点:以人为核心,迭代、循序渐进的开发方法。
1)只写必要文档或尽量少写文档,更加注重人与人之间面对面的交流;
2)将一个大项目分为多个相互联系、但也可独立运行的小项目,并分别完成,此过程中软件一直处于可使用状态;
3)能够快速响应需求变更,有问题直接沟通;
4)包括5个价值观:沟通、简单、反馈、勇气、谦逊。
二、****常见软件测试模型及其优缺点:
1、V模型
- 优点:由瀑布研发模型演变而来,适合周期较短的项目。
- 缺点:需求在早期存在缺陷时,可能要等到最后环节才发现,测试工程师测试活动严重滞后于开发活动。
2、W模型
- 优点:测试活动伴随着整个研发活动,从用户需求阶段介入,有利于尽早发现问题,解决了V模型开发测试活动串行的问题。
- 缺点:对文档要求较高;对测试工程师技能要求较高;单元、集成测试受制于研发活动,测试工作滞后。
3、X模型
- 优点:提出探索性测试概念,有经验的测试工程师可根据自己的思维活动及对被测对象的理解,在测试计划外发现更多的软件错误。
- 缺点:多数情况下仅作为其他测试方法的补充,消耗测试资源较多,且受制于测试工程师经验,所以不能成为独立的测试方法。
4、H模型
-
优点:将测试活动与其他研发流程独立,强调测试活动应该是一个独立的生产流程,贯穿整个软件生命周期,测试活动应尽早准备、尽早执行,当测试工作完成后,一旦达到测试就绪点,就可开展测试执行活动,不会受制于研发活动。
5、 敏捷模型(常用)
- 优点:高度迭代、周期性强,能够及时、持续地响应需求的频繁变跟反馈。不断修正被测对象的质量指标,正确建立测试策略,确认客户的有效需求得以圆满实现和确保整个生产过程安全、及时地发布最终产品。时间与敏捷开发同步。
- 缺点:测试工程师在技术技能、业务理解、产品设计等方面都需要熟练。