大佬总结:入职阿里,软件测试常见基础题绝不能忘

 

什么是软件测试?

正向思维:验证程序是否正常运行,以及是否达到了用户预期的需求。

逆向思维:通过执行测试用例发现程序的错误和缺陷。

关键字:正常运行、用户需求、发现错误。

软件测试的目的是什么?

找出软件中潜在的错误和缺陷,通过修复错误和缺陷提高软件的质量,回避软件发布后因缺陷或错误带来的商业风险。

关键字:发现错误、提高质量、避免风险。

黑盒、白盒的区别

黑盒测试(数据驱动测试、功能测试):不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

白盒测试(逻辑驱动测试、结构测试):已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

什么是灰度测试?

概念:灰度发布的过程是一个渐进的过程,其实这才是一种正确、规范、安全的发布过程。

影响:灰度发布可以在原有的Alpha版本之后增加了更大范围的外部测试,是一个不断的放量过程,通过这样的发布过程可以使产品的问题暴露出来,而不会影响到全部的用户,最终可以让产品最大程度稳定适合用户。

负载测试、压力测试、性能测试、容量测试的区别

性能测试:获得系统在某种特定条件下的性能指标数据。

负载测试:通过加压,观察系统的响应时间、吞吐量等,直到系统的极限性能指标。

压力测试:通过增加负载,查看系统在峰值使用情况下的操作行为,容错、可恢复能力,发现隐患。

容量测试:系统承受大量数据,测试系统是否能够正常处理,通常和数据库有关。

什么是回归测试?

抽象说法:在程序有修改的情况下,保证原有功能正常。

具体说法:测试时发现bug -》开发修改 -》打了新包 -》重新测试,保证程序在修正了bug之后正常运行,且不会带来新的错误。

什么是冒烟测试?

新版本验证测试,主要确认新的版本是否存在致命性bug,新功能正常运行,不影响下一轮测试。

系统测试的16个测试策略

功能测试、安全测试、容量测试、性能测试、压力测试、稳定性测试、可用性测试、健壮性测试、GUI测试、安装测试、配置测试、异常测试、备份测试、文档测试、在线帮助测试、网络测试。

测试流程(各有千秋)

1、测试人员参与需求评审、交互评审、视觉评审;理解需求,进行需求分析。

2、测试负责人编写测试计划,分配测试任务,评估测试周期。

3、测试人员整理交互or需求疑难点,确认异常场景or特殊情况下的交互细节,最好是能划出新功能的数据流图&流程图。

4、测试人员编写测试点,转化测试用例,评审测试点or测试用例。

5、开发送测(提测)前,开发自行走查,产品视觉验收,若有必要,测试可介入冒烟测试。

6、送测(提测)阶段,缺陷管理,发现bug,提交bug。

7、博主这边是分A1,A2,A3...阶段,一般A1新功能测试用例&主流程回归,A2验证bug&交叉测试&拓展测试,A3验证bug&拓展测试。

8、预发(灰发)环境验证。

9、线上环境验证。

10、版本复盘。

黑盒测试相关

黑盒测试主要是为了发现以下几类错误:

1、是否有不正确或遗漏的功能?

2、在接口上,输入是否能正确的接受?能否输出正确的结果?

3、是否有数据结构错误或外部信息(例如数据文件)访问错误?

4、性能上是否能够满足要求?

5、是否有初始化或终止性错误?

黑盒测试优点

1、比较简单,不需要了解程序内部的代码及实现,因为与内部实现无关;

2、从用户角度出发,能很容易地知道用户会用到哪些功能,会遇到哪些问题;

3、基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;

4、在做软件自动化测试时较为方便。

黑盒测试缺点

1、不可能覆盖所有的代码,覆盖率较低;

2、部分路径不能测试到,不能测试程序中隐藏的错误;

3、自动化测试的复用性较低。

黑盒测试方法

等价类、边界值、因果图、判定表、状态迁移、正交实验、场景法、错误推断。

自动化测试相关

自动化测试的优点

1、回归测试更方便,由于回归测试的额动作和用例是完全设计好,测试结果也是可以预料的,将回归测试自动运行,可以提高测试效率,缩短回归测试时间;

