我从开发转到测试之后,大部分时间是在做自动化测试,我蛮喜欢自动化测试的,在工作中慢慢接触到自动化测试框架。
1. 开始写自动化测试的时候用的是Junit+DBUnit做数据库的自动化测试,Junit+Selenium做Web的自动化测试,那个时候没有使用到自动化测试框架。
2. 在之前的公司接触到了自动化测试框架,刚开始是公司的自动化测试架构师自己开发的测试框架,使用Python+Djiango来存储测试相关的数据,整个自动化测试框架做得蛮不错,当然也有一些缺点,但还是做得很好。或者说公司能有自动化框架的是比较少,公司的自动化做得相对完善,能做到配置好之后点击Run就可以开始跑测试,第二天来了看结果。Daily Build的check是比较稳定的。有些Regression的case是相对复杂,所以如果case不过需要调试(debug) 的时候,才是真正花时间的时候。
3. 后来公司因为Robot Framework的漂亮的报表而开始使用Python+Robot开发case,用Jenkins来集成和运行case。也算是蛮成功的吧。我感觉Robot有自己的优势,只是我们的测试用例和测试环境相对复杂,所以一旦case出现问题,需要调试的时候,根本没有想象的那样: 通过看Keyword的Log就很容易的知道问题在哪,理想状况,Fail直接提Bug。Robot我觉得适合相对简单的测试,如果有足够的时间,在开始设计好API(Keyword),那么是可以实现Manual QA也可以写Case的良好愿望的。
4. 现在公司是做手机测试,开始用Appium+TestNG,做了一些Wrapper,做了一个相对简单的自动化测试框架。在培训中第一次接触到Page Object Model,其实在开始做自动化测试的时候,我们就是把每个Web Page做Wrapper,把每个元素和操作来封装,只是那个时候没有这个概念。这个模型我觉得还是蛮好的。
什么是自动化测试框架?
就是
什么样的Case适合做自动化测试?
1. 根据固定输出,有相对固定的期望输出结果。或者输出结果有一定的规律。
2. 输出结果不依赖于
3. 测试的环境相对简单。
Page Object Model (Web, Mobile)
http://www.seleniumhq.org/docs/06_test_design_considerations.jsp#page-object-design-pattern
针对每个Page/Activity建议一个Class来封装页面内的元素和操作。例如一个Login的Page,有用户名,密码,登陆的按钮。我们就会建立一个LoginPage的class,包括下面的一些方法:
1. IsPagePresent: 根据验证页面的某个元素是否存在来判断页面是否加载成功。对于Web Page来说不能根据Page Title,最好选择页面下方的某个控件,因为要保证页面加载完全。
2. GetUserNameText: 获取用户名的输入框。用来支持获取文本框内容和输入内容。
3. GetPasswordText: 获取密码的输入框。用来支持获取内容和输入内容。
4. InputUserName: 输入内容到用户名的输入框内。
5. InputPassword: 输入内容到密码输入框。
6. ClickLoginButton:点击Login按钮。
7. GetUserName: 获得Username。
7. GetPassword: 获得Password, 一般password都是*,所以无法获取。只能输入。