1.什么是软件?
软件是计算机程序,程序、数据和有关文档的集合。
软件分为系统软件和应用软件,系统软件包括操作系统,数据库,驱动程序以及Java编译环境等;应用软件包括QQ,微信等,应用软件运行于系统软件之上。
2.软件测试的测试对象
软件的测试对象为软件,即程序,数据和相关文档
3.软件测试的目的
1)为了发现代码和业务逻辑的错误,即软件的功能能否正常使用。所谓业务逻辑就是一个软件正常运行时的功能流程,比如购物软件的业务逻辑就是:注册-登录-购物车-生成订单-支付-查询物流-查看订单
2)站在用户的角度考虑产品是否符合用户需求,不符合用户需求的就可以提bug
3)提高用户体验。这个作为软件测试的一种提升,比如大多数人都习惯页面的退出按钮在右上角,而所设计的退出按钮放在了左上角,不符合大多数人的习惯。
4.软件测试的分类
- 黑盒测试:将待测试的代码视为一个黑盒子,不关注里面的代码实现,只关注输入输出
- 白盒测试:关注代码的实现和功能逻辑实现,在单元测试中用的比较多
- 灰盒测试:介于白盒和黑盒之间,了解实现流程和逻辑,不需要知道具体代码,在接口测试中用的比较多
- 动态测试:程序在运行中进行测试
- 静态测试:程序不运行,比如检查文档时,查看页面布局和设计是否和UI设计图相符时
- 手工测试:由测试人员手动进行点点点的测试
- 自动化测试:使用工具代替手工测试,在回归测试中使用比较多。由于回归测试需要反复测试这个程序是否符合标准,每次都由人工测试就会很繁琐,这时就可以采用编码的方式进行自动化测试,提高效率。
- 功能测试:一般使用黑盒测试的方法,点点点测试,主要测试基本功能是否正常
- 界面测试(UI):测试产品外观,设计是否合理,方不方便使用。一般根据需求文档(1.产品部门设计的原型图2.UI设计师设计切图)。测试时需要站在用户角度和软件使用习惯,若不习惯使用可以提Bug.
- 安全测试:比如登录账号的安全,是否使用了https进行加密;业务流程是否存在漏洞;以及安全扫描工具,比如防火墙等;
- 兼容性测试:测试软件和软件之间是否兼容;软件和硬件之间是否兼容;以及不同的软件版本之间是否兼容。比如QQ出现了一个新版,在用户更新之后消息记录或者其他用户数据不见了,就是兼容性测试中需要提出的bug。
- 易用性测试:设计规划是否易用,是否符合使用习惯;页面跳转是否流畅,软件功能是否易于发现和使用。比如开发了某个购物软件,结果用户半天都找不到购物车在哪,那么这么软件的易用性就很差,尤其是争对中老年人群体的软件,更需要注意易用性测试
- 性能测试:一般在功能测试之后需要进行的压力测试、负载测试统称为性能测试;性能测试主要关注有大量的流量和长时间的运行下软件是否会出现崩溃,比如双十一晚上付尾款时经常挤不进去,流量太大使得软件崩溃。一般会借助工具进行测试。
- 单元测试(unit test):对程序的模块进行测试,比如函数,类,方法等,一般由开发自己做的测试,属于白盒测试。
- 集成测试(integration test):单元测试之后进行的测试;关注模块之间的交互传输是否正确,比如接口测试属于集成测试的一种,集成测试一般为灰盒测试。
- 系统测试(system test(ST)):对完整的系统进行功能验证,系统测试会进行几轮(一般2~3轮),最终会生成测试报告(测试报告需要写明bug数量,bug严重级别,软件是否达标,测试用例使用情况,人力投入情况,还存在的遗留问题和解决方法)
- 验收测试(UAT):若项目是客户驱动的则由甲方验收,否则由产品根据需求文档来做验收
- α测试:验收之后个别用户在开发环境或在公司模拟用户环境执行,此时开发和测试人员均在场,出现问题时可以快速调试解决
- β测试:在验收之后,由真实用户在真实环境下执行,没有开发测试人员在场,一般由合作用户测试,可能会在用户量多,流量复杂的情境下出现问题
- 回归测试(regression test):在系统测试之后,主要目的如下:1.验证进行一轮测试之后,bug的修复情况? 2.验证bug是否还存在? 3.测试其他没有修改的部分是否出现新Bug。自动化测试一般针对回归测试而设定。在时间不够时可以只进行主要功能的回归测试,但是这样可能会存在风险,测试报告一般需要写清楚风险(例如:因为时间关系,经过跟产品的沟通,只进行主要功能的回归,因为没有覆盖所有的测试用例,可能存在一些风险)
- 冒烟测试(smoking test):测试主要功能是否正确(例如:注册-登录-选商品-加购物车-提交订单-下单-查看订单(不在乎注册时的密码用户名是否符合注册标准,只关注大方向能否走通))
- 灰度测试:系统测试通过后,将测试版本发布到线上环境,替换部分线上服务器进行预测试,当灰度测试通过后,再将线上版本统一。
- A/B测试:系统测试通过并发布后,不同的用户可以看到不同的版本,收集每个用户的反馈,根据用户反馈选择最终发布的版本。灰度测试包含了A/B测试,A/B测试是灰度测试的一种
- 探索性测试:没有用例需求和文档,依靠经验积累,主要进行测试方式的开发。
|