软件测试那些事儿(持续更新中)

1. 什么是正向测试用例和反向测试用例

  1. 正向测试用例(Positive Test Case)和反向测试用例(Negtive test Case)是对测试用例的一种分类。举例如下:一个登陆输入框只能输入邮箱号,那么
    正向用例可以为:[email protected]
    反向用例可以为:其它值(往往输入后期望抛出异常或者给出error提示)
    反向测试用例通常指,系统不支持的输入或状态,这类用例可以检查系统的容错能力和可靠性。

  2. 这么分类的意义:
    1)往往我们会把正向测试用例优先级设置为较高或者必测case,反向测试用例优先级较低;这对测试用例分类和回归测试提高效率有一定帮助。
    2)但是缺点也比较明显:
    a) 这个概念不是很通用的概念,很多时候容易引入混淆;很难判断一个测试用例是正向还是反向用例。
    b) 很多反向用例也很重要

2. 敏捷, CICD, DEVOPS是怎么回事?

推荐参考此文: https://blog.csdn.net/CrankZ/article/details/81545439

  1. 敏捷开发和传统开发的区别
    如下图,传统开发主要时间花费在前期用户需求调研,文档输出上。开发只要拿到需求文档就能照着写code,并且认为整个开发过程可以预估。如果发生大的需求调整是需求人员前期工作没有做好。也就是图中的现有轮子再有地盘再有车一步步执行。流程严谨且繁多。
    敏捷开发则接受现在的互联网世界高速发展,前期调研的需求再好可能开发出来以后客户也用不上了。拥抱变化, 快速迭代是敏捷开发的核心。举个例子:Instagram 最初是一个地理位置打卡 App,后来发现用户不怎么在乎地理位置,更喜欢上传照片,就改做照片上传软件,结果成了独角兽。
    在这里插入图片描述

  2. 说的好听,那敏捷开发靠什么实现快速迭代呢?
    【1】将大的项目拆分为小的子项目,子项目间尽量高内聚低耦合
    比如实现一个电商平台,可以将项目划分为“网页前端设计”,“用户账号管理”,“商品上架”,“订单管理”, “支付系统”等等多个子项目,划分到不同开发去执行,不同的QA团队去测试,提高整体效率,加快交付时间。
    【2】与客户实时沟通
    参考: http://www.woshipm.com/pmd/3544285.html
    【3】使用迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。
    开发者先快速发布一个有效但不完美的最简版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,添加新功能。通过频繁的发布,以及跟踪对前一次迭代的反馈,最终接近较完善的产品形态。
    【4】采用"增量开发"(incremental development)划分迭代。
    所谓"增量开发",指的是软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。
    参考: http://www.ruanyifeng.com/blog/2019/03/agile-development.html

  3. CICD和DevOPs的概念(CICD同样起到了促进敏捷开发的作用)
    在这里插入图片描述
    先举个例子:A公司是一家开发网络管理软件的公司, 每天世界各地不同分公司的程序员会提交code到github上,在北美时间和中国时间的早上会分别进行一次BUILD和代码集成,然后通过钩子函数自动调度单元测试(https://www.ruanyifeng.com/blog/2015/09/continuous-integration.html),测试通过后就可以打包交付(比如可能会生成exe安装文件),这时公司的CD做的比较成熟就可以通过jenkins等工具检测到新的安装包并创建虚拟机进行自动化部署。自动化部署结束后还可以自动调度QA团队的自动化集成测试(也就是功能测试)的执行。

持续集成(CI)是一种软件工程实践,团队成员以越来越高的频率集成他们的工作。通过长久的 CI 实践,团队至少每天甚至每小时进行集成,以此接近“连续”程度的集成。
从历史上看,集成一直是一项昂贵的工程活动。因此,为避免项目遭受重创,CI 强调了驱动构建和测试的自动化工具。 CI 实现之后,构建和集成工作就会减少,团队也可以尽快检测到集成错误。
持续交付(CD)用于打包和部署 CI 要构建和测试的项目。实践 CD 的团队可以构建,配置和打包软件,并编排其部署方式,以便可以随时以软件定义的方式(低成本,高度自动化)将其发布到生产环境中。
由于软件更改更频繁地投入生产,高功能化的 CI/CD 实践直接促进了敏捷开发。因此,客户有更多机会体验产品变化并提供反馈。
DevOps 文化
DevOps 专注于敏捷开发过程中文化和角色的局限性。 DevOps 的目的是解决组织中过度专业化和不同部门人员沟通不畅导致的一些痛点,例如对生产问题无法快速甚至有效响应。DevOps 组织通过对每个团队进行彼此技能的交叉培训来打破运维和开发之间的障碍。这种方法提高了每个人欣赏和参与彼此任务的能力,并促进了更高质量的协作和更频繁的交流。

猜你喜欢

转载自blog.csdn.net/TylerDu/article/details/107921554