Wednesday, October 28, 2015

[CareerCup] 12.6 Test an ATM 测试一个自动取款机 - Grandyang - 博客园



[CareerCup] 12.6 Test an ATM 测试一个自动取款机 - Grandyang - 博客园

12.6 How would you test an ATM in a distributed banking system?

 

这道题问我们如何来测试一个自动取款机,我们首先要询问下列问题:

- 谁来使用这些ATM?回答可能是任何人,或者是盲人,或者是其他什么答案。

- 这些ATM用来干什么?回答可能是取钱,汇款,查余额等。

- 我们用什么工具来测试?我们能接触到代码吗,还是只有ATM机子?

一旦我们搞清楚了上述问题,我们可以将测试部分分为下列几个部分

- 登陆

- 取钱

- 存钱

- 查余额

- 汇款

我们可能需要使用一些列混合的手动或者自动的检测。

手动测试需要检查上述步骤,保证检查到所有的错误情况,比如余额不足,新账户,不存在的账户等。

自动测试稍微复杂一些,我们想要自动检测一些情景,检测一些特定的问题,比如race condition等问题。我们可以建立一个虚假账号,当某人在异地快速的存取钱,保证此账户不会额外的得到或者丢失钱。

综上,我们需要仔细检查安全性和可靠性。用户的账户一定要被保护,我们必须保证钱正确的流通,每个人都不想意外的损失钱。


Read full article from [CareerCup] 12.6 Test an ATM 测试一个自动取款机 - Grandyang - 博客园

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts