测试基础知识

一、测试与测试开发的区别:

1、测试:

检查软件有没有Bug;避免上线后出现重大问题。

测试工程师: 主要做功能测试

2、测试开发:

1)功能测试

2)自动化测试:能写代码测试代码。

3)开发测试工具进行测试。

测试开发工程师: 一切跟测试活动相关的工具开发。比jira,Bugzilla(管理工具),各种平台的测试框架(被测试项目在linux下windows下的环境,不同环境有不同的测试框架),甚至CI(持续集成)和代码管理工具都涉及。

3、自动化测试

编写测试脚本,写自动化测试框架,执行测试,分析,提交BUG,跟踪BUG状态、总结,帮助企业全面实现自动,从而节省成本。

想从事自动化必须会代码,可以学习例如selenium,appium(常用)等这样的工具。

自动化测试测试工程师: 自动化测试框架,测试case开发,环境搭建,log分析,report等。

4、性能测试

包括:负载测试(指标变化),压力测试(性能点),强度测试,容量测试,基准测试,渗入测试,峰谷测试 。

  • 应用在客户端性能的测试:负载测试和压力测试
  • 应用在网络上性能的测试:
  • 应用在服务器端性能的测试:
    • Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;
    • Avg time to last byte per terstion (mstes):平均每秒业务脚本的迭代次数;
    • Successful Rounds:成功的请求;
    • Failed Rounds :失败的请求;
    • Successful Hits :成功的点击次数;
    • Failed Hits :失败的点击次数;
    • Hits Per Second :每秒点击次数;
    • Successful Hits Per Second :每秒成功的点击次数;
    • Failed Hits Per Second :每秒失败的点击次数;
    • Attempted Connections :尝试链接数;
      –具体:通过量、响应时间、CPU负载、内存使用
      –工具:QALoad、LoadRunner、Benchmark Factory、Webstress
      –过程:测试需求与测试内容,测试案例制定,测试环境准备,测试脚本录制、编写与调试,脚本分配、回放配置性能测试图像,性能测试图像与加载策略,测试执行跟踪,结果分析与定位问题所在,测试报告与测试评估。

二、测试理论

1、什么是软件测试

测试是为发现错误而执行的一个程序或系统的过程。

2、测试目的

测试是为了寻找错误,并尽最大可能找出最多的错误,并对软件质量进行度量与评估,以提高软件质量。测试可以证明软件存在错误,但不能保证软件没有错误。

3、测试原则

  • 尽早地和不断的进行软件测试
  • 完全测试是不可能的,测试需要终止

4、测试流程

  • 1、测试需求分析阶段:需求分析与评审、学习业务流程、提取功能点、编写需求分析说明书
  • 2、测试计划阶段:编写测试计划说明书(5W),参考软件需求规格说明书,项目总体计划,内容包括测试范围(来自需求文档),进度安排,人力物力的分配,整体测试策略的制定。风险评估与规避措施有一个制定。
  • 3、测试设计阶段:主要是编写测试用例(涉及自动化测试的话需要编写测试用例脚本),会参考需求文档(原型图),概要设计,详细设计等文档,用例编写完成之后会进行评审。
  • 4、测试执行阶段:搭建环境,执行冒烟测试(预测试),然后进入正式测试,提交BUG、跟踪BUG修改状态(这里可能会有回归测试,并且在测试执行之前会搭建测试环境),bug管理直到测试结束。
  • 5、测试评估阶段:编写测试报告,确认是否可以上线。

🐷 5W

🎍“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”

🎍利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。

🐷测试计划和测试用例之间的关系

测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术

5、软件生命周期的定义:

是指软件产品从提出、实现、使用、维护到停止使用退役的过程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NhVbLXdE-1628206667244)(/Users/yangying/Library/Application Support/typora-user-images/image-20210602210931539.png)]

6、测试分类

6.1 根据不同的测试阶段划分单元测试,集成测试,系统测试,确认测试,验收测试
  • 单元测试:(也叫模块测试)是针对软件设计中的最小单位-程序模块,进行正确性检查的测试工作。 单元在软件代码中指一个函数或一个类,在图形化的软件中,单元一般指一个窗口,一个菜单。
    🐖 单元测试框架 :java的Junit、testNG,C#的NUnit ,python 的unittest、pytest
  • 集成测试:(也叫组装测试,联合测试)是单元测试的逻辑扩展。在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分
  • 系统测试: 是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。
  • 确认测试:
  • 验收测试:
