测试:其实分为单元测试, 集成测试, 系统测试。
单元测试:属于白盒测试的一种, 技术要求高, 只有白盒测试人员和软件开发人员才能完成,它的本质是通过一段代码去验证另外一段代码。
对于Web , 可以使用unittest+ Selenium。
集成测试: 一般是两,三个模块一起集成测试。
系统测试: 整个系统,在实际的环境下, 模拟用户使用。 主要是验证功能和场景。 在Google/Microsoft,系统测试很多是探索性测试。
从理论上来说, 单元测试:集成测试:系统测试约为7:2:1, 也就是单元测试要多做,问题在前期发现,成本最低。
在我们的测试中, 除了用Monkey外, 还有其他的自动化测试方法, 来执行测试用例的自动化。
|
Appium
|
UIAutomator
|
MonkeyRunner
|
MonkeyTalk
|
软件tools
|
Android
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Ios
|
Yes
|
No
|
No
|
Yes
|
No
|
Web Apps
|
Yes
|
只能有限支持x,y的点击
|
|
|
No
|
语言
|
All
|
Java
|
Python
|
|
Java
|
社区
|
Active
|
Google
|
|
Quiet
|
|
优点
|
1不依赖源代码
2不限制测试框架和平台
|
可以对所有操作进行自动化,操作简单
|
操作最为简单,可以录制测试脚本,可视化操作
|
|
无
|
缺点
|
仅仅支持UI测试,不支持单元测试等
|
Android版本需要高于4.0,无法根据控件ID操作,相对来说功能较为局限,但也够用了;
|
主要生成坐标的自动化操作,截图对比,移植性不强,功能最为局限
|
|
难
|
1 软件tools: 直接用Android 写一个App, 比如测试开关机, 可以写一个App,反复开关机多次。
2 笔者曾经参考CTS的框架, 直接写代码,来测试Framework的API。 这属于白盒测试, 但最终因投入较大,需要软件工程师直接参与,只能暂停。
3 使用UiAutomator框架。之前尝试过, 做了一两年,使用Java+UIAutomator,完成了快速迭代的100条测试用例的30%(也就是30条)和BaseService, 效果很小。
上述3个方法都需要软件工程师的参与, 对于测试工程师来说,难度太大! 因为自动化测试程序,也需要测试工程师来写, 如果自动化测试程序本身不稳定,投入太大, 那这块的见效就很小!
采取Python脚本来写自动化测试程序, 对于测试工程师来说,难度减少了很多。
Appium流程:
1 Webdriver的脚本以JSON Wire Protocol发送到Server
2
appium server会把请求转发给中间件Bootstrap.jar
3
Bootstrap监听4724端口并接收appium 的命令,调用UiAutomator
4 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文件
2 实现各个Step
其实, Feature文件相对于测试case。
我们也可以单独有人写测试case (TestLink管理cases), 然后直接用python, 采取Page Object的方式
写脚本。
阅读(668) | 评论(0) | 转发(0) |