测试面经1203

2023-12-03 13:52
文章标签 面经 测试 1203

本文主要是介绍测试面经1203,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

测试面经1203

  • 4. 什么是黑盒测试
  • 5. 除了黑盒测试还有其他的测试吗?
  • 6. 灰盒测试是谁来进行的?
  • 7. 使用Excel表格设计测试用例,使用Excel表格有什么优势呢?
    • Xmind优势
    • Xmind劣势
  • 12. 测试需求怎么分析?
  • 13. 黑盒测试都有哪些方法?
  • 14. 边界值分析一般是怎么做的?
  • 15. 什么叫错误推断法?
  • 16. TCP/IP协议有了解过吗?讲解以下TCP/IP协议的握手过程
  • 17. OSI七层模型都有哪七层
  • 18. 进程与线程有什么区别?
  • 19. 并发和并行有什么区别?
  • 20. python如何创建一个进程?
  • 21. pytest一般用来做什么?
  • 22. 平时你会写一些自动化测试用例吗?
  • 23. 什么叫测试覆盖率?
  • 24. 什么叫单元测试?
  • 25. 单元测试有哪些人员进行编写和维护的?
  • 26. 有没有做过接口的测试?
  • 27. 对网络API接口进行测试,工作的思路是什么
  • 29. 计算机网络技术三级的证书为什么要考这个?
  • 33. 讲一下二分查找的算法思想
  • 34. 用python写冒泡排序

4. 什么是黑盒测试

  • 黑盒测试就是只关注外部的输入输出,而不关注内部代码逻辑的实现,主要是从用户的角度出发,很容易的知道用户会用到哪些功能,会遇到哪些问题;基于软件开发文档,所以也知道软件实现了哪些功能。

5. 除了黑盒测试还有其他的测试吗?

  • 根据测试技术原理、代码可见度来划分还有白盒测试,和灰盒测试

    • 白盒测试:需要关注内部代码逻辑的具体实现,不需要关注外部输入输出。
    • 灰盒测试:需要关注外部输入输出也需要关注内部代码逻辑的具体实现,针对接口(集成测试)
  • 根据测试的阶段划分,有单元测试、集成测试、系统测试、验收测试。

    • 单元测试:对函数/模块进行的测试。主要是测试代码的,采用白盒测试的方法,一般是开发人员进行测试

    • 集成测试:单元测试完成之后,开发将测好的单元模块组合在一起,将多个模块/函数组装到一起的测试。对代码进行测试,一般也是开发人员进行的,采用白盒测试的方法。

      集成测试后期,各模块之间的依赖性越来越强,离系统目标越来越近,软件核心模块基本组装完毕,软件的核心功能点展现出来,一般也由开发人员进行测试,采用黑盒测试方法

    • 系统测试:对这个软件系统做全面的测试,主要从6个方面展开,界面外观、功能、性能、兼容性、安全性、易用性。采用黑盒测试方法,由测试人员进行。

    • 验收测试:主要是用户进行的测试,测试的内容和系统测试的内容相似,主要测试软件系统是否满足需求文档中的内容,是否满足用户需求。主要有alpha(内测)和bate(公测)测试,他们两个的测试场所不一样,以及alpha测试在发布上线之前,bate测试在发布上线之后

      alpha测试是把用户请到开发方对软件进行测试,测试环境受开发方的控制,测试人数不多,测试时间比较集中。测试执行者:测试人员、用户、公司内部人员

      bate测试,测试环境就不受开发方控制,测试人员较多,测试时间不集中。

6. 灰盒测试是谁来进行的?

  • 灰盒测试可以是开发也可以是测试来进行的。测试人员会了解部分程序内部结构代码,但并不需要向白盒测试那么深入。旨在提供一种更加系统,更深层次的测试。更加关注于两个功能之间的交互

7. 使用Excel表格设计测试用例,使用Excel表格有什么优势呢?

  • 测试用例主要包括用例编号,用例标题,测试项目模块,优先级,前置条件,测试步骤,测试数据,预期结果、实际结果
  • 使用Excel表格编写,能够更加清晰的呈现测试步骤和测试数据和预期结果、实际结果。可详细描述每个测试用例的情况,对之后用例的执行,对测试过程的追溯会更加方便。
  • 表格方便进行数据统计和分析。
  1. Excel表格和Xmind工具对比来说两者的优缺点?

    Xmind优势

    1. Xmind主要是以思维导图的形式,更加适合于复杂的测试用例场景,通过节点和分支,更加的结构化,更够更好的梳理测试思路,呈现各个功能点之间的关联,更加的清晰,对测试覆盖度也优于excel表格。
    2. 在敏捷过程、测试时间紧张或马上要进行测试没有时间写用例的情况下,可以先使用 xmind 理出测试点
    3. 评审时采用 xmind 评审测试点效率更高、更清晰。

    Xmind劣势

    1. xmind主要就是帮助组织和梳理和展示思维,并不是专门用于管理测试用例的。

    2. xmind缺乏高级测试管理功能,如测试的覆盖,缺陷管理和报告生成。

    3. 测试用例数量增加的时候难以维护。

    4. 不支持多人协作编辑(除非在先形式),这回限制团队协作沟通能力

    当测试用例比较简单的时候,可以选择表格,测试用例复杂的时候选择思维导图

  2. 什么场景下会更适合使用Xmind?

    • xmind适合于测试用例比较复杂的场景,更好的展现用例之间的关系和依赖,也比较容易发现用例之间的遗漏和重复。
    • 适合在敏捷开发过程、和测试时间紧张马上要进行测试没有时间写用例的情况下,可以先使用Xmind梳理出测试点
  3. 测试的结果如何管理呢?

    • 可以用测试用例管理工具(如,ZenTao、JIRA、PingCode等),方便的创建执行和跟踪测试用例。
      • ZenTao:https://www.zentao.net/
        JIRA:https://www.atlassian.com/zh/software/jira
        PingCode:https://pingcode.com/
    • 版本控制系统(Git),可以对测试用例版本进行控制,跟踪用例的变更历史。
      • Git:https://git-scm.com
    • 编写测试脚本,自动化执行(pytest、TestNG)测试用例,提高测试效率和准确性
      • pytest:https://pytest.org/
      • TestNG:https://testng.org
    • 使用测试管理平台,例如JIRA、Trello等,可以方便地跟踪测试进度、缺陷管理和协作。
      JIRA:https://www.atlassian.com/zh/software/jira
      Trello:https://trello.com
  4. 大致讲一下测试流程

    一个测试的流程包括需求分析、测试计划、编写测试用例、执行测试用例、质量评估

    1. 需求分析:拿到产品给的需求规格说明书,进行阅读,列出需求点,参加需求评审
    2. 测试计划:测试组长编写测试计划,我们编写自己负责模块的测试计划
    3. 编写测试用例:根据需求文档编写测试用例,编写完用例之后进行用例评审
    4. 执行测试用例:开发做好系统软件之后,搭建测试环境,进行冒烟测试,冒烟测试通过之后,进行测试工作,对所出现的bug进行记录编写,将bug提交给开发,开发修复好之后进行回归测试,直到发布上线之前。
    5. 质量评估:测试完成之后,对测试结果进行分析输出测试报告。

12. 测试需求怎么分析?

1. 查阅需求规格说明书(原型图),初步熟悉被测软件的核心业务流程,大概知道我要测哪些内容,测试量有多少,进而区安排时间进度,再针对某个功能点进行细化、列出测试点
2. 参加需求评审,主要参与人员有测试、开发、产品,目的是明确每一个需求点的意思,对需求细节化,是否有存在漏测、错测的测试点。因为测试、开发对需求文档的理解可能会存在偏差,或者遗漏了某些需求点,最终目的就是保证产品质量符合需求文档的要求。

13. 黑盒测试都有哪些方法?

等价类划分、边界值分析法、因果图判定表法、错误推断法

14. 边界值分析一般是怎么做的?

  • 边界值分析一般用于单个输入框、输入条件是一个范围,或者输入数据是一个有序集合,常常作为等价类划分法的一个补充。

  • 对等价类的边缘值进行预测,包括上点、离点、内点,分别为边界上的点,离边界最近的两个点,和边界内的点。(优化:开区间选内部离点、闭区间选外部离点)

15. 什么叫错误推断法?

  1. 基于经验、直觉、发散自己思维站在用户的角度推测容易出现错误的情况。比如说在处理数据的时候,空格、空、超长字符串、全角半角输入法、零、单引号等情况比较容易出错

