测开面经-软测知识

软件测试的基础知识

根据网上的面经和自己的经验整理。

1.软件的生命周期

软件的生命周期:计划阶段——>需求分析——>设计阶段——>编码——>测试——>运行和维护
产品的生命周期:导入期——>成长期——>成熟期——>衰退期
bug的生命周期:发现Bug—>提交Bug—>指派bug—>研发确认bug—>研发修复bug—>回归验证bug—>关闭bug

2.一般测试用例的设计要点(APP,WEB)

功能性、性能性、安全性、易用性、兼容性、界面测试、(网络测试、中断测试)app/网站类似的才需要、边界值测试、压力测试

(1)APP专项测试:

  • 安全测试:软件权限、数据安全、通讯安全
  • UI测试
  • 安装、卸载测试
  • 具体的功能测试
  • 性能测试:响应速度、电量、流量、cpu、内存占用大小
  • 兼容测试:分辨率,屏幕尺寸,设备系统IOS/Android,APP版本兼容
  • 中断测试:中断指软件在工作中被其他的任务或意外事件等情况终止推出,相应的测试即为中断测试,中断测试有人为中断、新任务中断以及意外中断等几种情况。
    来电中断:呼叫挂断、被呼叫挂断、通话挂断、通话被挂断
    短信中断:接收短信、查看短信
    其他中断:蓝牙、闹钟、插拔数据线、手机锁定、手机断电、手机问题(系统死机、重启)
  • 通过弱网模拟测试,测试APP在手机网络质量较差的情况下的运行情况,全面再现网络速率、丢包率等,快速提升用户弱网体验
  • 音视频测试

(2)WEB测试:(各类web控件测试点)

  • 页面控件测试:界面检测、文本框、添加/移除按钮、列表、搜索-文本框、搜索-下拉框、
  • 安全测试:数据传输是否加密处理,是否加密形式存储密码
  • 性能测试:响应速度,时间,用户并发数
  • 兼容测试:电脑硬件和电脑系统
  • 网络测试

3.软件测试方法分类

①白盒测试
概念:关注程序代码的具体细节,根据软件内部代码的逻辑结构分析来进行测试。 主要是通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件质量。关注代码的实现细节。主要对程序模块的所有独立执行路径至少测试一遍、对所有的逻辑判定,取“真”或“假”的两种情况都要测试一遍,循环边界和运行界限内执行循环体等等

测试用例设计方法:逻辑覆盖、循环覆盖、基本路径覆盖、判定覆盖
优点:增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题
缺点:系统庞大时测试开销很大,难以测试所有运行路径;测试基于代码,只能验证代码是否正确,而不晓得代码设计是否合理,可能会遗漏某些功能需求
静态白盒测试 :即代码审查,正式审查和检验设计和程序代码;
动态白盒测试 利用查看代码功能和实现方式得到的信息来设计和执行测试,也叫结构测试;
1.语句覆盖每条语句至少执行一次。
2.判定覆盖每个判定的每个分支至少执行一次。
3.条件覆盖每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。

②黑盒测试
概念:不考虑其内部结构,即具体代码实现,检测软件的各个功能能否得以实现,确认软件功能的正确性, 依靠软件说明书来判断测试用例,关注具体的客户需求及软件功能。黑盒测试主要是为了发现:1.是否有不正确的或者遗漏的功能;2.输入是否能输出正确的结果;3.性能上是否满足要求

优点:①较为简单,不需要了解程序内部的代码及实现,与软件内部实现无关;②从用户角度出发,实际考虑用户使用的功能及可能出现的问题
缺点:不可能覆盖所有的代码,覆盖率较低

测试用例设计方法:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试法、场景法

等价类:输入域的各子集中,各个输入数据对于揭露程序中的错误都是等效的。

等价类划分:将全部输入数据合理划分成若干个等价类,在每一个等价类中取一个数据作为输入条件,就可以用少量代表性测试数据取得较好的测试结果。分为有效等价类(合理、有意义的输入数据构成的集合)和无效等价类
边界值分析法:大量错误是发生在输入输出范围的边界上,选定测试用例时应该选取正好等于、刚刚大于、刚刚小于边界值的值作为测试数据,而不是选取等价类中的任意值,作为对等价类划分的补充
错误猜测法:基于经验和直觉推测,列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据这些情况选择测试用例
因果图法:考虑输入条件之间的相互组合,也考虑输出结果对输入条件的依赖关系。原因即为输入条件或者输入条件的等价类,结果即为输出条件,把因果转换为决策表,为决策表中的每一列设计测试用例。
场景分析法:根据用户场景来模拟用户的操作步骤
大纲法:着眼于需求。将需求转换为大纲的形式,大纲表示为树状结构,在根和叶子节点之间存在唯一路径,大纲为每条路径定义了一个特殊的输入条件集合,用于测试用例。
随机测试法:不考虑任何用例和需求,完全站在用户的角度对产品进行测试
灰盒测试:关注输入输出的准确性,也关注内部的代码,但是没有白盒测试那么详细完整。

③静态测试
概念:在不运行程序的情况下寻找代码中可能存在的错误,或者评估程序代码

④动态测试:
实际运行被测程序,输入相应的测试用例,检查运行结果与预期结果的差异,从而验证程序的正确性、有效性和可靠性,并且分析系统运行的效率和健壮性。

⑤α测试:
一个用户在开发环境下的受控测试,模拟实际操作环境

⑥β测试:
多个用户在实际使用环境下进行的测试,如一些软件的公测

⑦冒烟测试
在大规模测试之前,先对软件的基本、核心、主要功能进行测试,节省资源

⑧回归测试
开发修正完代码后再回过头来做测试

⑨随机测试
跳出思维的限制,没有思想、没有步骤地随机进行测试

⑩探索测试
有思想,有步骤地测试一些复杂的、不常用地功能

4.软件测试阶段分类

1.单元测试
针对软件设计最小单位——程序模块进行正确性检测。
检查程序模块的功能、性能、接口等。
多个模块可以平行独立地进行单元测试。需要从程序的内部结构出发设计测试用例。需要读程序和代码,大多数时候可以由开发人员自己完成。
(独立测试小积木块儿)

2.集成测试
在单元测试基础上,将所有程序模块组装起来,进行有序、递增的测试。(把多个程序模块拼接起来测试)
比较多涉及到接口测试
(把小积木块儿逐个拼在一起测试)

3.系统测试
系统的真实运行环境下,检查完整的程序系统是否可以和硬件、外设、网络和系统软件、支持平台等正确配置、连接
全方位的,需要考虑与硬件系统、系统软件、其他软件的联系。
(把这个整体拼好的积木放在真实环境下测试)

4.验收测试
是测试的最后一个环节,一般由供求双方共同达成的,模拟用户实际运行的环境,对功能模块全面测试。
有两种测试主体:
α测试:开发人员在开发环境下的测试
β测试:用户在实际运行的环境下进行测试

5.软件测试的基本流程

1.测试需求阶段:阅读软件需求规格说明书,理解需求,分析需求点
2.测试计划阶段:参考软件需求说明书来编写测试计划,内容需包括测试范围、进度安排、人力物力分配、整体测试策略
3.测试设计阶段:编写测试用例,评审测试用例
4.测试执行阶段:搭建环境,执行预测试(即冒烟测试),然后进入正式测试,提交bug,追踪bug,直到软件达到测试需求要求
5.测试评估阶段:给出测试报告,确认产品是否可以上线。

6.web测试和app测试的区别

(1)web(B/S结构,基于浏览器)测试中只要更新了服务器,客户端也会同步更新,保证每个客户的客户端(或者说浏览器)一样;app(C/S架构)必须得客户端主动更新,所以app测试中修改了服务器,客户端的所有核心版本都需要进行回归测试
(2)性能方面:web主要看响应速度,app还要看电量、流量、cpu、内存等,它们服务端的性能没区别,都是一台服务器。
(3)兼容方面:web基于浏览器,主要看电脑硬件和电脑系统;app依赖于手机或平板等移动端,关注的内容主要是分辨率,屏幕尺寸,设备系统IOS/Android。
(4)app要多一些专项测试:中断测试、界面操作、安装、卸载、更新等

7.如何理解测试和测试开发?

测试就是在规定条件下检测产品功能或者程序上的错误,对其是否满足设计要求进行评估。
测试开发需要开发一些自动化测试的平台或者二次开发一些现有的开源工具,最终目的是提升测试效率,但是核心职能仍然是测试。

8.性能测试

概念:性能测试在软件的质量保证过程中起着举足轻重的作用。特别是对于一些并发量大的大型网站来说,做好性能测试,找到性能瓶颈,并根据性能测试结果做出针对性的优化至关重要。

中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试

8.1 性能测试的分类

1. 负载测试
系统在不同负载下的性能表现,通过负载测试能够测试出系统在各种负载下的性能变化曲线,发现系统的性能拐点,从而找出系统的最佳性能。举例:用户并发测试(递增并发用户数,查看系统性能指标变化)

