![](https://img-blog.csdnimg.cn/c42925e4d1454cce89b83e567859f83c.png)
![](https://img-blog.csdnimg.cn/07015886485d4e9897981976cafe73c1.png)
目录
分为6个阶段:需求分析->计划->设计->编码->测试->运行维护
一、什么是软件测试?
软件测试是验证软件产品特性是否满足用户的需求。 它是一系列活动,这些活动是用于评估一个程序或软件系统的特性或能力,并确定其是否达到了其预期的效果(预期的效果即即需求定义)。
概括之,测试是保障软件质量的。
现实生活中在很多情况下我们都在默默进行测试:刚新买来一部手机,我们要干什么?一场考试, 做完一遍题目之后, 进行一遍检查, 就是在 “ 测试” 。买一台电视, 安装好之后打开试试看能不能正常使用, 也是在 “ 测试” 。
二、软件测试的特点
软件测试只是一个样本试验,具有不可穷尽性。
练习:一个软件系统的登陆功能如何进行测试?
要考虑多方面的因素:密码账号的正确与否,sql注入,网络环境,同时能登录的人数,同一用户多台设备登录……
三、软件测试和开发的区别
1、内容
开发:是通过不同的编程语言以及相关技术,最终做出软件 (Coding)
测试:是写测试用例、执行、发送测试报告;编写自动化测试用例,开发相关的测试工具。
2、技能区别
开发:专业度高,技能深度大(因为开发要写出高效的代码)。
测试:专业度低,技能广度大(因为测试人员要对产品进行全方面的测试,如外观是否好看,web的UI自动化测试,APP的UI自动化,后端的接口进行测试,性能,安全等等。
3、工作环境
基本类似。
4、发展前景
开发:
初级开发工程师 -> 中级开发工程师 -> 高级开发工程师 ->架构师 -> CTO
测试:
初级测试工程师 -> 中级测试工程师-> 高级测试工程师 -> 架构师->项目经理
5、繁忙程度
敏捷模式下差距不大,产品发布前压力比较大。
6、技能要求
测试要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理解,编程能力等。
四、软件测试与调试的区别
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、概念
当且仅当规格说明是存在的并且正确时,程序与规格说明之间的不匹配才是错误。(程序与规格说明之间不匹配这样的说法是片面的。)
- 规格说明:软件需求,规格说明书。
![](https://img-blog.csdnimg.cn/be386d1df6a5476783ce5c366ec6b2cc.png)
- 程序与规格说明不匹配:即执行结果不等于预期结果。
当涉及到需求规格说明书没有提到的功能时,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。
十一、软件生命周期
指的是从软件产品的设想开始到软件不再使用而结束的时间。
分为6个阶段:需求分析->计划->设计->编码->测试->运行维护
1、需求分析:分析需求是否合理,需求是否完整。
2、计划:谁开发,谁测试,开发多久,测试多久……
3、设计:制定方案。
4、编码:写代码。
5、测试:形成测试报告。
![](https://img-blog.csdnimg.cn/315c86a161954aeb981e5ae499e2b06a.png)
6、运行维护:如果有线上问题,此时测试人员需要协助开发定位问题+解决问题。