16. TCP/IP协议有了解过吗?讲解以下TCP/IP协议的握手过程

  • 客户端和服务器进行连接时采用三次握手:

    客户端给服务器发送一个标有SYN的数据包,申请连接

    服务器收到客户端的请求之后,回复客户端一个SYN+ACK的数据包,同意连接

    最后客户端发送一个标有ACK的数据包给服务器端

  • 客户端和服务器断开连接的时候采用四次挥手

    第一次挥手,客户端给服务器发送一个FIN,请求断开连接,并进入一个待关闭状态

    第二次挥手,服务器收到之后,发送一个ACK给客户端,对关闭连接进行确认。

    第三次挥手,服务器端主动发送关闭连接请求给客户端,发送一个FIN+ACK

    第四次挥手,客户端收到服务器端连接释放报文段之后,发送确认关闭连接报文段ACK,此时客户端进入一个等待时间(TIME-WAIT)状态。TCP未释放连接,需要等待2MLS(最大报文生成时间)后,客户端才进入关闭(CLOSED)状态。服务器端收到客户端发出的确认报文段关闭连接之后关闭连接。如果没有收到,服务器端会重新连接释放报文段。

    (在第二次挥手后,此时如果服务器还有未发送完的数据可以继续发送,客户端也可以进行继续接收,直到数据发送完毕)

17. OSI七层模型都有哪七层

1. 应用层:各种应用软件,包括Web应用表示层:数据格式的标识,基本压缩加密功能会话层:控制应用程序之间的会话能力;如不同软件数据分发给不同软件传输层: 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;包含的主要协议:TCP(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol、用户数据报协议); 重要设备:网关。2. 网络层:定义IP编址,定义路由基本功能,如不同设备的数据转发。主要就是路径选择、路由及逻辑寻址。此外,网络层还可以实现拥塞控制、网际互连等功能;基本数据单位为IP数据报; 包括的主要协议:IP协议(Internet Protocol,因特网互联协议);ICM协议(Internet Control Message Protocol,因特网控制报文协议);ARP协议(Address Resolution Protocol,地址解析协议);RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)3. 数据链路层:数据的通道,定义数据的基本格式,如和传输,如何标识,如网卡MAC地址。为网络层提供可靠的数据传输,基本数据单位为帧;主要的协议为以太网协议。两个重要设备名称:网桥和交换机物理层:底层数据传输,一个传输数据的可靠的物理媒体。如网线,网卡标准TCP工作在哪一层?传输层IP工作在哪一层?网络层HTTP工作在哪一层?应用层

18. 进程与线程有什么区别?

1. 进程:进程是**对运行时程序的封装**,**资源分配和调度**的基本单位,实现了操作系统的**并发**。运行中的一个程序就是一个进程2. 线程:线程是**进程的子任务**,是**CPU调度和分配**的基本单位,被称为轻量级进程3. 区别:1. 每一个进程之间互相不会干扰,在执行过程中有独立的内存空间,同一进程中的线程共享进程地址空间。(资源分配给进程,进程中的线程共享这些资源)2. 系统开销不同。在创建和撤销进程时,系统会给分配资源和回收资源(如内存空间和I/O设备)。**操作系统付出的开销将显著大于创建线程和撤销线程的开销。**在撤销进程时3. 一个线程只能属于一个进程,而一个进程中可以有多个线程,**线程依赖与进程存在**。一个进程中的线程垮掉会导致整个进程垮掉。4. 通信:由于同一个进程中的多个线程共享同一地址空间,使他们的同步和通信实现变得容易。进程之间通信IPC,线程间通信可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。在有的系统中,线程的切换、同步和通信都无须操作系统内核的干预5. 进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂。

19. 并发和并行有什么区别?

1. 并发:两个或多个事件在同一实体上,同一时间间隔发生,一台处理机上处理多个任务。因为所有的并发处理程序都有等待(阻塞),就绪,运行三个步骤,宏观上是一起发生的,微观上被序列处理的,交替进行的,资源不会在某一个程序上被阻塞(一般时通过时间片轮转),所以说宏观上几乎是多个同时到达的请求,同时被处理。如果是同一时刻达到的请求也会根据优先级的不同,先后进入队列排队等候执行。例如单核CPU同一时刻只能执行一个程序,各个程序之间是多路复用,并发进行的(CPU在多个程序之间切换)。就是有限的物理资源让多个用户共享提高效率。2. 并行:两个或者多个事件在不同的实体上,同一时刻发生。在多道程序下,并行,使多个程序同一时刻在不同的CPU上同时运行。例如多核CPU同一时刻就可以执行多个程序,多个程序并行执行。

20. python如何创建一个进程?

<a href="https://blog.csdn.net/qdPython/article/details/124459963?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B%EF%BC%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-124459963.142^v96^control&spm=1018.2226.3001.4187" target="_blank">python创建进程的多种方式</a>

21. pytest一般用来做什么?

22. 平时你会写一些自动化测试用例吗?

23. 什么叫测试覆盖率?

