什么是软件
软件是计算机程序,程序所用的数据以及有关文档资料的集合。
软件是计算机的灵魂,软件又可分为两大类:系统软件和应用软件。
系统软件:系统软件是生成,准备和执行其他程序所需要的一组文件和程序。如操作系统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
软件测试
定义
使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
目的
1.发现程序(软件)存在的代码或业务逻辑错误
2.检验产品是否符合用户需求
3.提高用户的体验
分类
按测试技术分
黑盒测试,白盒测试,灰盒测试
黑盒测试:软件理解为黑色盒子–看不见里面的具体实现=输入数据…输出结果=大部分测试=淘宝登录
白盒测试:透明的白色盒子–代码实现非常清楚,看懂代码运行开发自测=单元测试
灰盒测试:不需要代码,大概里面逻辑实现===接口测试
被测试对象是否运行分
动态测试,静态测试(文档检查,代码走查)
按不同的测试手段分
手工测试(点工),自动化测试(工具+代码)–高级
按测试包含的内容分
功能测试,界面测试,安全测试,兼容性测试,易用性测试,性能测试
功能测试:测试需实现功能正常===最常覆盖,最基本测试(通常采用黑盒测试,一般由测试人员独立完成)
界面测试:UI测试–user interface === 产品需求文档 – 原型图-标准; UI设计师 — UI 切图 === 成熟产品实现,用户角度主观审美
兼容性:软件跟第三方软件,依赖软件,系统版本
易用性测试:提供用户体验 — 软件重要因素 — 建议性bug
安全测试:登录 – 用户权限检查;用户隐私信息的泄漏;http/https(测试系统防止非法入侵的能力)
性能测试:用户并发(几千万用户) – 服务器压力; === 工具(Jmeter性能)
(通过自动化的测试工具模拟多种正常,峰值以及异常负载条件来对系统的各项性能指标进行测试)
按测试阶段分 --阶段–流程
单元测试,集成测试,系统测试,验收测试,α测试,β测试
α测试:由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试;测试不能由程序员或测试员完成。
β测试:软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
其他测试
回归测试,冒烟测试,探索性测试/自由测试(测试思维)
回归测试: – regression test: 开发修复了bug之后,测试除了验证bug本身的功能之外,对没有被修改的功能模块进行测试,确保这些功能没有被这个bug影响(测试策略—正式上线前,全回归)–自动化测试重复繁琐
(指错误被修正后或软件功能,环境发生变化后进行的重新测试,确认修改部分不会对其它功能造成影响)
冒烟测试: – smoking test: --开发提交测试版本,先验证核心业务功能是否可以用;不通过,打回开发重新做版本;通过,进行细化后续测试;–提高测试效率
(冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作)
探索性测试/自由测试:没有依据,测试用例方法 — 依据多年测试经验,测试思维
(测试思维技术。没有很多实际的测试方法,技术和工具。)
灰度测试:系统测试通过后,将测试版本发布到线上环境,替换部分的线上服务器进行预测试。当灰度测试结束后,线上版本实现会统一。本质上是上线前的测试,收集用户的反馈
A/B测试:指的是系统测试通过并发布后,同一个软件功能不同的用户会看到不同的实现方式,收集每个用户的反馈。本质上是上线后的测试,收集用户反馈。