门道笔记 (6) 软件测试基础 (1)

 测试理论

课程目标

这部分咱们将 将主要学习内容:

掌握测试相关理论知识

掌握运用相关的方法设计测试用例case

掌握提交缺陷bug报告

现在开始学习

1. 测试理论第一章

学习目标

软件测试工程师

软件测试质量

软件测试概念

软件测试原则

软件测试模型

软件测试分类

软件测试风险

 

软件测试工程师

岗位名称

1、软件测试工程师

2、自动化测试工程师

3、性能测试工程师

4、白盒测试工程师

5、测试开发工程师

岗位要求及后续职业规划发展

结合我的经验来 谈谈软件测试:

  1.  软件测试工程师行业前景好、职业寿命长:随着项目经验的增加,项目从业经验越久经历的项目越丰富,就更具有竞争力。而开发呢,大部分人 年龄越大就越做不动开发了。开发对脑力 精力 体力 要求都非常高,而软件测试则低很多,所以 以前我做了5年的开发之后,转测试了。我做软件测试的薪资和以前做开发差不多,但轻松很多。
  1. 软件测试入门的门槛 很低,不管你的年龄多大 不管你以前是做什么的  不管你智商高不高,都可以转行做测试。去年年底,邻居是一位38岁的大姐,她以前是做外贸的, 后来又做了4年的家庭主妇,最终通过一些途径 进入华为做软件测试了。
  1. 从测试从业现状来看,75%的测试人员还是处于点点点的状态,即 手工测试。实际上手工测试是最具有价值的测试,95%以上的bug都是手工测试发现的。但是 只能做手工测试的测试工程师工资很低,有的学生都工作3年,但是他只能做手工测试,薪资也一直在一万左右。为啥很多测试人员只能做手工测试?两个原因:1 这是由于手工测试人员的入门门槛低造成的,很多测试人员在入门测试行业的时候,就没有软件开发背景。这点 还不是最主要的,没有软件技术背景 去学不就可以了吗? 好,第二点 2 很多测试人员没有继续学习的想法,即 在测试的过程中,没有继续去学习软件的知识。

在很多开发人员的眼里,手工测试只是每天跟着文档这里点点那里点点,没有什么技术含量。而测试人员 又经常找开发人员的麻烦,找他们的bug。所以 测试人员和开发人员,有时候 关系挺紧张的。怎么解决呢?1 需要测试人员有良好的沟通能力;2 需要测试人员具备一定的软件知识。

  1. 和手工测试 对应的是 自动化测试。自动化测试的技术含量比 手工测试要高很多,而且工资高很多。手工测试人员,大部分的工资在1万左右,而自动化测试 15K 以上。

最没有市场的应该是自动化测试。原因很简单,多数规模中小的软件公司,所开发的软件的规模或者迭代周期都不会很长。而自动化测试的长处恰恰却在对长迭代周期的项目可以起到节省人力物力的作用。当然我说的没市场也只是局限在国内的中小规模的公司,很多大公司对自动化测试还是有需求的,并且这些人的待遇也普遍比手工测试高不少,很简单的原因就是他们是会写程序的。所谓自动化测试,也就是写一个程序去测另一个程序。所以如果你是个自动化测试工程师,那么一些小公司还是不要去面试了吧。

  1. 性能测试的薪资 挺高的,性能测试对一个测试人员的综合素质要求是最高的,例如 如何测试MQ的性能,测试redis的性能等,不仅要求很多测试的知识,还有软件开发的知识等。在我国,优秀的测试人员不是很多,原因就是很多测试人员 没有技术背景。
  1. 外企对测试人员的重视程度要高于 国内企业,所以具备良好的英语读写能力,然后进入外企,是一个很好的方向。
  1. 持续的学习,才能更有竞争力。上面我提到了,我们是有目标的测试人员,我们不甘于只做手工测试。我们要做更加具有技术含量的测试人员,所以将来工作的同时,要持续的学习软件开发的知识,学习软件测试的知识。

结合我的情况来说吧,我有5年的软件开发经验,当我从软件开发 转 软件测试的时候,非常容易,我没有做过手工测试,直接开始 自动化测试和性能测试。对于我们班大多数同学来说,因为没有软件开发的知识,所以 你要从手工测试开始。将来 在工作中,你不断的学习,也会从事自动化测试 性能测试等工作。

 

软件测试简单的说 就是测试软件质量的,那什么是质量呢?

                                                                                           

什么是质量

物理学领域,物体所含物质的数量叫质量,是度量物体在同一地点重力势能和动能大小的物理量,不准确的说就是多重 ,比如 2斤 10斤。

运用学领域,美国著名的质量管理专家朱兰(J.M.Juran)博士从顾客的角度出发,提出了产品

质量就是产品的适用性。即产品在使用时能成功地满足用户需要的程度。

ISO8402(国际标准--质量管理和质量保证的术语) 定义

  质量:反映实体满足明确或隐含需要能力的特性总和。简单的说,就是物品能不能满足用户需要,能很好的满足 就是质量高,不能很好的满足 就是质量低。

