ソフトウェアテストの面接の質問は「収集する価値がある」!

目次

1. B/S アーキテクチャと C/S アーキテクチャの違いは何ですか?

2. Cookie とセッションの違いは何ですか?

3. テストの目的は何ですか?

4. ボールペンをテストするには、どのような点をテストする必要がありますか?

5. 三角形のテストケース設計?

6. プロジェクトではどのような古典的なバグが見つかりましたか? 何が原因でしょうか?

7. ソフトウェアのバグをできるだけ早く見つけるにはどうすればよいですか?

8. 検索機能をテストするにはどうすればよいですか?

9. タオバオのショッピング カートをテストする必要がある場合、テスト ケースをどのように設計しますか?また、どのような点を考慮する必要がありますか?

10. データベースにはテーブル構造の接続方法がいくつありますか?

11. UI オートメーションで要素を配置するために一般的に使用される方法は何ですか?

12. ブラウザを閉じる close() と quit() の違いは何ですか?

13. 自動テストで要素を特定できない理由は何ですか?

14. 一般的に使用される自動テスト ツールは何ですか?

15. 弱いネットワークのテストはどのように行われますか?

16. キーワード主導型とデータ主導型の違いは何ですか?

17. デコレーターとは何ですか?またその機能は何ですか?

18. 辞書内のすべてのキーのリストを取得するにはどうすればよいですか?

19. Linuxサーバーの負荷を確認するにはどうすればよいですか?

20. Python を使用して 99 個の乗算式を記述しますか?

1. B/S アーキテクチャと C/S アーキテクチャの違いは何ですか?

1. 異なるアーキテクチャ: B/S アーキテクチャはブラウザ/サーバー アーキテクチャであり、C/S アーキテクチャはクライアント/サーバー アーキテクチャです。

2. クライアントは異なります。B/S アーキテクチャのクライアントはブラウザであり、C/S アーキテクチャのクライアントはクライアント プログラムです。

3. 異なる機能: B/S アーキテクチャは主にネットワーク サービスに使用され、C/S アーキテクチャは主にアプリケーション サービスに使用されます。

4. 保守は異なります。B/S アーキテクチャの保守は主にサーバー側で行われ、C/S アーキテクチャの保守は主にクライアント側とサーバー側で行われます。

5. 異なるセキュリティ: B/S アーキテクチャはセキュリティが低く、C/S アーキテクチャはセキュリティが高くなります。

2. Cookie とセッションの違いは何ですか?

Cookie とセッションはどちらもユーザー情報を保存するために使用されるテクノロジーですが、それらの間には明らかな違いがいくつかあります。

1. Cookie データはクライアントのブラウザに保存され、セッション データはサーバーに保存されます。

2. Cookie はあまり安全ではありません。ローカルに保存されている Cookie を他の人が分析して騙すことができます。セッションはより安全であり、サーバーはセッションを暗号化します。

3. Cookie には有効期限を設定できます. ブラウザを閉じると Cookie は無効になり、セッションは一定期間保存されます. ブラウザを閉じてもセッションは無効になりません.セッションの有効期限が切れると、セッションは無効になります。

4. Cookie はクライアント側の情報を保存できますが、Session はサーバー側の情報のみを保存できます。

3. テストの目的は何ですか?

テストの目的は、ソフトウェア システムが期待どおりに正常に機能し、ユーザーのニーズを満たすことができることを確認することです。

4. ボールペンをテストするには、どのような点をテストする必要がありますか?

1.書き味:ペン先の細さ、リフィルの滑らかさ、リフィルの色、リフィルの耐久性などをチェックします。

2.外観品質:ペン本体の外観、リフィルの外観、キャップの外観などを確認します。

3. プロセス品質:リフィルの取り付け、リフィルの分解、リフィルの交換などを確認します。

4. 機能性能:ペン先の細さ、リフィルの滑らかさ、リフィルの耐久性、リフィルの耐久性などを確認します。

5.安全性能:リフィルの安全性、リフィルの耐摩耗性、リフィルの耐食性などを確認してください。

5. 三角形のテストケース設計?

1. テストケース 1: 3 つの辺の長さを入力して三角形が形成できるかどうかを確認する

2. テストケース 2: 3 辺の長さを入力し、正三角形が形成できるかどうかを検証する

3. テストケース 3: 3 辺の長さを入力して、二等辺三角形が形成できるかどうかを確認します

4. テストケース 4: 3 つの辺の長さを入力して、直角三角形が形成できるかどうかを確認します

