如何更优雅地切换测试、正式环境?

初学者是怎么做的?

小明一个刚入行安卓的小萌新,刚刚在测试小姐姐那里交过学费(挨过骂)了解到软件开发过程中是需要区分正式、测试环境的。但是他稍加思考就能想到测试、正式环境的区别仅仅是host不一样而已,其他的比如接口名、参数名、返回的json格式均一模一样。于是他马上找到了解决方案,平时都用测试环境的,到上线的时候再换回正式环境不就可以了?在一次开发中需要请求三个不同接口,说干就干,于是小明就写出了以下代码,准备在上线时全局搜索www.test.com改成www.release.com,提交以后开开心心下班撩妹去了。

//请求接口1
NetWorkUtil.request("http://www.test.com?action=a1")

//请求接口2
NetWorkUtil.request("http://www.test.com?action=a2")

//请求接口3
NetWorkUtil.request("http://www.test.com?action=a3")

三天以后,产品经理跑过来说要加一个需求,新增了好几个接口,小明表示自己表现的机会到了,一股脑儿全部包下来了。可是做着做着发现有点不对劲啊,每次请求接口的时候都需要复制http://www.test.com这个域名,可是产品锦鲤追的紧啊,没办法先就这么办吧,实现了需求上线以后再说。

一周过去了,上线时间到了。测试小姐姐又跑过来问小明这个正式包的数据怎么不对,还是测试环境的?小明赶紧道歉,想起来了上线前需要修改域名这个事情,自己居然忘记了。心里一万只草泥马飞过,小明赶紧的匆匆忙忙地改完项目里所有接口请求的地方,这才松一口气,给测试小姐姐买了个奶茶打了个新包,这个版本终于成功上线了,还真是不容易啊。

一天以后,小明被项目经理叫到了办公室,把小明狠狠批了一顿。原来是小明有个地方忘记改了,线上用户的操作被记录到了测试数据库了。项目经理为了解决这个问题,将最近一天测试环境的该数据全部导入到了正式环境才解决,当然还收到了不少的投诉。不过还好这个数据不是核心数据,不是那么重要,不然小明的机票估摸着差不多就到手了。

小明痛定思痛,坚决要杜绝这种低级错误。于是他把需要改域名这个事情已经记录到备忘录里每天提醒了,除此之外,聪明的他还想到了一个办法,就是用一个全局的变量对域名进行保存,在上线前只需要切换一次就行了,类似于这种:

companion object {    
    const val HOST = "http://www.test.com"
}
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {    

    setContentView(R.layout.activity_main)

    //请求接口1
    NetWorkUtil.request("$HOST?action=a1")

    //请求接口2
    NetWorkUtil.request("$HOST?action=a2")

    //请求接口3    NetWorkUtil.request("$HOST?action=a3")
}

小明终于没有犯线上的低级错误了,但是后面业务需求越来越繁杂,服务端使用的域名也越来越多,并且很多第三方的api比如推送、bugly监测等也都需要切换id。每次上线需要修改一堆的域名和id。小明每天心态都跟高考一样,紧张又害怕,生怕自己再出问题,被强制送机票。而且就算在测试阶段,测试小姐姐偶尔也会让他打一个release包测试,虽然心里千万只草泥马不愿意,但是也没办法,先改成线上的域名吧,打完以后再改回来呗!于是小小明逐渐地熟悉了这一套切换方式,直到他看到了那一篇技术博客,小明他。。。哭了。

熟练开发者是怎么做的

小明看到的文章正是一篇关于测试和正式环境切换的技术文章,该文通俗易懂,还提供了完整的方案,小明看完觉得这不就是为自己准备的么,于是按照文章里的方式尝试了起来。文章中说到可以根据当前app是debug还是release来

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值