6.2 按测试组织划分:开发方测试(α测试),用户测试(β测试)
6.3 按测试技术划分【第三方测试 】:白盒测试,黑盒测试,灰盒测试

🐖 在具体的测试执行过程中又分为是否查看源代码的测试方式, 不查看源代码的测试方式为黑盒测试,查看源代码的测试方式为白盒测试。

黑盒测试【功能测试、数据驱动测试】

黑盒测试是把测试对象看成是一个黑盒子,完全不考虑程序内部结构和处理过程。 它只是检测程序实现的功能是否按需求说明书规定那样。注重于测试软件的功能需求,只关心软件的输入数据和 输出数据。
🐖 自动化测试是属于黑盒测试下面的一个子分支。

白盒测试【结构测试、逻辑驱动测试】

白盒测试是把程序看成是装在一个透明的白盒子里,清楚了解程序结构和处理逻辑过程。检查所有路径及条件是否正确,是否符合设计规格要求。

灰盒测试: 是介于白盒测试与黑盒测试之间的一种测试

灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

7、黑盒测试方法

1,等价类划分(最常用): 把程序输入条件划分成若干部份,从每个部份中选取少数代表数据作为测试数据。每一类中的代表数据在测试中等价于这整个类的其他数据。
等价类划分
等价类划分

2,边界值分析法(最常用):通过选择等价类刚好被划分的边界值作为测试数据。

3,因果图分析法: 从程序规格说明中找出“因”(输入条件)和“果”(输出),通过因果图转换成判定表。

4,错误推测法 : 基于经验和直觉推测程序中所有可能存在各种错误。

5,判定表驱动法 :

6,正交试验设计法 :

7,功能图法:

8、白盒测试方法:

  • 逻辑覆盖
  • 循环覆盖
  • 基本路径覆盖

其中逻辑覆盖按照发现错误的能力由低到高:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

(1)语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

(2)判定覆盖:使设计的测试用例保证程序中每个判断取“真”与取“假”两种情况都能至少测一遍。

(3)条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支

(4)判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。

(5)条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。

(6)路径覆盖:每条可能执行到的路径至少执行一次。

8、测试用例与测试脚本的区别

  • 测试用例为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。
  • 测试脚本是为了进行自动化测试而编写的脚本测试用例设计方法

9、测试用例设计方法

(一)需求测试:
(二)界面测试(UI Test):
(三)功能测试(Function test):
(四)性能测试(performance test)
(五) 安全性测试(Security test):
(六)可用性测试(Usability Test):
(七) 兼容性测试:

10、 测试用例通常包括那些内容?

不同结构的用例包括的不一样。(版本、编号、项目、设计人员、设计日期、输入、预期输出„„)

软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果。

  • 用例编号: 测试用例的编号有一定的规则,比如系统测试用例的编号这样定义规则:PROJECT1-ST-001 ,命名规则是项目名称+测试阶段类型(系统测试阶段)+编号。定义测试用例编号,便于查找测试用例,便于测试用例的跟踪。
  • 测试标题 : 对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。比如 “ 测试用户登录时输入错误密码时,软件的响应情况 ” 。
  • 重要级别: 定义测试用例的优先级别,可以笼统的分为 “ 高 ” 和 “ 低 ” 两个级别。一般来说,如果软件需求的优先级为 “ 高 ” ,那么针对该需求的测试用例优先级也为“ 高 ” ;反之亦然,一般而言,是 5 级划分。
  • 测试输入: 提供测试执行中的各种输入条件。根据需求中的输入条件,确定测试用例的输入。测试用例的输入对软件需求当中的输入有很大的依赖性,如果软件需求中没有很好的定义需求的输入,那么测试用例设计中会遇到很大的障碍。
  • 操作步骤: 提供测试执行过程的步骤。对于复杂的测试用例,测试用例的输入需要分为几个步骤完成,这部分内容在操作步骤中详细列出。
  • 预期结果: 提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。

11、设计测试用例

(一)给你一个杯子如何测试?

测试项目:杯子

需求测试:查看杯子使用说明书

界面测试:查看杯子的外观是否得体。(外形、图案)、

