1.什么是软件
软件就是 计算机程序 + 程序所用的数据 + 有关的文档资料 的集合
软件是计算机的灵魂. 软件又可以分为两大类: 系统软件 和 应用软件
系统软件
系统软件是生成,准备和执行其他程序所需要的一组文件和程序. 比如 操作系统Windows就是一个软件,数据库MySQL,Oracle等,以及驱动程序(声卡,网卡),Java等编程语言的环境(jvm,node.js).系统软件通常不直接面向普通用户,而是为应用软件的运行提供支撑。
应用软件
应用软件就是为了解决用户的某些具体问题而开发,研制的各种程序或者软件包,比如微信,QQ,Chrome浏览器等.应用软件必须运行在系统软件所提供的环境之上,才能发挥其作用
提问:应用软件测试的对象是什么呢? 程序+数据+文档
1.1 应用软件架构
C/S 和 B/S架构
C/S: client-server: 用户必须在本地计算机或设备上 安装专用的客户端程序,客户端通过网络与服务器进行通信
优点: 响应速度快, 交互性强 ,但是缺点也明显,每次更新往往C/S两端都需要更新
B/S: browser-server: 用户无需安装专门的客户端程序,只需要通过浏览器即可访问系统
优点: 只需要更新服务器即可,而无需更新浏览器才能使用最新版本的软件.比如天猫,淘宝,京东等
但是他们往往都实现了两种架构
提问: 移动端APP是什么架构的呢? MS mobile server
2.软件测试是什么?
软件测试的定义就是:
使用人工或自动的手段来运行或者检验某个系统的过程,其目的在于检验它是否满足规定的需求或者检测出预期结果与实际结果之间的差别.
通俗说就是: 开发人员发明了高级的防弹衣号称,万弹难透,但是测试人员可以通过使用手掌,拳头或者编写出类似手枪,火箭弹的程序来 检测一下防弹衣的质量是否满足使用的需要或者 防弹衣表现得性能和预期的差距
我们为什么要做软件测试,它的目的是什么?
- 软件测试为了发现程序(软件)存在的代码或业务逻辑错误 ---最基础的需求,第一优先级P1
- 软件测试为了检验产品是否符合用户徐晴 ---跟用户要求的效果一致,符合需求规格说明书 P1
- 软件测试为了提高用户的使用体验
软件测试不仅是发现错误的手段,更是保证软件质量、满足用户需求和提升用户体验的重要过程。
3.软件测试的分类
- 按测试技术划分
黑盒测试,白盒测试,灰盒测试(接口测试)
- 按被测试对象是否存在实际流动划分
动态测试,静态测试(文档检查,代码走查)
- 按不同的测试手段划分
手工测试,自动化测试
- 按测试包含的内容划分
功能测试(优先) , 界面测试 , 兼容性测试 , 易用性测试, 性能测试 , 安全测试
- 按测试阶段划分
单元测试 , 集成测试, 系统测试, 验收测试, alpha测试 , beta测试
- 其他测试
回归测试 , 冒烟测试 , 自由测试
| 名称 | 说明 |
|---|---|
| 黑盒测试 | 将系统视为一个“黑盒”,不关心内部逻辑,只关注输入和输出是否与预期一致。也称为数据驱动测试。 |
| 白盒测试 |
基于软件内部代码和逻辑结构的测试方法,关注程序内部处理过程,而不仅仅是输入输出结果。 |
| 名称 | 说明 |
|---|---|
| 功能测试 | 测试软件的功能是否符合需求,通常采用黑盒测试方法,由测试人员独立执行。 |
| 性能测试 | 通过自动化工具模拟多种负载条件(正常、峰值、异常),对系统的各项性能指标进行测试。 |
| 回归测试 | 在错误被修正、软件功能或环境发生变化后进行的重新测试,确认修改不影响其他功能。 |
| 冒烟测试 | 对每一个新编译的软件版本进行基本功能验证,确认可进行后续正式测试。 |
| 探索性测试 | 一种强调自由探索、学习与设计的测试思维方式,不依赖预设的测试用例。 |
| α测试 | 由用户在开发环境或模拟操作环境下进行的内部受控测试,通常不由开发或测试人员执行。 |
| β测试 | 由多个用户在实际使用环境中进行的测试,开发者通常不在现场,不由开发或测试人员执行。 |
| 灰度测试 | 系统测试通过后,将版本发布到线上部分服务器进行预测试,收集反馈后统一更新。 |
| A/B测试 | 上线后为不同用户提供不同功能实现,收集用户反馈以优化产品。 |
| 界面测试(UI测试) | 测试用户界面的布局、风格、文字、美观度等是否符合要求。 |
| 安全性测试 | 测试系统防止非法入侵和安全漏洞的能力。 |
| 兼容性测试 | 测试系统与其他软件、硬件、平台的兼容性(如App、浏览器等)。 |
| 易用性测试 | 测试软件是否易于使用,通常依赖用户反馈和同类产品比较来评估。 |
着重分析一下灰盒,性能,alpha,beta,回归,冒烟测试
alpha测试
在实际项目中,α 测试通常会以内部测试活动的形式进行。例如,一些公司会组织专门的 α 测试活动或竞赛,但明确不允许开发人员和测试人员参与,而是由其他业务部门或非技术人员参与测试。这样做的目的在于最大限度地模拟真实用户的使用行为,从而发现开发和测试人员在日常工作中容易忽视的问题。
如果开发人员或测试人员参与 α 测试,一方面由于对系统过于熟悉,容易按照“正确使用方式”操作,导致部分缺陷难以暴露;另一方面,在发现问题时,参与测试的人员可能会因为心理压力而不愿意充分反馈问题,从而影响测试效果。此外,开发和测试人员在现场指导他人使用软件,也可能干扰用户的首次使用体验,降低 α 测试对真实用户行为的模拟程度。
因此,通过引入非开发、非测试人员参与 α 测试,可以更真实地反映用户的第一使用体验,有助于在产品正式发布前发现潜在的功能缺陷和易用性问题。
beta测试
β 测试是在真实使用环境中进行的测试,其核心目的是通过真实用户的实际使用,发现内部测试阶段难以暴露的问题。在实际项目中,公司通常会将软件以试用版或测试版的形式发布给部分真实用户,而开发人员和测试人员一般不直接参与用户的测试过程,也不会在现场进行指导。
这样做的原因在于,真实用户在实际环境中的使用方式往往更加多样和不可预测,他们会在不同的网络环境、设备条件和使用习惯下操作软件,从而暴露出在 α 测试阶段未能发现的兼容性问题、性能问题以及易用性问题。同时,如果开发或测试人员过多干预用户的使用过程,容易影响用户的真实反馈,使测试结果失去参考价值。
通过 β 测试,开发团队可以收集大量来自真实用户的反馈信息,进一步优化产品功能和用户体验,为软件的正式发布提供重要依据。因此,β 测试在软件生命周期中起到了连接内部测试与正式上线之间的关键作用。
回归测试
在软件不断迭代的过程中,回归测试显得尤为重要。实际项目中,每当程序缺陷被修复、功能被修改或新增,甚至运行环境发生变化时,开发团队都会安排回归测试,对原有功能重新进行验证。这样做的原因在于,软件系统各个模块之间往往存在关联关系,一个看似局部的修改,可能会对其他功能产生意想不到的影响。如果缺少回归测试,容易出现“修复一个问题,却引入新的问题”的情况。通过回归测试,可以确认系统在变更后依然保持原有功能的正确性和稳定性,降低版本迭代带来的风险,因此回归测试是保证软件长期质量不可或缺的一环。
灰盒测试
灰盒测试介于黑盒测试和白盒测试之间,其特点是测试人员对系统内部结构有部分了解,但测试主要从外部接口和功能出发。在实际项目中,灰盒测试常用于接口测试或系统集成测试。举例来说,当一个公司开发了多个模块需要协同工作时,测试人员会根据接口文档和部分业务规则进行测试,既验证接口的输入输出是否正确,又检查数据在模块间传递和处理是否合理。这样做的原因在于,如果完全采用黑盒测试,可能无法发现接口逻辑或数据处理中的隐藏问题;而如果完全采用白盒测试,则需要深入源码,成本高且效率低。灰盒测试在保证测试效率的同时,可以较好地发现跨模块问题和接口异常,是软件系统稳定性和可靠性验证的重要手段。
性能测试
性能测试属于非功能测试范畴,主要关注软件在高并发、大数据量或长时间运行情况下的表现。在实际项目中,性能测试通常通过自动化工具模拟大量用户访问,或模拟不同负载条件(如正常、峰值或异常场景),观察系统的响应时间、吞吐量和稳定性。例如,一个电商平台在大型促销活动前会进行性能测试,以确保在高访问量情况下网页加载速度、订单处理和支付功能仍能正常运行。这样做的原因在于,即使软件功能正确,如果系统在高负载下崩溃或响应缓慢,也会直接影响用户体验和业务收益。通过性能测试,开发团队可以提前发现瓶颈并进行优化,从而保证系统在实际使用中的可靠性和稳定性。
三.软件测试面试笔试题
-
什么是软件测试?软件测试的目的是什么?
-
软件测试分类都有哪几种?
-
什么是黑盒测试、白盒测试?区别是什么?
1603

被折叠的 条评论
为什么被折叠?