2. 压力测试
系统在高强度负载下的性能表现,通过压力测试可以测试出系统能够承受的最大负载。压测是一种寻求系统介于正常和不正常之间临界值的一种负载测试。压测不仅关注高负载下系统是否正常运行,同时关注负载减小后,系统是否能够恢复。

  1. 基准测试
    基准测试(benchmarking)是一种测量和评估软件性能指标的活动。在特定时期(系统稳定时)通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。基准测试可以比较系统在版本迭代过程中,各个性能指标的变化,为系统的版本迭代优化提供参考。

  2. 配单测试
    也叫配置项测试,对被测系统的软硬件参数进行配置的测试。通过配单测试可以找出系统各项资源指标的最佳分配比。

  3. 容量测试
    通过容量测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限状态下没有出现任何软件故障或还能保持主要功能正常运行。软硬件固定的情况下,对系统进行一定规模的数据量操作,观察系统各项性能指标是否正常。举例:电子商务网站所能承受的、同时进行交易或结算的在线用户数。

  4. 稳定性测试
    通过对软件稳定性的测试可以观察在一个运行周期内、一定的压力条件下,软件的出错机率、性能劣化趋势等。进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证。在特定的负载下(正常或略高于正常的负载),在一段运行周期内,对被测系统进行一系列的正常操作,观察各个系统性能指标变化以及系统是否能够长期稳定运行。

  5. 扩展性测试
    基础设施不需要经常变更,应用之间较少依赖或耦合,可以对需求变更快速响应。架构设计会考虑到未来功能的可扩展性,所以当系统增加新功能时,不需要对现有系统的结构和代码进行修改。系统集群的扩展性测试,观察系统在集群服务器增加时,整体性能是否稳步提升,集群中的每台服务器性能是否有额外损耗等。

  6. 负载测试VS压力测试
    相同点:两种测试都是针对系统承受能力的测试,都是一种量的测试;
    不同点:负载测试是观察系统在不同负载下的测试,旨在找出系统的性能拐点或最佳性能;压力测试是观察系统在高负载下的运行情况,旨在找出系统所能承受的最大负载以及系统在高压下再减压后系统恢复正常的能力

8.2性能测试的指标与工具

  • 性能测试最基本要考虑以下几点:

1、响应时间
针对页面操作,用户感官满意响应时间<2s,可以接受响应时间2~5s,如果响应时间>5s用户将无法接受。
针对内部调用的接口响应时间需要更快,具体与接口种类相关。

2、资源利用率,包括:cpu、内存、网络、硬盘、虚拟内存(如Java虚拟机)

3、服务器可靠性,指服务器能在相对高负载情况下持续的运行

4、可配置优化性,指服务器配置优化、业务逻辑优化、代码优化等

  • 性能测试的瓶颈总结:

1、硬件上的性能瓶颈:
一般指的是CPU、内存、磁盘读写等的瓶颈,为服务器硬件瓶颈。

2、应用软件上的性能瓶颈:
一般指的是服务器操作系统瓶颈(参数配置)、数据库瓶颈(参数配置)、web服务器瓶颈(参数配置)、中间件瓶颈(参数配置)等

3、应用程序上的性能瓶颈:
一般指的是开发人员,开发出来的应用程序(如sql语句、数据库设计、业务逻辑、算法等)。

4、操作系统上的性能瓶颈:
一般指的是Windows、linux等操作系统,如出现物理内存不足时,或虚拟内存设置不合理(虚拟内存设置不合理,会导致虚拟内存的交换率大大降低,从而导致行为的响应时间大大增加,可以认为在操作系统上出现了性能瓶颈)。

5、网络设备上的性能瓶颈:
一般指的是防火墙、动态负载均衡器、交换机等设备。

  • 性能测试的工具
    LR、JMeter、Locust等主流测试工具

9.自动化测试的工具

  1. Selenium
    WEB自动化测试.
    Selenium2.0:核心是WebDriver,Selenium+WebDriver

WebDriver的原理:

(1)启动web浏览器,后台会同时启动基于Webdriver Wire协议的Web服务器作为selenium的远程服务器,并将其与浏览器绑定。绑定完成之后,服务器就开始监听客户端的操作请求。

(2)执行测试时,测试用例会作为客户端,将需要执行的页面操作请求以HTTP请求的方式发送给远程服务器。该HTTP请求的正文以Webdriver Wire协议规定的JSON格式来描述需要浏览器执行的具体操作。

(3)远程服务器接收到请求后,会对请求进行解析,并将解析结果发送给Webdriver,由Webdriver实际执行浏览器的操作。

(4)Webdriver可以看作是直接操作浏览器的原生组件,所以搭建测试环境时,通常需要先下载浏览器对应的WebDriver。
原文链接:https://blog.csdn.net/tangya3158613488/article/details/106902110
2. Appium
APP自动化测试
3. Jmeter
接口测试,性能测试
4. Postman 接口测试
Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求(如:get/post/delete/put…等等),将请求数据发送至服务端,获取对应的响应结果,
从而验证响应中的结果数据是否和预期值相匹配;并确保开发人员能够及时处理接口中的bug,进而保证产品上线之后的稳定性和安全性。Postman与浏览器的区别在于有的浏览器不能输出Json格式,而Postman更直观接口返回的结果。
参考链接: https://www.cnblogs.com/laoluoits/p/12784933.html.
5. SoapUI
接口测试
6. Monkey
稳定性测试
7. Robot Framework
WebUI自动化测试,接口测试
8. QTP
Web自动化测试
9. LoadRunner
性能测试
10. Jenkins.
持续集成

10.自动化测试框架

在这里插入图片描述
自动化测试框架总结

11.接口测试

什么是接口测试?怎样做接口测试?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值