以京东商城为例

软件质量

简单的说,软件质量就是 软件能不能满足用户的需求。

详细的说,所谓的软件质量  是用来衡量一个软件好与坏的标准,这个标准中 通常从以下几个方面来衡量:

功能性

功能性

       当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。

如,功能是否实现,登录 注册 搜索等 功能是否实现。软件中 有一个搜索的功能,测试这个功能是否满足用户的需要。这都是功能测试。

性能

时间特性

       软件产品执行其功能时,提供满足需求的响应时间和处理时间以及吞吐率等指标的能力。

资源利用性

       软件产品执行其功能时,提供满足需求的CPU、内存等占用率的能力。

如,前几年 双11的时候 页面打开非常慢 ,有时 页面无法打开。为啥呢?大量的用户 在同一时间访问淘宝的服务器,导致服务器cpu使用率逐渐升高 超过性能瓶颈,然后随着用户的增多 服务器给用户响应数据的时间 越来越长,所以用户打开页面 就很慢。

5万用户 ---- cpu 使用率40%,给用户响应页面的时间是0.06s

10万用户 ---- cpu 使用率60%,给用户响应页面的时间是0.06s

20万用户 ---- cpu 使用率65%,给用户响应页面的时间是0.06s

50万用户 ---- cpu 使用率75%,给用户响应页面的时间是0.06s

80万用户 ---- cpu 使用率80%,给用户响应页面的时间是0.07s

100万用户 ---- cpu 使用率85%,给用户响应页面的时间是0.1s

150万用户 ---- cpu 使用率95%,给用户响应页面的时间是2s

 

安全性

软件在受到恶意攻击的情形下依然能够继续正确运行的能力

通常 一个项目的主要功能开发完之后,为了项目的安全考虑,都要再集成一个安全保护模块。避免非法访问某些功能模块,非法访问某些数据,避免数库被用户直接操作 等安全控制。

例如,

不同用户的权限控制---在系统中 A是老板,他可以删除员工信息;B是普通员工,他没有权限删除员工信息。那对B的测试 就是安全性测试。

数据库 默认是只接受哪个IP的访问,简单说  只能我这台电脑连接数据库并操作;你那台不行。对你的测试,就是安全性测试后。

项目中,敏感信息 在网络传输过程中,是否可以被抓包并解析。

安全性在中国正在受到越来越多的重视,比如前段时间闹得沸沸扬扬的CSDN密码泄密门,相应的安全性测试也会越来越受重视。常见的SQL注入等漏洞可以借助于AppScan这类安全性测试工具检测出来。

兼容性

常见的兼容性:浏览器 一个网页爱googe浏览器上能否正常显示 在IE浏览器上是否正常显示;操作系统  服务器端能否部署在linux系统上,能否部署在windows系统上。

再如,咱们用的屏幕共享工具,若学生的电脑是thinkpad T430的话  无法指定的这个学生的桌面共享给其他学生。

再如,某款游戏,我们要对她进行显卡的兼容性测试。

 

可靠性

可靠性

  在指定条件下使用时,软件产品维持规定的性能级别的能力。

成熟性

       软件产品为避免由软件内部的故障而导致失效的能力。

容错性

       软件出现故障或者违反其指定接口的情况下,依然维持规定的性能级别的能力。

易恢复性

       失效发生后,重建规定的性能级别并恢复受直接影响的数据的能力。

例如 一个项目持续运行了一年 没出现问题。纵使发生了故障,也能迅速的恢复数据。例如 美国911事件后,双子座大厦的计算机数据能迅速的恢复 就是可靠性的表现。

易用性

易用性

         在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。

易理解性

         软件产品让用户无须过多学习就能理解的能力。

易学性

         软件产品让用户即使参加了学习,学习成本高低的能力。

易操作性

         软件产品让用户操作方便,符合使用习惯的能力。

吸引性

         软件产品让用户觉得舒服、操作吸引眼球的能力。

用户体验性

  是以上几个特性的统称,部分企业把易用性也称之为用户体验性,是一个比较时髦的词。

 

 

安装/卸载

执行安装/卸载时,能按照一定的规格和流程将软件安装上的能力。

 

 

可维护性

易分析性

         软件出问题后,快速判断问题点并能快速修复的能力。

易改变性

         软件修改后可快速发布,快速投入生产的能力。

稳定性

         软件避免由于软件修改而造成意外结果的能力。

易测试性

         软件版本升级修改后被快速确认的能力

如,从开发的角度 代码容易维护(容易看懂 容易修改);软件出现bug,通过日志记录系统 可以迅速的定位到问题所在。

 

可移植性

适应性

         软件不需采用其他手段就可适应不同的指定环境的能力。例如 在小米Android系统中的原生视频播放app,可以直接安装在 华为Android系统中,若这样,就是这个app是可移植的。