5. テストケース 5: 3 辺の長さを入力し、鈍角三角形が形成できるかどうかを確認します

6. プロジェクトではどのような古典的なバグが見つかりましたか? 何が原因でしょうか?

1. NULL ポインタ例外: プログラムが存在しないポインタにアクセスしようとすると、NULL ポインタ例外が発生します。この例外は通常、プログラマがポインタの初期化を忘れたか、存在しないメモリ アドレスにアクセスしようとしたことが原因で発生します。

2. 範囲外アクセス: 範囲外アクセスは、プログラムが配列の範囲を超えて要素にアクセスしようとすると発生します。この種の例外は通常、プログラマが配列の境界条件のチェックを忘れることによって発生します。

3. メモリ リーク: プログラムがメモリを申請した後にメモリの解放を忘れると、メモリ リークが発生します。この種の例外は通常、プログラマがメモリを解放し忘れたか、メモリが解放されているかどうかを確認し忘れたことが原因で発生します。

7. ソフトウェアのバグをできるだけ早く見つけるにはどうすればよいですか?

1. まず、問題をより正確に特定するには、ソフトウェアの機能とアーキテクチャを明確に理解する必要があります。

2. ソフトウェアのさまざまな機能を使用して、異常な状況が発生するかどうかを確認します。

3. 別の入力データを使用して、ソフトウェアがそれを正しく処理できるかどうかを確認します。

4. ソフトウェアの自動テスト機能を使用して、異常がないかどうかを確認します。

5. ソフトウェアのデバッグ機能を使用して、ソフトウェアの実行プロセスと考えられるエラーを確認してみます。

6. ソフトウェアのログ機能を使用して、考えられるエラー メッセージを確認してください。

7、尝试使用第三方工具,如内存调试器,以查看可能出现的内存泄漏。

8、尝试使用第三方工具,如性能分析器,以查看可能出现的性能问题。

9、尝试使用第三方工具,如安全扫描器,以查看可能出现的安全漏洞。

10、尝试使用第三方工具,如静态代码分析器,以查看可能出现的代码错误。

8、搜索功能怎么测试?

1、功能方面的测试:

搜索单个字,词语,句子,检索到的内容是否准确,链接是否准确

长度:例如输入框支持100字符,那需要测试100字符、101字符,最大长度的显示是否正常

哪些是支持的字符类型:数字、字母、汉字、字符!@!#、特殊字符(需求而定)

字符串前后中带空格,前后的空格是否过滤,中间的空格是否保留(需求而定)

全角半角的字母、数字(需求而定)

2、性能方面的测试

点击搜索按钮后,搜索结果多长时间能够显示

进入搜索页面需要多久

3、安全性方面的测试

能否防止SQL注入攻击,否防止XSS攻击

4、用户体验测试

页面布局是否合理,输入框和按钮是否对齐

输入框的大小和按钮的长度,高度是否合理

快捷键:能不能全选,部分选择,复制剪切粘贴是否可用,粘贴超过最大长度的字符串怎么显示

5、兼容性测试

BS架构:不同浏览器测试,比如:火狐,谷歌,360这些

APP:在主流的不同类型,不同分辨率,不同操作系统的手机上测试,苹果,华为,vivo,oppo等

9、如果需要你来测试淘宝的购物车,你会如何设计测试用例,需要从哪些方面来考虑?

1、打开淘宝页面后,页面的布局是否是完整的

2、页面的功能按钮是否可以正常显示

3、在商品页面是否会显示加入购物车

4、选中的商品是否能加入购物车

5、加入购物车后是否可以显示商品的所有信息

6、添加到购物车的商品是否可以进行删除

7、如果在网络不佳或无网络时是否可以成功的加入购物车

8、添加购物车后,点击加号的时候数量是否会增长

9、添加购物车后,点击减号的时候数量是否会减少

10、如果点击减号减到一定程度时,是否会提示不能再减少了

11、如果淘宝用户未登录时,如果添加到购物车时是否会提示请先登录

12、如果没有选择任何商品,点击结算,是否会提示用户“请添加要结算的商品”

13、勾选商品后已选商品的总价是否会显示

14、勾选商品显示总价后,总价计算是否正确

15、勾选商品,点击结算按钮后,是否会进入确认订单信息的页面

16、进入确认订单信息页面的总价是否正确

17、总价是否会出现精度不准的情况,比如:正确总价是18.99,结果显示的确实18.999999999999

18、是否有回到顶部功能

