目录
一、什么是软件测试?
二、软件测试的特点
三、软件测试和开发的区别
1、内容:
2、技能区别
3、工作环境
4、薪水
5、发展前景
6、繁忙程度
7、技能要求
四、软件测试与调试的区别
1、角色
2、目的
3、执行的阶段
4、手段
五、《软件测试的艺术》
六、优秀的软件测试人员具备的素质
1、技能
2、非技能
七、软件测试岗位
八、什么是需求
1、概念
a.用户需求
b.软件需求
2、从软件测试人员角度看需求
3、为什么需求对软件测试人员如此重要?
4、如何深入理解被测试软件的需求?
九、测试用例 (Test Case)
1、概念
2、测试用例解决了两大问题
3、测试用例的例子
十、软件错误(BUG)
1、概念
十一、软件生命周期
分为6个阶段:需求分析->计划->设计->编码->测试->运行维护
一、什么是软件测试?
软件测试是验证软件产品特性是否满足用户的需求。 它是一系列活动,这些活动是用于评估一个程序或软件系统的特性或能力,并确定其是否达到了其预期的效果(预期的效果即即需求定义)。
概括之,测试是保障软件质量的。
现实生活中在很多情况下我们都在默默进行测试:刚新买来一部手机,我们要干什么?一场考试, 做完一遍题目之后, 进行一遍检查, 就是在 “ 测试” 。买一台电视, 安装好之后打开试试看能不能正常使用, 也是在 “ 测试” 。
二、软件测试的特点
软件测试只是一个样本试验,具有不可穷尽性。
练习:一个软件系统的登陆功能如何进行测试?
要考虑多方面的因素:密码账号的正确与否,sql注入,网络环境,同时能登录的人数,同一用户多台设备登录……
三、软件测试和开发的区别
1、内容:
开发:是通过不同的编程语言以及相关技术,最终做出软件 (Coding)
测试:是写测试用例、执行、发送测试报告;编写自动化测试用例,开发相关的测试工具。
2、技能区别
开发:专业度高,技能深度大(因为开发要写出高效的代码)。
测试:专业度低,技能广度大(因为测试人员要对产品进行全方面的测试,如外观是否好看,web的UI自动化测试,APP的UI自动化,后端的接口进行测试,性能,安全等等。
3、工作环境
基本类似。
4、薪水
通常情况下,大厂测试和开发的薪资是一样的。
中小厂测试和开发的薪资比起来,测试是略低的。
5、发展前景
开发:
初级开发工程师 -> 中级开发工程师 -> 高级开发工程师 ->架构师 -> CTO
测试:
初级测试工程师 -> 中级测试工程师-> 高级测试工程师 -> 架构师->项目经理
6、繁忙程度
敏捷模式下差距不大,产品发布前压力比较大。
7、技能要求
测试要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理解,编程能力等。
四、软件测试与调试的区别
1、角色
调试:开发自己调试
测试:测试+开发执行(通常情况下,黑盒测试由测试人员执行,部分白盒测试、 系统测试是由开发人员执行)
2、目的
调试(Debug):确保程序做了程序员想它做的事情 (发现问题、解决问题)
测试(Testing):确保程序解决了它该解决的问题 (发现问题)
3、执行的阶段
调试一般在开发阶段。
测试贯穿整个软件开发生命周期。
4、手段
调试:debug,分析代码逻辑。
测试:等价类划分法,边界值法等等。
五、《软件测试的艺术》
《软件测试的艺术》给出软件测试的定义:测试是为发现错误而执行程序的过程。它意味着软件测试不仅要证明软件做了该做的事情,也要保证它没做不该做的事情。 是一本学习软件测试的推荐书目。
六、优秀的软件测试人员具备的素质
1、技能
- 测试用例设计能力
- 编程能力
- 编写测试工具、自动化测试用例技术快速学习的能力
- 业务快速学习能力
2、非技能
- 沟通、合作(一个项目是一堆人写的)
- 文字表达能力 (测试用例文字写出来的,编写测试文档,BUG)
- 抗压能力
- 责任感
七、软件测试岗位
- 软件测试工程师:工程师的主要工作一般包含需求分析、编写测试计划和测试方案、设计测试用例、执行测试用例、跟踪BUG、编写测试报告等。
- 测试开发工程师:根据项目的特点来开发一些自动化测试的脚本,或自动化测试的工具,或者是软件测试工作中用到的提高工作效率的小工具什么的,从而能够更有效地进行测试,提高软件产品的质量。 测试开发工程师工作的目的就是为了更高效,更快捷地让测试工程师进行测试工作;测试开发岗位一般要求一定的开发能力,解决问题的能力尤为重要。
- 性能测试工程师:针对系统进行性能测试,包括使用工具和编写性能自动化测试脚本。
- 安全测试工程师:主要分析产品可能会出现的安全问题,做各个方面的渗透测试,提高产品的安全性。
- 其它:系统测试工程师,嵌入式测试工程师,硬件测试工程师。
八、什么是需求
1、概念
满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。
a.用户需求
可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。
b.软件需求
也叫功能需求,该需求会详细描述开发人员必须实现的软件功能。 用户需求就是一句话,而软件需求是一个文档(详细描述用户需求如何实现)。日常工作中通常是用软件需求进行开发测试。
大多数公司在进行软件开发的时候,会把用户需求转化为软件需求(这就是PM产品经理要做的事情)。开发人员和测试人员工作的直接依据就是软件需求。
2、从软件测试人员角度看需求
软件需求是测试人员进行测试工作的基本依据。 在具体设计测试用例的时候,首先需要搞清楚每一个业务需求对应的多少个软件功能需求点,然后分析出每个软件功能需求点对应的多少个测试需求点,然后针对每个测试需求点设计测试用例。
过程:业务需求—>软件功能需求点—>测试需求点—>测试用例
以用户登录为例来阐述依据需求设计测试用例的过程。其中,测试需求点的识别要从多个角度进行,常见的有功能、兼容、性能、安全等。
3、为什么需求对软件测试人员如此重要?
从软件功能需求出发,无遗漏的识别出测试需求是至关重要的,因为这将直接关系到用例的测试覆盖率。
对于识别出的每个测试需求点,需要采用具体的设计测试用例的方法来进行测试用例的设计。
4、如何深入理解被测试软件的需求?
测试工程师在需求分析和设计阶段就开始介入。只有测试人员真正理解原始业务需求,才能从业务需求的角度去设计针对性明确、覆盖率较高的测试用例集。测试人员了解业务需求的方式有:
- 参加需求评审会议。
- 查阅文档(需求文档,技术文档)。
- 找产品经理了解软件功能,找开发人员了解软件的实现。
九、测试用例 (Test Case)
1、概念
测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合(注意是一个集合,而不是指某个具体的样例)。这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
2、测试用例解决了两大问题
测试过程中可能会遇到以下问题: 不知道是否全面测试了所有功能、测试的覆盖率无法衡量、对新版本的重复测试很难实施、存在大量冗余测试影响测试效率……
测试用例就是来解决这些问题的。概括来说,测试用例case解决了两大问题:
- 测什么
- 怎么测
测试用例提高测试人员工作效率,解决了测试人员工作的重复性问题。并且,测试用例也是建立自动化(让代码代替人员执行测试)的基础。
3、测试用例的例子
a、对注册功能的测试用例记录
b、对在线OJ平台的判题功能的测试用例记录
c、对qq的登录功能的测试用例记录。
十、软件错误(BUG)
1、概念
当且仅当规格说明是存在的并且正确时,程序与规格说明之间的不匹配才是错误。(程序与规格说明之间不匹配这样的说法是片面的。)
- 规格说明:软件需求,规格说明书。
- 程序与规格说明不匹配:即执行结果不等于预期结果。
当涉及到需求规格说明书没有提到的功能时,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。
十一、软件生命周期
指的是从软件产品的设想开始到软件不再使用而结束的时间。
分为6个阶段:需求分析->计划->设计->编码->测试->运行维护
1、需求分析:分析需求是否合理,需求是否完整。
2、计划:谁开发,谁测试,开发多久,测试多久……
3、设计:制定方案。
4、编码:写代码。
5、测试:形成测试报告。
6、运行维护:如果有线上问题,此时测试人员需要协助开发定位问题+解决问题。