易安装性

         软件在指定环境中被快速安装的能力。如在线更新、安装包自动生成等。

共存性

         软件在同一环境下同与其他软件共存的能力。如 360安全卫士 和 腾讯管家 是否能共同存在。

易替换性

         软件在同一环境下,替代另一个相同用途的软件的能力。

在进行软件测试的时候,通常可以从这几个方面 来判断这个软件质量如何。但到底是否符合质量要求,还是要看 需求规格说明书。如,性能,性能好不好的标准是 需求规格说明书。

 

 

综合应用

1.请针对纸杯,从哪几个方面进行测试?

寻找水杯是否有说明书,如果有需要充分阅读并理解水杯说明书,按说明书描述,测试到所有需求点

按测试关注点划分主要分为以下几个方面:

 

功能测试:

主要关注水杯基本功能

1.1 水杯是否可以正常装水

1.2 水杯是否可以正常喝水

1.3 水杯是否有盖子,盖子是否可以正常盖住

1.4 水杯是否有保温功能,保温功能是否正常保温

1.5 水杯是否会漏水,盖住盖子拧紧后是否会漏水

 

界面测试:

主要关注水杯外观、颜色、设计等方面

2.1 外观是否完整

2.2 外观是否舒适

2.3 颜色搭配及使用是否让人感到舒适

2.2 杯子外观大小是否适中

2.3 杯子是否有图案,图案是否易磨损

 

易用性测试:

主要关注水杯使用是否方便

3.1 水杯喝水时否方便

3.2 水杯拿起放下是否方便

3.3 水杯装水是否方便

3.5 水杯携带是否方方便

3.6 水杯是否有防滑功能

3.7 水杯装有低温或者高温水时,是否会让手感到不适

 

性能测试:

4.1 水杯装满水时,是否会露出来

4.2 水杯最大使用次数

4.3 水杯的保温性是否达到要求

4.4 水杯的耐寒性是否达到要求

4.5 水杯的耐热性是否达到要求

4.6 水杯掉落时时,是否可以正常使用

4.7 水杯长时间放置时,是否会发生泄露

 

兼容性测试:

主要关注水杯是否可以装其他液体,如果汁、汽油、酒精等

 

可移植性测试:

是否和其他盖子兼容

6.1 将水杯放在常温环境中,使用是否正常

6.2 将水杯放在零下的环境中,使用是否正常

6.3 将水杯放在高于正常温度的环境中,使用是否正常

 

安全性测试:

主要关注水杯是否释放有毒物质等

7.1 当水杯装上水后,是否会产生有毒物质

7.2 把水杯放在零下环境时,是否会产生有毒物质

7.3 把水杯放在高温环境时,是否会产生有毒物质

 

 

  1. 具体需求: 有一个登陆页面, 上面有2个textbox, 一个提交按钮。

寻找登陆是否有说明书,如果有需要充分阅读并理解登陆说明书,按说明书描述,测试到所有需求点

按测试关注点划分主要分为以下几个方面:

功能测试(Function test)

1. 输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。

2. 输入错误的用户名或者密码,  验证登录会失败,并且提示相应的错误信息。

3. 登录成功后能否能否跳转到正确的页面

4. 用户名和密码,如果太短或者太长,应该怎么处理

5. 用户名和密码,中有特殊字符,和其他非英文的情况

6. 记住用户名的功能

7. 登陆失败后,不能记录密码的功能

8. 用户名和密码前后有空格的处理

9. 密码是否以星号显示

界面测试(UI Test)

1. 布局是否合理,2个testbox 和一个按钮是否对齐

2. testbox和按钮的长度,高度是否复合要求

3. 界面是否好看

4. 图片,颜色,字体,超链接,是否都显示正确

性能测试(performance test)

1. 打开登录页面,需要几秒

2. 输入正确的用户名和密码后,登录成功跳转到新页面,不超过5秒

3. 能支持多少个用户同时登陆

安全性测试(Security test)

1. 登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)

2. 用户名和密码是否通过加密的方式,发送给Web服务器

3. 用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript验证

4. 用户名和密码的输入框,应该屏蔽SQL 注入攻击

5. 用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)

6. 错误登陆的次数限制(防止暴力破解)

可用性测试(Usability Test)

  1. 1.  是否可以全用键盘操作,是否有快捷键

2. 输入用户名,密码后按回车,是否可以登陆

兼容性测试(Compatibility Test

1. 主流的浏览器下能否显示正常已经功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)

2. 不同的平台是否能正常工作,比如Windows, Mac

3. 移动设备上是否正常工作,比如Iphone, Andriod

4. 不同的分辨率

5. 不同的浏览器大小 (浏览器最大化, 和非最大化)

软件辅助性测试 (Accessibility test

软件辅助功能测试是指测试软件是否向残疾用户提供足够的辅助功能

如, 高对比度下能否显示正常 (视力不好的人使用)

猜你喜欢

转载自www.cnblogs.com/zsjlovewm/p/10469884.html