19、是否可以编辑商品属性

20、能否移入到收藏中

21、店铺名称是否显示

22、能否选择全部商品

23、能否取消选择全部商品

24、是否可以在购物车中修改商品的规格

25、添加购物的数量超过库存数量是否进行限制

26、是否可以进行清空购物车

27、结算金额是否会随着商品数量的增加减少进行变化

28、如果刷新的次数过多,是否会出现闪退的现象

29、当手机来电话时淘宝页面是会还会运行

30、当手机内存不够时,淘宝运行起来是否会出现卡顿的现象

10、数据库有几种表结构的连接方式?

内连接(inner join)

外连接(outer join)

左外连接(left outer join)

右外连接(right outer join)

全外连接(full outer join)

区别:

1、其中外连接的“OUTER”关键字可以省略不写。

2、内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录。

3、内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接。

4、左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行

5、右外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行。

6、全连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的其他行。

11、UI自动化中常用的定位元素的方法?

1、id定位
find_element_by_id("") #通过id来定位元素
在HTML中,id是唯一的,通过id但部分元素可能没有id或id为随机值。

2、name定位
find_element_by_name("") #通过name来定位元素

3、class定位
find_element_by_class_name("") #通过class来定位元素

4、tag定位
find_element_by_tag_name("") #通过tag来定位元素

5、link定位
find_element_by_link_text("") #通过link来定位元素

6、partial link定位
find_element_by_partial_link_text("") #通过元素标签对之间的部分文字进行元素定位

7、XPath定位(UI自动化应用最普遍的)
下面列出了最有用的路径表达式:
nodeName 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
… 选取当前节点的父节点
@ 选取属性

下面XPath的几种元素定位方法
(1)绝对路径定位
find_element_by_xpath("/html/body/div[2]/div[2]/div[5]/div[1]/div/form/span[2]/input")

(2)利用元素定位(与前六种方法类似)
#利用元素属性进行定位
find_element_by_xpath("//input[@id='**']")
find_element_by_xpath("//input[@name='**']")
find_element_by_xpath("//input[@class='**']")
find_element_by_xpath("//input[@type='**']")
#利用元素层级属性进行定位,相对路径 #根据class属性唯一值,一层一层定位到元素
find_element_by_xpath("//div[@class='**'])/table/tbody/tr/td/div")
#利用逻辑运算符进行定位
find_element_by_xpath("//input[@id='**' and @name='**']")
find_element_by_xpath("//input[@id='**' or @name='**']")
#利用contains包含方法进行定位,查找classname属性下,classname中包含name的元素
find_element_by_xpath("//classname[contains(@classname,'name')]")
#利用starts-with,使用开始位置元素进行定位
find_element_by_xpath("//input[starts-with(@name,'vaule')]")
#利用ends-with,使用结束位置元素进行定位
find_element_by_xpath("//input[ends-with(@name,'vaule')]")
#利用text()进行元素定位
find_element_by_xpath("//input[text(),'百度']")
#其它方法 #string-length()、substring、substring-before()、substring-after()

8、CSS_selector定位
CSS选择器可以更灵活的选择空间的任意属性,且CSS定位速度比XPath定位快。
find_element_by_css_selector(".**") #通过class定位,CSS中class选择器以"."来定义
find_element_by_css_selector("#**") #通过id定位,CSS中id选择器以"#"来定义
find_element_by_css_selector("div") #通过标签名定位
find_element_by_css_selector("[name='**']") #通过name进行定位
find_element_by_css_selector("td > div") #通过父标签,查找子元素中标签名为div的所有元素

12、关闭浏览器close()与quit()的区别?

close() 关闭当前操作的窗口(并非关闭超链接新打开的窗口)

quit() 退出相关驱动程序,关闭所有窗口

一般在自动化脚本执行完后,需要清空环境,释放占用的内存。采用driver.quit()来直接关闭浏览器。

13、自动化测试中元素定位不到有哪几种原因?

1、检查元素是不是写对了(看似简单,但是我相信还是会有人自己打错了)

2、ID是自动生成的,随机的,如果是自动生成的id,那么朋友,你只能是放弃使用id来定位了

3、选用的方法对应的属性并不唯一,整个页面有好几个

4、查看是否存在多个iframe标签,需要切换iframe再定位

5、使用了带有空格的属性,定位的时候请避开选用带空格的属性

6、看看是不是使用了绝对路径,因为在前端开发的时候可能会增删改标签,这就导致你用的绝对路径出错了,所以使用相对路径会比较好