易用性:杯子是否烫手、是否有防滑措施、是否方便饮水、是否易用手端着或手拿。

安全性:使用过程中杯口是否容易给身体造成伤害,,杯子有没有毒和细菌。

可靠性:杯子从不同高度掉下的损坏程度。

稳定性:杯子一直盛着水,时间长了是否会漏水。

兼容性:是否可容纳高温度水、果汁、酒精、汽油等。

用户文档:用户使用手册上是否有对杯子的使用方法进行限制,是否出现使用过程中友好的提示、该注意的问题、使用环境等有详细的描述。

(二)给你一个网站,你如何测试?

1、查找需求说明、网站设计等相关文档,分析测试需求。

2、制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:

 功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试

3、设计测试用例:

  • 功能性测试可以包括,但不限于以下几个方面:
  • 链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等。提交功能的测试。
  • 多媒体元素是否可以正确加载和显示。多语言支持是否能够正确显示选择的语言等。
  • 界面测试可以包括但不限于一下几个方面:
  • 性能测试一般从以下三个方面考虑:
    压力测试; 负载测试; 强度测试
  • 数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。
  • 安全性测试:
  • 兼容性包括:浏览器的兼容性;操作系统的兼容性;软件平台的兼容性;数据库的兼容性
(三)一个身份证号码输入框,怎么设计用例?

校验身份证号规则的有效性(包括地址码、生日期码、顺序码和校验码)

校验 15 位身份证号和 18 位身份正好都是可用的

校验末位是 X 的情况

校验不足 15 位、16-17 位和大于 18 位的情况

如果是必输项,校验不输入的时候会不会有正确的提示

如果不是必输项,则要校验不输入的时候流程能否正常进行

校验输入非数字的情况,是否会有正确提示信息(包括大小写字母、汉字、特殊字符和标点符号)

校验输入全角的数字的时候,系统是否会识别(这个得根据需求确定是否可以使用全角的数字)

12、软件调试

软件测试目的:发现错误

软件调试目的:改正错误

软件调试步骤:

<1>错误定位:找到错误的位置在哪

<2> 纠正错误

<3>回归测试: 调试后要进行回归测试,防止引进新的错误。

为什么选择测开?

  • 最大的兴趣,感觉这是一个有挑战性的工作;
  • 测开这个岗位需要了解的东西很多,前端、开发、算法都需要了解一些,可以多学习,多了解一些知识。
  • 测试是一个经验行业,工作越久越能感觉到做好测试的难度和乐趣
  • 通过自己的工作,能使软件产品越来越完善,从中体会到乐趣

你自认为测试的优势在哪里?

有韧性

有耐心

做事有条理性

喜欢面对挑战

有信心做好每一件事情

较强的沟通能力

从以前的经理处都得到了很好的评价表明我做的很好

测试模型

img

img

设计模式

模式的目标:把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式。因此,模式是个经验提取的准则,并且一次次的实践中得到验证。

请问你觉得测试项目具体工作是什么?

1.搭建测试环境
2.撰写测试用例
3.执行测试用例
4.写测试计划,测试报告
5.测试,并提交BUG表单
6.跟踪bug修改情况
7.执行自动化测试,编写脚本,执行,分析,报告
8.进行性能测试,压力测试等其他测试,执行,分析,调优,报告

描述测试工具的功能?

LoadRunner-负载压力测试:预测系统性能。
JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制
功能测试:通过自动录制、检测和回放用户的应用操作。将输出记录同预先给定的记录比较。
Junit:白盒测试工具:针对代码测试
测试管理工具:对测试需求、计划、用例、实施进行管理
测试辅助工具:本身不执行,可以生成测试数据,为测试提供数据准备
负载压力测试:LoadRunner:预测系统行为和性能的工业标准级负载测试工具。模拟上千万用户同时实施并发操作,来实时监控可能发生的问题。
功能测试: QTP(quicktest professional):自动测试工具
白盒测试:C++ TEST(做C和C++的白盒测试)、JUnit(Java白盒测试)
缺陷管理工具:Mantis、BugFree、QC、TD
用例管理工具:TestLink、QC
测试辅助工具:SVN

Bug类型

• 代码错误
• 界面优化
• 设计缺陷
• 配置相关
• 安装部署
• 安全相关
• 性能问题
• 标准规范
• 测试脚本
• 其他

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值