软件测试的定义&分类
什么是软件?
软件分为两大类:系统软件、应用软件
系统软件:是生成、准备和执行其他程序所需要的程序和文件。如操作系统Windows,数据库SQL-server,驱动程序、Java语言编译环境等。
应用软件:计算机用户为了解决某些具体问题而购买、开发的各种程序或软件包。比如微信、QQ等APP。
什么是软件测试?
软件测试是有特定的目的的,有方法的,并且需要提交缺陷以及跟踪解决。
软件测试的定义
为了发现程序中的错误而执行程序的过程。
理解:(1)为了发现程序存在的代码或业务逻辑错误
(2)为了检验产品是否符合用户需求
(3)为了提高用户的体验
软件测试的原则
1、测试应该尽早介入
2、所有的测试都应追溯到用户需求
3、程序员应该避免检查自己的程序(除单元测试),因为程序员对自己的程序的 思维有局限性,无法保证测试质量。
4、设计测试用例应考虑到各种合法的不合法的输入及各种边界条件,特殊情况下还要制造极端和意外状态。
5、二八原则(80%的bug很可能只起源于20%的模块中)
6、对错误的结果要进行一个确认的过程,不要一发现问题就立刻提bug,要去确认发生问题的过程和操作。
7、制定严格的测试计划。
8、完全测试是不可能的,测试需要终止。
9、妥善保存测试过程中的所有文档。
软件测试的分类
1、按测试阶段划分:单元、集成、系统、验收(Alpha、Beta、正式)
2、按测试技术划分:黑盒:看不到程序的逻辑与走向,在测试过程中只关注输入输出,也叫数据驱动测试
白盒:基于软件内部设计和程序实现的测试方法。不仅关注输入输出的结果,还关注程序是如何处理的。
灰盒:介于白盒和黑盒之间的一种测试,例如接口测试。
3、按被测试对象是否运行划分:静态、动态
4、按不同的测试手段划分:手动、自动
5、按测试包含的内容划分:
功能测试:测试软件功能是否符合需求。
界面测试:UI测试,测试系统用户界面是否合理,整体风格是否一致,界面文字是否正确,图片美观等等。
性能测试:为获取或验证系统性能指标而进行的测试,会在不同负载情况下进行。
安全性测试:测试该系统防止非法入侵的能力。
负载测试:通过改变系统负载方式、增加负载等来发现系统中存在的性能问题。体现一种方法和一种技术。
兼容性测试:测试该系统与其他软硬件兼容能力(app,c/s架构软件、b/s架构软件)。
压力测试(强度测试):主要为了确定系统稳定性
1、高负载下长时间 的稳定性压力测试;
2、极限负载情况下导致系统崩溃的破坏性压力测试。
恢复测试:检查系统的容错能力。
易用测试:软件测试是否易用,主观性较强。
6、其他测试:
冒烟测试:对象是每一个新编译的需要正式测试的软件版本,确认基本功能正常,可继续后续正式测试工作。
回归测试:指错误被修正后或软件功能、环境发生变化后进行的重新测试,确认修改部分不会对其他功能造成影响。
探索性测试
C/S架构与B/S架构
C/S架构:client—server,安装一个客户端才能用的软件。
B/S架构:browser—server,只有一个浏览器就可以访问服务的。
补充:
Alpha测试与Beta测试的区别?
Alpha测试是一种前期用户测试,是公司内部组织员工与部分用户模拟实际操作环境下进行的验收测试,也称内测。
Beta测试是一种后期测试,此时系统已通过内部测试大部分错误已修正即将正式发行,在一个或多个真实环境下发布版本,进行测试,也称公测。