7、检查有没有加上等待时间,很多时候是因为未加载出来元素导致元素找不到

8、检查自己设的等待时间是不是太短了,别以为加了等待时间就万事ok了,说不定你设的3秒内加载元素,结果人家第4秒才加载出来,那就哦豁了,所以可以适当的加上等待时间,至于是隐性等待还是显性等待或者是固定等待,视情况选择吧

9、检查你选择的元素是不是可见的,有的元素会被隐藏

14、常用自动化测试工具有哪些?

1、Selenium:Selenium是一种用于Web应用程序测试的开源自动化测试工具。它可以模拟用户在Web浏览器中的操作,以验证Web应用程序的功能和性能。

2、Appium:Appium是一种开源的自动化测试框架,可用于测试原生、混合和移动Web应用程序。它可以在多种移动设备和操作系统上运行,包括iOS、Android和Firefox OS。

3、Watir:Watir是一种开源的自动化测试框架,可用于测试Web应用程序。它使用Ruby编写,可以模拟用户在Web浏览器中的操作,以验证Web应用程序的功能和性能。

4、TestComplete:TestComplete是一种商业自动化测试工具,可用于测试Windows、Web、移动和桌面应用程序。它可以自动录制和回放用户操作,以验证应用程序的功能和性能。

5、QTP:QTP(QuickTest Professional)是一种商业自动化测试工具,可用于测试Windows、Web、移动和桌面应用程序。它可以自动录制和回放用户操作,以验证应用程序的功能和性能。

15、弱网测试是怎么做的?

弱网测试是指在网络环境较差的情况下,测试软件或硬件的性能和稳定性。它的主要目的是检测软件或硬件在网络环境较差的情况下是否能够正常运行,以及在网络环境较差的情况下,软件或硬件的性能是否能够满足用户的要求。

弱网测试的具体步骤如下:

1、分析用户的网络环境:首先,需要分析用户的网络环境,包括网络的带宽、网络的延迟、网络的丢包率等,以便确定测试的网络环境。

2、设置测试环境:根据用户的网络环境,设置测试环境,包括设置网络的带宽、网络的延迟、网络的丢包率等,以便模拟用户的网络环境。

3、进行测试:在设置好的测试环境中,进行测试,检测软件或硬件在网络环境较差的情况下是否能够正常运行,以及在网络环境较差的情况下,软件或硬件的性能是否能够满足用户的要求。

4、分析测试结果:最后,分析测试结果,确定软件或硬件在网络环境较差的情况下是否能够正常运行,以及在网络环境较差的情况下,软件或硬件的性能是否能够满足用户的要求。

16、关键字驱动和数据驱动有哪些区别?

1、关键字驱动是指测试用例的执行过程是由一系列的关键字来控制的,而数据驱动是指测试用例的执行过程是由外部的数据文件来控制的。

2、关键字驱动的测试用例的编写比较简单,而数据驱动的测试用例的编写比较复杂。

3、关键字驱动的测试用例可以更容易地实现参数化,而数据驱动的测试用例可以更容易地实现数据驱动。

4、关键字驱动的测试用例可以更容易地实现自动化,而数据驱动的测试用例可以更容易地实现可维护性。

17、什么是装饰器,其作用是什么?

装饰器是一种特殊的函数,它可以在不更改原函数的基础上,为其添加额外的功能。它的作用是在不改变原函数的基础上,为其添加额外的功能,从而使代码更加简洁、优雅。

18、怎样获取字典中的所有键的列表?

#可以使用dict.keys()方法获取字典中的所有键的列表:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
keys = dict.keys()
print(keys)
# 输出结果:dict_keys(['Name', 'Age', 'Class'])

19、如何查看Linux服务器的负载?

可以使用top命令查看Linux服务器的负载,top命令可以实时显示系统中各个进程的资源占用情况,包括CPU使用率、内存使用量等。

也可以使用uptime命令查看Linux服务器的负载,uptime命令可以显示系统的运行时间、当前登录用户数、系统负载等信息。

20、利用Python写出九九乘法口诀?

for i in range(1, 10):
    for j in range(1, i+1):
        print('{}x{}={}\t'.format(i, j, i*j), end='')
    print()

# 输出结果:
1x1=1
2x1=2 2x2=4
3x1=3 3x2=6 3x3=9
4x1=4 4x2=8 4x3=12 4x4=16
5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81

待续。。。

おすすめ

転載: blog.csdn.net/github_35856054/article/details/129283653