ARTS - 2020.06.15 ~ 2020.06.21

ARTS打卡 - 3

1. Algorithm

9. Palindrome Number

这次做的是一道回文数字的题目,在第一次打卡的时候做过一道回文子串的题目,首先就想到了先将回文数字转为char[],然后一头一尾比较是否相等,应该是一个logN的时间复杂度。但是题目要求不要将int转为字符串去做,也可以想到用取整+取余的方式来做,写完代码以后提交倒是accept了,但是运行时间只超过了5%。。于是看了一下标准的解法,原来是在循环判断条件上,我是这么写的 while(x != 0), 这样的话相当于将目标数字每一位都计算了一遍。标准答案是:while(x > reverse) 其中 reverse是回文数字。这样写的话相当于只用计算目标数字的1/2位数,这个我在写的时候确实没有考虑到,以后在写循环判断条件的时候,也许可以多想想,有没有更优的方式。

2. Review

Top 15 UI Test Automation Best Practices You Should Follow

这是一篇UI自动化测试的最佳实践,文章中提出了15条建议,应该如何更好的运行UI自动化测试,以及如何搭建一个稳定并且易维护的测试框架。作者提出的这些注意点十分有用,感觉不仅仅是UI自动化测试,而是适用于所有测试流程。可以去依照这些点,再根据项目选择适合自己的方案。

  • 不要仅仅依靠UI自动化测试
  • 考虑使用BDD框架、即使用自然语言编写测试用例
  • 设计代码应当使用易测试的设计模式与原则
  • 不要使用sleep()函数,除非测试用例包含这样的要求
  • 不需要在所有的目标设备上运行所有的测试
  • 将测试用例与框架分开。(比如真正的测试文件与PageObject分开)
  • 可移植性,即不应当对测试环境有过度复杂的依赖
  • 清晰的测试用例命名
  • 如果需要在同一网页上列出相关检查,需要使用弱断言
  • 应当使用截屏来辅助分析错误情况
  • 测试用例应当有很好的可读性以及简单
  • 遵循“绿色测试运行”,即只要有红色的失败case出现,就表示程序100%有问题。(稳定性)
  • 使用数据驱动而不是重复测试
  • 所有测试用例应当是隔离的
  • 设置详细的自动化测试报告

3. Tip

说一个比较简单的,不知道大家平时有没有试过:就是真机连接adb老是会自动断开(原因不明,不过我印象中好像是在发生情况之前我都有用过chrome的inspect,但不在同一个端口),会影响到一些自动化的操作,所以想再启动一个模拟器,有备无患。但是使用Android Studio的AVD创建arm架构的模拟器,每次启动之后都会提示System app crash,一直无法使用。所以又用了genymotion的模拟器,但是genymotion模拟器自带的是不支持arm的,默认都是x86,需要按照以下步骤改一下就可以了:

  • 首先在 Genymotion_ARM_Translation 下载对应的模拟器的Android系统的Genymotion插件,ARM-Translation.zip

    • 然后将对应的zip包拖到已经启动的genymotion模拟器内
  • 运行:

    1
    2
    3
    adb shell 
    cd /sdcard/Download
    sh /system/bin/flash-archive.sh /sdcard/Download/Genymotion-ARM-Translation.zip
  • 重启模拟器即可。

4. Share

轻松理解JS 原型原型链

这是一篇讲js原型链的文章,个人感觉讲的挺明白的。

进阶 Javascript 生成器

第二篇是讲了js中生成器、迭代器,以及yield等关键字的用法,由于在看macaca的源码实现的时候,发现了很多function*(){}的用法 ,然后还有将生成器函数转为promise的co三方库。这篇文章对于js中的生成器讲非常详细。