2、运行更多更繁琐的测试;

3、可以执行一些手工测试困难的测试,可以通过自动化测试模拟同时有大量用户的测试;

4、测试具有一致性和可重复性,每次测试的结果和执行的内容的一致性可以得到保障,达到测试的可重复的效果;

5、测试的复用性,实现在不同的测试过程中使用相同的用例;

6、测试的执行可靠性,按脚本执行,后续定位复现有明确的路径可循;

7、资源利用率高,人力成本低;
 

8、基本的、逻辑性不强的操作,性能测试、压力测试、回归测试,自动化测试很大优势。

自动化测试的缺点

1、手工测试比自动测试发现的缺陷更多;

2、对测试的依赖性大;

3、只适合回归测试;

4、手工测试编写时间少于测试脚本编写时间;

5、手工测试可以靠人的想象力去测试, 而工具是死的;

6、自动化测试可能会制约软件开发,脚本维护会受到限制,从而制约软件的开发。

总结:自动化测试是对手工测试的一种补充,自动化测试不可能完全替代手工测试,因为很多数据的正确性、界面是否美观、业务逻辑的满足程度等都离不开测试人员的人工判断。

APP常见测试点

1、安装、卸载 apk上安装与卸载,在工具上可以安装卸载;

2、兼容性测试:系统版本、安卓版本、尺寸;

3、异常测试:断网、断电、服务器异常情况下,客户端是否正常处理;

4、在线升级测试:在线升级,升级后可以正常使用;

5、易用性测试:操作简单,符合用户使用习惯;

6、交互性测试:来电、来短信、低电量测试、拔充电线会不会影响app;

7、功能测试:检验功能是否符合需求,涉及到UI层、接口、数据、服务端、代码逻辑等;

8、稳定性测试:通过Monkey命令行工具,对正在开发的应用程序进行压测,向系统发送伪随机的用户事件流(按键输入、触屏输入、手势输入)进行压测;

9、安全测试:是否容易被外界破解,是否存在被恶意代码注入的风险;

10、性能测试:应用测试、ROM测试、客户端运行时设备的CPU、GPU、流量、耗电量,响应时间;

11、自动化测试:robotium、Appium;

12、外网场景测试:不同网络场景,wifi、3g、4g、电信、移动、联通、弱网场景,通过fiddler;

13、中断测试(电话接入、来短信、电量不足提示等外部事件)。

app测试和web测试的区别

冒烟测试和回归测试的区别

冒烟测试:新版本验证测试,主要确认新的版本是否存在致命性bug,功能可以正常运行,不会影响下一轮测试,不要求覆盖面有多广,但是要保证被测对象的主功能点得到测试,还要保证所有被修改过以及修改相关的功能都是可用的,若都通过则可以进行系统测试。

回归测试:是软件维护阶段对软件修改后进行的测试,指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

静态测试和动态测试的区别

静态测试:不运行被测程序本身,通过评审文档和阅读代码等方式测试软件。

动态测试:通过运行被测程序,检查运行结果与预期结果的差异,通常使用白盒和黑盒测试从不同的角度设计测试用例来查找代码中的错误。

关键字:

  • 不运行、文档、代码

  • 运行、结果差异、黑盒白盒

α、β、λ测试的区别

α测试:是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试,目的是评价软件产品的FURPS(即功能、可使用性、可靠性、性能和支持)。

β测试:是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成(文档、客户培训、产品支持、可支持性)。

λ测试:是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。

负载测试、压力测试和性能测试的区别

性能测试:为了获得系统在某种特定的条件下(包括特定的负载条件下)的性能指标数据。

负载测试:模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(逐渐增加模拟用户的数量)或其他加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存),以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。负载测试更多地体现 了一种方法或一种技术。

压力测试:在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。

什么是需求文档测试?

测试需求中是否存在逻辑矛盾以及需求在技术上是否可以实现。

关键字:测试需求、逻辑矛盾、技术实现。

什么是设计文档测试?

测试设计是否符合全部需求以及设计是否合理。

关键字:测试设计、符合需求、是否合理。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值