什么是软件
软件是计算机程序,程序所用的数据以及有关文档资料的集合。
软件是计算机的灵魂,软件又可分为两大类:系统软件和应用软件。
系统软件:系统软件是生成,准备和执行其他程序所需要的一组文件和程序。如操作系统Windows,数据库SQL-Server,驱动程序(网卡,声卡),Java语言系统编译环境等。
应用软件:计算机用户为了解决某些具体问题而购买,开发或研制的各种程序或软件包。如APP,QQ,微信等。
黑盒测试:数据为驱动的测试
应用架构
C/S与B/S架构
C/S:client-server:安装一个客户端才能使用的软件
优点:系统兼容性,不需要考虑浏览器兼容性
缺点:每次更新都要更新服务端和客户端(有些还要重启导致业务中断)
B/S:browser-server:只需要一个浏览器就可以访问服务的,就是B/S。
优点:只需要更新服务器就OK,不需要去更新浏览器。用户主动性比较高。比如淘宝,天猫。
APP:移动端C/S====M/S mobile-server
软件测试
定义
使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
目的
①为了发现程序(软件)存在的代码或业务逻辑错误 --功能问题–有bug–熟悉产品需求
②为了检验产品是否符合用户需求 --用户需求
③为了提高用户的体验 --流畅度、性能范畴
分类
按测试技术分
黑盒测试,白盒测试,灰盒测试
黑盒测试:软件理解为黑色盒子–看不见里面的具体实现=输入数据…输出结果=大部分测试=淘宝登录
白盒测试:透明的白色盒子–代码实现非常清楚,看懂代码运行开发自测=单元测试
灰盒测试:不需要代码,大概里面逻辑实现===接口测试
黑盒测试:产品–黑色盒子(看不到代码实现)–关注输入输出–点点点
白盒测试 :产品–透明盒子(能看到代码逻辑)–会看代码–非测试做,开发自测–代码审查
灰盒测试:(介于黑白之间)大概知道代码逻辑,但不需要看懂所有代码 ----接口测试
被测试对象是否运行分
动态测试,静态测试(文档检查,代码走查)
按不同的测试手段分
手工测试(点工),自动化测试(工具+代码)–高级
按测试包含的内容分
功能测试,界面测试,安全测试,兼容性测试,易用性测试,性能测试
功能测试:测试需实现功能正常===最常覆盖,最基本测试(通常采用黑盒测试,一般由测试人员独立完成)
界面测试:UI测试–user interface === 产品需求文档 – 原型图-标准; UI设计师 — UI 切图 === 成熟产品实现,用户角度主观审美
兼容性:软件跟第三方软件,依赖软件,系统版本
易用性测试:提供用户体验 — 软件重要因素 — 建议性bug
安全测试:登录 – 用户权限检查;用户隐私信息的泄漏;http/https(测试系统防止非法入侵的能力)
性能测试:用户并发(几千万用户) – 服务器压力; === 工具(Jmeter性能)
(通过自动化的测试工具模拟多种正常,峰值以及异常负载条件来对系统的各项性能指标进行测试)
功能: 测试业务逻辑(手工 自动化)–核心重要
界面: 外观美观 设计合理 友好–主观性强–需求文档(原型图 UI切图)←产品收集需求规格说明书
安全: 高级类型–防止攻击(工具:appscan扫描/代码:脚本-sql注入)–漏洞 薄弱–账号密码/HTTP协议→https协议 --人才较少
性能: 高级类型–eg:双11同一时间访问人多,流量大–并发–资源/cpu/内存各项指标ok–高压下服务器/软件能正常处理–(包括压力测试、负载测试、稳定性测试)
兼容性: 软件+硬件(Windows/Linux/MacOS/Android/ios)
软件+软件(浏览器兼容)–调用:软件不同版本之间–app升级(老功能、数据)
易用性: 主观–人性化 舒适 使用习惯 用户体验–提bug—站在用户角度考虑,参考成熟产品
按测试阶段分 --阶段–流程
单元测试,集成测试,系统测试,验收测试,α测试,β测试
α测试:由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试;测试不能由程序员或测试员完成。
β测试:软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
其他测试
回归测试,冒烟测试,探索性测试/自由测试(测试思维)
回归测试: – regression test: 开发修复了bug之后,测试除了验证bug本身的功能之外,对没有被修改的功能模块进行测试,确保这些功能没有被这个bug影响(测试策略—正式上线前,全回归)–自动化测试重复繁琐
(指错误被修正后或软件功能,环境发生变化后进行的重新测试,确认修改部分不会对其它功能造成影响)
冒烟测试: – smoking test: --开发提交测试版本,先验证核心业务功能是否可以用;不通过,打回开发重新做版本;通过,进行细化后续测试;–提高测试效率
(冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作)
探索性测试/自由测试:没有依据,测试用例方法 — 依据多年测试经验,测试思维
(测试思维技术。没有很多实际的测试方法,技术和工具。)
灰度测试:系统测试通过后,将测试版本发布到线上环境,替换部分的线上服务器进行预测试。当灰度测试结束后,线上版本实现会统一。本质上是上线前的测试,收集用户的反馈
A/B测试:指的是系统测试通过并发布后,同一个软件功能不同的用户会看到不同的实现方式,收集每个用户的反馈。本质上是上线后的测试,收集用户反馈。
软件测试的分类说明
名称 | 说明 |
---|---|
白盒测试 | 基于软件内部设计和程序实现的测试方法(代码层面)。不仅仅关注输入与输出的结果是否正确,同时还关注程序是如何处理的 |
黑盒测试 | 字面:把所有的功能和逻辑接口放在一个盒子里,你看不到里面的逻辑和走向,只能通过盒子外表进行测试定义:指在测试过程中只关注输入和输出,如果输入一个测试数据,输出结果是正确的,则认为这个功能是正确的,也叫数据驱动测试 |
功能测试 | 软件测试的功能是否复合需求,通常采用黑盒测试方法,一般由测试人员独立执行。 |
界面测试 | 简称UI测试,测试用户界面布局是否合理,整体风格是否一致,界面文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等 |
安全性测试 | 测试该系统防止非法入侵的能力 |
兼容性测试 | 测试该系统与其他软件硬件兼容的能力(app与cs架构软件、bs架构软件) |
易用性测试 | 软件测试是否易用,主观性比较强,一般要根据很多用户的测试反馈信息,才能评价易用性(同类型产品) 用户使用习惯 好不好用 |
性能测试 | 通过自动化测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试 |
负载测试 | 通过改变系统负载方式、增加负债等来发现系统组所存在的性能问题。更多地体现了一种方法或一种技术。为了发现软件系统中所存在的问题,包括性能瓶颈、内存泄漏等 |
压力测试(强度测试) | 分为:高负债下的长时间(如24小时以上)的稳定性压力测试和极限负债情况下导致系统崩溃的破坏性压力测试。主要为了确定系统稳定性。可以更快发现内存泄漏问题,更快发现影响系统稳定性的问题 |
恢复测试 | 主要检查系统的容错能力。采用各种办法强迫系统是吧,后验证系统能否在指定时间间隔内尽快恢复并重新启动系统 |
回归测试 | 指错误被修正后或软件功能、环境发生变化后进行的重新测试,确认修改部分不会对其它功能造成影响 |
冒烟测试 | 冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。 |
探索性测试 | 是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方法。 |
Alpha测试 | 一种前期用户测试,公司内部组织员工及部分用户,模拟实际操作环节下进行验收测试(内测) —不能由测试和开发进行,仅测试数据,开发环境(内测删档) |
Beta测试 | 一种后期用户测试,此时系统已经通过内部测试,大部分错误已经改正,即将正式发行。在一个或多个真实环境下(-正式环境,数据生效-正式上线,面向用户)发布版本,进行测试(公测) |
Alpha测试与Beta测试的相同与不同
相同:①开发和测试不参与,必须由用户来(避嫌)
不同:①Alpha属于前期,Bate属于后期 ②Alpha在开发环境进行,Bate在正式环境运行