测试:其实分为单元测试, 集成测试, 系统测试。
单元测试:属于白盒测试的一种, 技术要求高, 只有白盒测试人员和软件开发人员才能完成,它的本质是通过一段代码去验证另外一段代码。
对于Web , 可以使用unittest+ Selenium。
集成测试: 一般是两,三个模块一起集成测试。
系统测试: 整个系统,在实际的环境下, 模拟用户使用。 主要是验证功能和场景。 在Google/Microsoft,系统测试很多是探索性测试。


从理论上来说, 单元测试:集成测试:系统测试约为7:2:1, 也就是单元测试要多做,问题在前期发现,成本最低。


在我们的测试中, 除了用Monkey外, 还有其他的自动化测试方法, 来执行测试用例的自动化。


AppiumUIAutomatorMonkeyRunnerMonkeyTalk软件tools
AndroidYesYesYesYesYes
IosYesNoNoYesNo
Web AppsYes只能有限支持x,y的点击

No
语言AllJavaPython
Java
社区ActiveGoogle
Quiet
优点1不依赖源代码
2不限制测试框架和平台
可以对所有操作进行自动化,操作简单操作最为简单,可以录制测试脚本,可视化操作

缺点仅仅支持UI测试,不支持单元测试等
Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限,但也够用了;

主要生成坐标的自动化操作,截图对比,移植性不强,功能最为局限



1  软件tools: 直接用Android 写一个App, 比如测试开关机, 可以写一个App,反复开关机多次。
2  笔者曾经参考CTS的框架, 直接写代码,来测试Framework的API。 这属于白盒测试, 但最终因投入较大,需要软件工程师直接参与,只能暂停。
使用UiAutomator框架。之前尝试过, 做了一两年,使用Java+UIAutomator,完成了快速迭代的100条测试用例的30%(也就是30条)和BaseService, 效果很小。
上述3个方法都需要软件工程师的参与, 对于测试工程师来说,难度太大! 因为自动化测试程序,也需要测试工程师来写, 如果自动化测试程序本身不稳定,投入太大, 那这块的见效就很小!


采取Python脚本来写自动化测试程序, 对于测试工程师来说,难度减少了很多。

Appium流程:
自动化测试-Appium-LMLPHP

1  Webdriver的脚本以JSON Wire Protocol发送到Server
2  appium server会把请求转发给中间件Bootstrap.jar 
Bootstrap监听4724端口并接收appium 的命令,调用UiAutomator
UiAutomator Command Server调用并执行
5 执行的结果返回给Appium Server 
6 Appium Server把执行结果返回给Client。



Appium属于黑盒测试, 功能测试。
可以选择: Appium + Pytest + Git + Jenkins 
其中:Pycharm(VSCode)     IDE  
          Pytest                     报告生成
          Git                         脚本仓库
          Jenkins                   自动化编译和运行


Appium 录制功能: Appium有录制功能,生成的代码,放到PyCharm中做少许修改,就可以了,这样可以提高写脚本的效率。 但Appium录制生成的代码, 为坐标,而非元素(ID),这样对于机型,每个机型的分辨率不一样,无法兼容。
 可以研究一下: https://blog.csdn.net/weixin_30687811/article/details/95447558, 这个帖子录制产生基于元素的代码。


BDD: Behavior Driven Development,  它的脚本称为Domain Specific Language (DSL), 关键字包括Feature,Scenario,Given,And,Then...
BDD的框架有: Cucumber, Lettuce. Lettuce和Cucumber类似,但使用Python写的。
步骤:
1  使用
Cucumber或者Lettuce插件写出Feature文件
实现各个Step
其实, Feature文件相对于测试case。

我们也可以单独有人写测试case (TestLink管理cases), 然后直接用python, 采取Page Object的方式写脚本

09-28 18:39
查看更多