软件测试覆盖率是测试软件有效性技术的一个度量手段,用来度量测试完整性。软件测试工作中会有非常多的item,执行过的任务和总任务数的比值就是覆盖率。覆盖率=(至少被执行的item数)/item总数。通过测试覆盖率可以判断一轮测试是否足够 充分,通过覆盖率分析出测试的弱点在哪里,能够指导增加设计测试用例。对于黑盒测试一个是需求覆盖率一个是用例覆盖率决定测试覆盖率。需求覆盖率=(被验证到的需求数量)/(总需求数)用例覆盖率=(验证通过的用例数量)/(总用例数)一般情况下,每一次上线要求自动化加手动测试的用例覆盖,要高到80%以上,才能够教这一轮测试的完成<a href="https://blog.csdn.net/m0_59868866/article/details/128849504?ops_request_misc=&request_id=&biz_id=102&utm_term=%E4%BB%80%E4%B9%88%E5%8F%AB%E6%B5%8B%E8%AF%95%E8%A6%86%E7%9B%96%E7%8E%87%EF%BC%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-128849504.142^v96^control&spm=1018.2226.3001.4187" target="_blank">黑盒测试覆盖率</a><a href="https://blog.csdn.net/IT_LanTian/article/details/108813259?ops_request_misc=&request_id=&biz_id=102&utm_term=%E4%BB%80%E4%B9%88%E5%8F%AB%E6%B5%8B%E8%AF%95%E8%A6%86%E7%9B%96%E7%8E%87%EF%BC%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-108813259.142^v96^control&spm=1018.2226.3001.4187" target="_blank">测试覆盖率</a>

24. 什么叫单元测试?

单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小、很明确的功能是否正确。通常情况下,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。检查代码的行为他究竟做了什么,检查他的结果和我们的期望是否一致。因此,我们所要测试的是规模很小的、非常独立的功能片断。以及使代码变得更加完美<a href="https://blog.csdn.net/MXB_1220/article/details/126129869?ops_request_misc=&request_id=&biz_id=102&utm_term=%E4%BB%80%E4%B9%88%E6%98%AF%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-126129869.142^v96^control&spm=1018.2226.3001.4187" target="_blank">单元测试</a>

25. 单元测试有哪些人员进行编写和维护的?

开发进行编写和维护的

26. 有没有做过接口的测试?

所谓接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。<font face="黑体" color="##0066cc" size=4>接口测试所需要的基本知识:get和post请求方法、http状态码</font>

27. 对网络API接口进行测试,工作的思路是什么

<font face="黑体" color="##0066cc" size=4>1. 通用接口用例设计</font>- 通过性验证:保证这个接口功能是好使的,能够通过正常的通过性测试,按照接口文档上传参数,正常传入,是否可以返回正常的结果。
- 参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id  是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
- 接口安全:1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。4、密码安全规则,密码的复杂程度校验
- 异常验证:所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。<font face="黑体" color="##0066cc" size=4>2. 根据业务逻辑进行用例设计</font>- 根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例。和功能测试用例设计是一样的。列出测试点,编写对应的测试数据。
  1. 讲一下冰球发射器项目

29. 计算机网络技术三级的证书为什么要考这个?

作为一名软件测试人员需要对网络分类、局域网广域网、OSI七层网络模型、常见协议都要懂
  1. 对深信服有了解吗?

  2. 能实习多长时间?

  3. 自己的优势有哪些?

33. 讲一下二分查找的算法思想

二分查找(Binary Search)算法,也叫折半查找算法。利用数组的有序性,每次都通过跟区间的中间元素对比,每轮缩窄一半的查找区间(即排除一半元素),直到找到目标值或查找区间为空时返回。由于每轮可以排除一般的元素所以每次查找最多循环logN次,时间复杂度为O(logN)。数据量大的时候,二分查找O(logN)效率高于线性查找O(N)```python
def search(num, target):i, j = 0, len(nums)-1while i<=j:mid = i + (j-i) // 2if nums[mid] < target:i = mid +1 elif num[mid] > target:j = mid - 1elif num[mid]return midreturn -1
```

34. 用python写冒泡排序

```python
list1 = [1, 9, 3, 2, 1, 2, 9]for i in range(len(list1)-1): # 比较n-1轮for j in range(len(list1)-1)-i: # 剩余两两进行比较,当前数字依次对比替换if list1[j] < list1[j+1]: # 将比较大的数字排在前面list1[j+1], list1[j] = list1[j], list1[j+1]
# 大泡泡上浮 将大的数排在前面
```

这篇关于测试面经1203的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/449677

相关文章

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象