@aj-shadow/actorjs-documentation-text 0.0.0-aj-beta.221

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/.gitattributes +26 -0
  2. package/Documentation/Document-global-Be-100-more-efficient.txt +31 -0
  3. package/Documentation/Document-global-actorjs-trigger-mock-and-intercept-anything.txt +21 -0
  4. package/Documentation/Document-global-advanced-visualization.txt +28 -0
  5. package/Documentation/Document-global-debugging.txt +4 -0
  6. package/Documentation/Document-global-divide-and-reuse.txt +37 -0
  7. package/Documentation/Document-global-general-separation.txt +2 -0
  8. package/Documentation/Document-global-markup-anchor.txt +6 -0
  9. package/Documentation/Document-global-markup-api-status.txt +39 -0
  10. package/Documentation/Document-global-markup-chart-line.txt +18 -0
  11. package/Documentation/Document-global-markup-documentation-status.txt +39 -0
  12. package/Documentation/Document-global-markup-documentation.txt +72 -0
  13. package/Documentation/Document-global-markup-embed.txt +6 -0
  14. package/Documentation/Document-global-markup-flowchart.txt +88 -0
  15. package/Documentation/Document-global-markup-html.txt +122 -0
  16. package/Documentation/Document-global-markup-ie.txt +18 -0
  17. package/Documentation/Document-global-markup-image.txt +55 -0
  18. package/Documentation/Document-global-markup-lab.txt +63 -0
  19. package/Documentation/Document-global-markup-markup.txt +21 -0
  20. package/Documentation/Document-global-markup-navigation.txt +25 -0
  21. package/Documentation/Document-global-markup-node-diagram.txt +163 -0
  22. package/Documentation/Document-global-markup-note.txt +6 -0
  23. package/Documentation/Document-global-markup-ref.txt +6 -0
  24. package/Documentation/Document-global-markup-sequence-diagram.txt +215 -0
  25. package/Documentation/Document-global-markup-state-machine.txt +121 -0
  26. package/Documentation/Document-global-markup-table.txt +34 -0
  27. package/Documentation/Document-global-navigation-pane.txt +3 -0
  28. package/Documentation/Document-global-navigation.txt +2 -0
  29. package/Documentation/Document-global-specialized-javascript-editors.txt +2 -0
  30. package/Documentation/Document-global-stacks-connection.txt +2 -0
  31. package/Documentation/Document-global-stacks-server.txt +2 -0
  32. package/Documentation/Document-global-test-environment-overview.txt +15 -0
  33. package/Documentation/Document-global-the-architecture.txt +51 -0
  34. package/Documentation/Document-global-the-development-environment.txt +5 -0
  35. package/Documentation/Document-global-the-test-environment.txt +15 -0
  36. package/Documentation/Document-global-think-ahead.txt +35 -0
  37. package/Documentation/Document-global-thinking-in-actors-unlimited.txt +1 -0
  38. package/Documentation/Document-global-what-is-a-stack.txt +2 -0
  39. package/Documentation/Document-global-why-actorjs.txt +52 -0
  40. package/Documentation/Document-global-why-actors-unlimited.txt +182 -0
  41. package/Documentation/Document-global-x-test-case-tool.txt +2 -0
  42. package/Documentation/Navigation-Documentation-actorjs-global.txt +372 -0
  43. package/Documentation/Navigation-Documentation-actorsite-global.txt +363 -0
  44. package/Documentation/abstractions/Document-global-addressing.txt +81 -0
  45. package/Documentation/abstractions/Document-global-configuration-floor.txt +2 -0
  46. package/Documentation/abstractions/Document-global-content.txt +3 -0
  47. package/Documentation/abstractions/Document-global-functions-test.txt +4 -0
  48. package/Documentation/abstractions/Document-global-functions-unde-test.txt +2 -0
  49. package/Documentation/abstractions/Document-global-load-test.txt +3 -0
  50. package/Documentation/abstractions/Document-global-repo.txt +79 -0
  51. package/Documentation/abstractions/Document-global-shared-data.txt +5 -0
  52. package/Documentation/abstractions/Document-global-system-to-test.txt +2 -0
  53. package/Documentation/abstractions/Document-global-system-under-test.txt +3 -0
  54. package/Documentation/abstractions/Document-global-test-data.txt +251 -0
  55. package/Documentation/abstractions/Document-global-test-suite.txt +37 -0
  56. package/Documentation/abstractions/Document-global-verification-data.txt +103 -0
  57. package/Documentation/abstractions/actor/Document-global-actor-condition.txt +74 -0
  58. package/Documentation/abstractions/actor/Document-global-actor-local.txt +44 -0
  59. package/Documentation/abstractions/actor/Document-global-actor-originating.txt +100 -0
  60. package/Documentation/abstractions/actor/Document-global-actor-proxy.txt +119 -0
  61. package/Documentation/abstractions/actor/Document-global-actor-terminating.txt +101 -0
  62. package/Documentation/abstractions/actor/Document-global-actor.txt +90 -0
  63. package/Documentation/abstractions/actor/Document-global-execution-states.txt +21 -0
  64. package/Documentation/abstractions/actorpart/Document-global-actorpart.txt +2 -0
  65. package/Documentation/abstractions/stack/Document-global-client-connection.txt +3 -0
  66. package/Documentation/abstractions/stack/Document-global-connection.txt +3 -0
  67. package/Documentation/abstractions/stack/Document-global-decoder.txt +3 -0
  68. package/Documentation/abstractions/stack/Document-global-encoder.txt +3 -0
  69. package/Documentation/abstractions/stack/Document-global-message.txt +4 -0
  70. package/Documentation/abstractions/stack/Document-global-server-connection.txt +3 -0
  71. package/Documentation/abstractions/stack/Document-global-stack.txt +12 -0
  72. package/Documentation/abstractions/stack/Document-global-worker.txt +3 -0
  73. package/Documentation/abstractions/test-case/Document-global-phases.txt +30 -0
  74. package/Documentation/abstractions/test-case/Document-global-test-case-result.txt +23 -0
  75. package/Documentation/abstractions/test-case/Document-global-test-case.txt +199 -0
  76. package/Documentation/actor-api/Document-global-actor-part.txt +7 -0
  77. package/Documentation/actor-api/Document-global-actor.txt +375 -0
  78. package/Documentation/actor-api/Document-global-async.txt +176 -0
  79. package/Documentation/actor-api/Document-global-client-stack.txt +215 -0
  80. package/Documentation/actor-api/Document-global-content.txt +106 -0
  81. package/Documentation/actor-api/Document-global-logger.txt +426 -0
  82. package/Documentation/actor-api/Document-global-process.txt +7 -0
  83. package/Documentation/actor-api/Document-global-server-stack.txt +213 -0
  84. package/Documentation/actor-api/Document-global-shared-data.txt +259 -0
  85. package/Documentation/actor-api/Document-global-test-data.txt +816 -0
  86. package/Documentation/actor-api/Document-global-timer.txt +70 -0
  87. package/Documentation/actor-api/Document-global-verification-data.txt +624 -0
  88. package/Documentation/connection-worker-api/Document-global-logger.txt +3 -0
  89. package/Documentation/documentation-references.json +199 -0
  90. package/Documentation/embedded/Document-global-test-case-result.txt +10 -0
  91. package/Documentation/howto/Document-global-create-actor.txt +1 -0
  92. package/Documentation/howto/Document-global-create-stack.txt +1 -0
  93. package/Documentation/howto/Document-global-create-test-case.txt +1 -0
  94. package/Documentation/howto/Document-global-create-test-suite.txt +1 -0
  95. package/Documentation/howto/Document-global-define-addresses.txt +1 -0
  96. package/Documentation/howto/Document-global-define-fut.txt +1 -0
  97. package/Documentation/howto/Document-global-define-sut.txt +16 -0
  98. package/Documentation/howto/Document-global-full-workflow.txt +143 -0
  99. package/Documentation/howto/Document-global-normal-workflow.txt +58 -0
  100. package/Documentation/howto/Document-global-prerequisites.txt +8 -0
  101. package/Documentation/howto/prerequisites/Document-global-install-actorjs.txt +64 -0
  102. package/Documentation/howto/prerequisites/Document-global-install-git.txt +26 -0
  103. package/Documentation/howto/prerequisites/Document-global-install-nodejs.txt +19 -0
  104. package/Documentation/markup/Document-global-markup-test-case.txt +6 -0
  105. package/Documentation/markup/Document-global-markup-test-suite.txt +13 -0
  106. package/Documentation/markup/embed/Document-global-inner_markup_tc.txt +164 -0
  107. package/Documentation/nodejs-api/Document-global-fs.txt +7 -0
  108. package/Documentation/stack-api/Document-global-ascii-dictionary.txt +108 -0
  109. package/Documentation/stack-api/Document-global-binary-log.txt +91 -0
  110. package/Documentation/stack-api/Document-global-bit-byte.txt +80 -0
  111. package/Documentation/stack-api/Document-global-content-base.txt +169 -0
  112. package/Documentation/stack-api/Document-global-ip-log.txt +101 -0
  113. package/Documentation/stack-api/Document-global-log-inner.txt +152 -0
  114. package/Documentation/stack-api/Document-global-log-part-error.txt +12 -0
  115. package/Documentation/stack-api/Document-global-log-part-ref.txt +80 -0
  116. package/Documentation/stack-api/Document-global-log-part-text.txt +81 -0
  117. package/Documentation/tools/Document-global-actors.txt +196 -0
  118. package/Documentation/tools/Document-global-addressing.txt +38 -0
  119. package/Documentation/tools/Document-global-content.txt +1 -0
  120. package/Documentation/tools/Document-global-global-test-data.txt +197 -0
  121. package/Documentation/tools/Document-global-stacks.txt +1 -0
  122. package/Documentation/tools/Document-global-test-case-analyze.txt +3 -0
  123. package/Documentation/tools/Document-global-test-case-debug.txt +16 -0
  124. package/Documentation/tools/Document-global-test-case-definition.txt +37 -0
  125. package/Documentation/tools/Document-global-test-case-execution.txt +28 -0
  126. package/Documentation/tools/Document-global-test-case-log.txt +95 -0
  127. package/Documentation/tools/Document-global-test-case-sequence-diagram.txt +17 -0
  128. package/Documentation/tools/Document-global-test-case-specification.txt +3 -0
  129. package/Documentation/tools/Document-global-test-cases.txt +11 -0
  130. package/Documentation/tools/Document-global-tool-test-suite.txt +202 -0
  131. package/Education/Document-global-add-your-first-addresses.txt +75 -0
  132. package/Education/Document-global-define-your-first-sut.txt +18 -0
  133. package/Education/Document-global-make-your-first-actors.txt +35 -0
  134. package/Education/Document-global-make-your-first-test-case.txt +43 -0
  135. package/Education/Document-global-make-your-first-test-suite.txt +29 -0
  136. package/Education/Document-global-share-your-work.txt +35 -0
  137. package/Education/Navigation-Education-actorjs-global.txt +31 -0
  138. package/LICENSE.txt +96 -0
  139. package/README.md +5 -0
  140. package/Workshop/Document-global-actordemo-image-ai.txt +5 -0
  141. package/Workshop/Document-global-actordemo-login.txt +10 -0
  142. package/Workshop/Document-global-actordemo-site.txt +3 -0
  143. package/Workshop/Document-global-actordemo-start.txt +5 -0
  144. package/Workshop/Document-global-actordemo-the-architecture.txt +27 -0
  145. package/Workshop/Document-global-introduction-actor.txt +84 -0
  146. package/Workshop/Document-global-introduction-actorjs.txt +42 -0
  147. package/Workshop/Document-global-introduction-stack.txt +25 -0
  148. package/Workshop/Document-global-introduction-system-under-test.txt +102 -0
  149. package/Workshop/Document-global-introduction-test-case.txt +50 -0
  150. package/Workshop/Document-global-introduction-test-suite.txt +31 -0
  151. package/Workshop/Document-global-login-with-puppeter.txt +45 -0
  152. package/Workshop/Document-global-mock-with-http.txt +83 -0
  153. package/Workshop/Document-global-mock-with-icap.txt +94 -0
  154. package/Workshop/Document-global-prerequisites-actorJs.txt +18 -0
  155. package/Workshop/Document-global-prerequisites-actordemo.txt +15 -0
  156. package/Workshop/Document-global-trigger-with-http.txt +93 -0
  157. package/Workshop/Document-global-trigger-with-puppeter.txt +49 -0
  158. package/Workshop/Navigation-Workshop-actorjs-global.txt +86 -0
  159. package/npm-shrinkwrap.json +13 -0
  160. package/package.json +10 -0
@@ -0,0 +1,15 @@
1
+ # Test Environment Overview
2
+
3
+ ***`TBD`***
4
+
5
+ + [Navigation pane](navigation-pane)
6
+ + Tools
7
+ + Editors
8
+ + Addressing
9
+
10
+ From the [start](/start) page of ActorJs, the different parts of the Test Environment are reached through the [Navigation pane](navigation-pane) to the left in the browser window.
11
+
12
+
13
+
14
+
15
+
@@ -0,0 +1,51 @@
1
+ # **The Architecture**
2
+
3
+ [[ANCHOR={"id":"the-architecture-execution-abstractions","visible":true}]]
4
+ [[NOTE={"guid":"3ab223fa-e3b0-4ba0-be36-cb2e5743dab6"}]]
5
+ ## **Simplified class diagram**
6
+
7
+ Below we show the core classes for the implementation of the ActorJs execution engine, and who creates them.
8
+
9
+ ```node
10
+ Config(nodeWidth: 100, nodeHeight: 30, nodeWidthBetween: 25, nodeHeightBetween: 25, widthBias: 30, heightBias: 30, border: true, backgroundColor: default)
11
+
12
+ Nodes[, , ActorPart(; ; PaleGreen), Message(; ; PaleGreen), Decoder(; ; #FFFF66)]
13
+ Nodes[TestSuite, TestCase, Actor(; ; PaleGreen), Connection(; ; #FFFF66), Encoder(; ; #FFFF66)]
14
+ Nodes[Test Data, Verification Data, Address, Content, ConnectionWorker(; ; #FFFF66)]
15
+
16
+
17
+ Actor => ActorPart[, , , false]:
18
+ TestSuite => TestCase[, , , false]:
19
+ TestCase => Actor[, , , false]:
20
+ Actor => Message[, , , false]:
21
+ Actor => Connection[, right, left, false]:
22
+ Connection => ConnectionWorker[, bottom, , false]:
23
+ Connection => Decoder[, , , false]:
24
+ Connection => Encoder[, , , false]:
25
+ Actor => Test Data[, bottom, , false]:
26
+ Actor => Verification Data[, bottom, , false]:
27
+ Actor => Address[, , , false]:
28
+ Actor => Content[, , , false]:
29
+ ```
30
+
31
+
32
+ * **White boxes**: Created by ActorJs.
33
+ * **Green boxes**: Created by the users, using a base class from ActorJs.
34
+ * **Yellow boxes**: Usually created by ActorJs, but can also be created by the users.
35
+
36
+ See the education [[REF=, VIDEOS]] about how to create the different abstractions.
37
+
38
+ When executing a [[REF=, ABS_Test_Case]] or a [[REF=, ABS_Test_Suite]], the execution uses the following components (links to the implementation):
39
+ * [[REF=, CODE_Test_Suite]]
40
+ * [[REF=, CODE_Test_Case]]
41
+ * [[REF=, CODE_Test_Data]]
42
+ * [[REF=, CODE_Verification_Mandatory]]
43
+ * [[REF=, CODE_Verification_Optional]]
44
+ * [[REF=, CODE_Verification_Value]]
45
+ * [[REF=, CODE_Content]]
46
+ * [[REF=, CODE_Actor]]
47
+ * [[REF=, CODE_ActorPartPre]]
48
+ * [[REF=, CODE_ActorPartPost]]
49
+
50
+
51
+
@@ -0,0 +1,5 @@
1
+ # **The Development Environment**
2
+ ActorJs is a server that you run locally on your own computer. Simply download ActorJs from npm [@actorjs/actorjs](https://www.npmjs.com/package/@actorjs/actorjs) and run it as a web app in a browser. The results you produce in ActorJs are stored in your local [[REF=repos, ABS_Repo]]. ActorJs connects to the ActorJs cloud for services.
3
+
4
+ ![](/abs-images/images/Development-Environment.png)
5
+
@@ -0,0 +1,15 @@
1
+ # **The Test Environment**
2
+ The Test Environment has three purposes:
3
+ * Build and maintain [[REF=, ABS_Test_Case]]s.
4
+ * Execute [[REF=, ABS_Test_Case]]s in a development environment to speed up development.
5
+ * Perform Regression Tests in a CI to stay continuously updated on the current status of the [[REF=, ABS_System_To_Test]].
6
+
7
+ ## **Test Cases and Actors**
8
+ ActorJs simulates processes that allow you to trigger, mock, and intercept all kinds of signaling. You can replace nodes, processes, hardware, and more with [[REF=Actor, ABS_Actor]]s. An [[REF=Actor, ABS_Actor]] acts as a small piece of the node, process, hardware, or other instance that the [[REF=Actor, ABS_Actor]] is replacing.
9
+
10
+
11
+ ![](/abs-images/images/Test-Environment.png)
12
+
13
+ ## **The same Test Cases for development and regression**
14
+ ActorJs supports [[REF=Address separation, ABS_Addressing]], which means that the same [[REF=, ABS_Test_Case]] can run on a local machine together with a development version of the [[REF=, ABS_System_Under_Test]], with only one IP address. Alternatively, ActorJs can run the same [[REF=, ABS_Test_Case]] against an actual production version of the [[REF=, ABS_System_Under_Test]] with many different nodes/machines and an unlimited number of IP addresses and networks.
15
+
@@ -0,0 +1,35 @@
1
+ # **Think Ahead**
2
+ Staying in front of the pack requires a lot of soul-searching from a development organization. What questions should development be asking itself -- and answering? Here are a few.
3
+
4
+ #### **Is our test environment good enough, and how do we keep it that way?**
5
+ * **Is our test environment fully automated? Does it support push and pull -- if one developer pushes a test case, can a coworker simply pull that code and run the test case?**<br /> All manual configurations are error-prone, unpleasant to work with, and costly.
6
+ * **Does our test environment implement a full data separation strategy?**<br /> If not, test cases will not be flexible or maintainable. Example: a specific integer is stored in hundreds of test cases. Changing that integer in one means updating all affected test cases.
7
+ * **Does testing increase the implementation time required for our product? And does it feel like a necessary evil?**<br /> It doesn't have to hurt. A good test environment will help you speed up processes and make the work much more fun!
8
+ * **Are our test cases fast?**<br /> They have to be, or their cost will be higher than their returns.
9
+ * **Are managers and architects saying that a few seconds for a test case is fast enough?**<br /> Sure, it may sound fast, but let's do the math. A thousand test cases at three seconds per test case will take 50 minutes -- an eternity in a competitive development race. Even a test case with complex signalling to several surrounding systems should take a few milliseconds at most.
10
+
11
+ #### **What's our test strategy, and is it working?**
12
+ * **Sometimes, management says that the solution is to test everything.**<br /> From a mathematical perspective, this is simply not doable.
13
+ * **Is our organization reluctant to test?**<br /> This is understandable in a way. If a lot of test cases are built using the wrong abstractions, new requirements can produce significant costs for rebuilding test cases, and a lot of test cases will be discarded. With this in mind, it's no wonder that some hesitate to test.
14
+ * **Are we expecting the organization to verify as much as possible in every test case?**<br />This can lead to trouble. In an ideal world, one bug would make one test case fail, and it would be easy to find the problem. If one bug can make hundreds of test cases fail, it could send management following the CI into panic mode.
15
+
16
+ #### **Is our product truly built for testing?**
17
+ * **Is the build time of our product optimized?**<br /> Who hasn't heard the claim, "It builds fast enough"? Do you agree? Does everyone in management understand the cost and how it has the potential to slow down our work?
18
+ * **Is the installation automated, fast, and stable?**<br /> It must be, or problems will pile up, work will slow to a snail's pace, and costs will increase dramatically.
19
+ * **Do we have data separation when installing the product? In other words, can we install an infinite number of instances of the product with different configurations, different data, and different surrounding systems, with little effort?**
20
+ Flexibility is the key, and not being able to adapt quickly to different installation scenarios becomes expensive and tiresome. New test cases can force the organization to build new installation scripts.
21
+ * **Can we reduce our product -- can we install our multi-server system on a single computer?** If not, product development and test will slow down significantly, and it can be costly if several computers are needed for test. In the worst case, developers will not be able to test and testers will have to test in specially built labs. Talk about a snail's pace!
22
+ * **Can we change the product configuration live, without delay or restart?**<br /> Let's do some math again. At 10 seconds to restart the product when changing a configuration, and 100 test cases that need to be updated, the reconfiguration will cost 10 s * 100 = 1000 s. That's a loss of more than 16 minutes for just 100 test cases.
23
+ * **Can we decrease timeouts on the product to almost 0 seconds?**<br /> Example: If the timeout range for a function is 10 - 30 seconds, and when testing the function, the timeout is brought down to 10 seconds, then 100 test cases will test cost 10 s * 100 = 1000 s. That's another 16 minutes lost on just 100 test cases.
24
+
25
+ With CI running repeatedly throughout an entire working day, failing to address just one of these issues adds up to hours of lost time, every day. A company must ask itself whether it is willing to accept that cost, and how doing that will keep the company ahead of the competition.
26
+ It's also important to remember that asking these tough questions and finding answers is one way to retain the best development talent on the market. Happy developers make great products.
27
+
28
+ #### **The "illusion of health" or "disease insight"?**<br />
29
+ It's tempting to assume that all is well because build times seem short or timeouts appear reasonable. However, staying ahead means thinking ahead, all the time. Some will argue that "we sell products, not test cases or CI", but a product is only as good as its weakest testing.
30
+ It's also easy to believe that these thorny problems are too difficult to solve, and that the company can soldier on with its current strategies.
31
+ So what's the solution? Awareness doesn't mean having to give up. Above all, companies must continually scrutinize the test environment and CI, ask difficult questions, prioritize, and solve problems step by step. The remedies, tools, and expertise are out there to overcome testing challenges.
32
+
33
+
34
+ [[IE=Think ahead -- determine your strategy for speed and cost of development, test and maintenance of a product, and product quality, and get the right tools to make it happen!]]
35
+
@@ -0,0 +1 @@
1
+ # Thinking in Actors Unlimited
@@ -0,0 +1,2 @@
1
+ # What is a stack?
2
+ ## Please Edit
@@ -0,0 +1,52 @@
1
+ # **Why ActorJs?**
2
+
3
+ In ActorJs it is so simple to execute [[REF=, ABS_Test_Case]]s. Developers, testers, managers, executive officers...everyone can execute them. Our CEO does!
4
+
5
+ [[ANCHOR={"id":"fedb1e87-290a-48b1-b4ca-8dff91fd1a08","visible":true}]]
6
+ [[NOTE={"guid":"1ae50f7f-90c8-4779-9d97-59e20e799d94"}]]
7
+
8
+ ### **Simulators are very complex to use and difficult to automate**
9
+ Using simulators to isolate a [[REF=, ABS_System_Under_Test]] adds significant complexity to your environment. The simulators must not only be part of your environment; and they must be fully integrated into your environment. Issues that must be addressed include:
10
+ * **Environment:** the simulator must be part of your environment. When setting up a new lab, the simulator must be automatically installed and configured. All developers and testers must be able to use the simulator and it must be possible to automate the installation.
11
+ * **Version Control:** you must ensure continuous control of the simulator. When do you need to update it? Can the update be automated for all users? Can you use different versions of the simulator at the same time?
12
+ * **Stability:** will the simulator be stable or do you need to restart it often?
13
+ * **Cost:** do you have to buy a license for every instance of the simulator or for every user?
14
+
15
+ With ActorJs, everything will be integrated. Everything is stored in [[REF=, ABS_Repo]]s. When an update is completed, just push it to the repo, and it is available for everyone else.
16
+
17
+ In addition, it is unlikely that a simulator can help you with these issues:
18
+ * **New functions:** the simulator must be updated every time you need it to support new functions. This can be time-consuming and costly, and it can limit your flexibility.
19
+ * **Configuration:** it will probably be difficult to control the simulator from the [[REF=, ABS_Test_Case]]s.
20
+ * **Negative Testing:** most simulators will not allow you to do all the negative testing you need.
21
+ * **Timing:** most simulators will have problems with simulating timing problems.
22
+
23
+ With ActorJs, all these problems are very easy to solve. You have full control of all code. You implement [[REF=, ABS_Actor_State_Execution]] in the [[REF=, ABS_Actor]]s. And [[REF=, ABS_Test_Case]]s are 100 % data driven. A [[REF=, ABS_Test_Case]] chooses which [[REF=, ABS_Actor]]s to use and provides them with [[REF=, ABS_Test_Data]].
24
+
25
+ **`Conclusion: ActorJs is the clear winner over simulators!`**
26
+
27
+ [[ANCHOR={"id":"703f131c-868b-4dba-ae85-5ceb7af4552a","visible":true}]]
28
+ [[NOTE={"guid":"9f5bb34d-ebab-4949-9589-32c1329ab69a"}]]
29
+ ### **Mocked-up processes create a lot of extra work**
30
+ Mocked-up processes create a lot of problems that must be solved before the real testing can start:
31
+ 1) Start and Stop: these processes must be started and stopped. Will that be up to the test case, the test suite or a framework?
32
+ 2) If these processes crash, who will do the diagnostics and solve the problem?
33
+ 3) These processes need test data and addresses; who will give them this information?
34
+ 4) Will they do verification?
35
+ 5) Will they be reusable?
36
+
37
+ You will probably have to build your own test framwork.
38
+
39
+ **`Conclusion: ActorJs easily surpasses mocked-up systems!`**
40
+
41
+ [[ANCHOR={"id":"0f71bddf-3839-40bf-9501-50881293629d","visible":true}]]
42
+ [[NOTE={"guid":"3ab615c4-45a3-49f8-bf43-69cdac81c0df"}]]
43
+ ### **Real systems limit creativity**
44
+ Real systems present the same problems as simulators, but it is likely that they will be even more limited -- they probably do not have any remote control interfaces to control them.
45
+
46
+ **`Conclusion: In the development phase, ActorJs beats real systems, hands down!`**.
47
+
48
+ <br/>
49
+ <br/>
50
+ <br/>
51
+ <br/>
52
+
@@ -0,0 +1,182 @@
1
+ # Why ActorJs?
2
+
3
+ [[EMBED=a/a]]
4
+ [[NOTE={"guid":"4260461c-24b1-449e-b4dc-214ed848f61d"}]]
5
+
6
+ [ssssssssssssssssssss](#e8ed4041-576c-4a7c-b319-3e1087a17d7c)
7
+
8
+ [[ANCHOR={"id":"f549215f-aa53-4ad9-872c-55ba070208a2","visible":true}]]
9
+ [[NOTE={"guid":"58327f38-8f06-428a-9f41-1dbb6a331913"}]]
10
+
11
+ ## ActorJs is a javascript tool to build complex Test Cases and Load Cases
12
+ ActorJs is a tool to isolate a [System Under Test](system-under-tests). It supports unlimited number of actors working in a multi-threaded way. This makes it possible to isolate the [System Under Test](system-under-tests) in a very easy way independent on the number of protocols used by the System Under Test.
13
+
14
+ An [Actor](actors) is a piece of code that the [Test Case Execution Engine](test-case-execution-engine) executes in parallel or serial with other Actors dependent on the [Test Data](test-datas) of the [Test Case](test-cases). The Actors will be reused in a lot of Test Cases. They will be reused both in:
15
+ * **[Function Test](functions-tests)**
16
+ * **[Load Test](load-tests)**
17
+
18
+ [[NOTE={"guid":"1ae50f7f-90c8-4779-9d97-59e20e799d94"}]]
19
+
20
+ ### Simulators are very complex to use and hard to automate
21
+ When using simulators you add a lot of complexity to your environment. The simulator must be part of your environment and be totally integrated in you environment. Task that have to be solved:
22
+ * **Environment:** the simulator must be part of your environment. When setting up a new lab the simulator must automatically be installed and configured.
23
+ * **Version Control:** you must have control of the simulator. When do you need to update the simulator? Can the update be automated for all users?
24
+ * **Stability:** will the simulator be stable or do you need to restart it a lot of times?
25
+
26
+ With ActorJs every thing will be integrated. Every thing is stored in a source control repo. When a update is dome just push it to the repo, then it is available for everyone else.
27
+
28
+ There are a lot of issues that the simulator probably cannot help you with:
29
+ * **New functions:** the simulator must be updated every time you need it to support new functions. It can take a lot of time and cost a lot and it might limit you.
30
+ * **Configuration:** it will probably be hard to control the simulator from the Test Case.
31
+ * **Negative Testing:** most simulators will not allow you to do all negative testing you need.
32
+ * **Timing:** most simulators will have problems to simulate timing problems.
33
+
34
+ With ActorJs all these issues are very easy to solve. You have full control of all code. You will write Actors. Still Test Cases are 100% data driven. A Test Case chooses which Actors to use and provides them with Test Data.
35
+
36
+ **Conclusion: DO NOT USE SIMULATORS**
37
+
38
+ [[NOTE={"guid":"a9183201-58e4-413b-8ce5-558c64df53a1"}]]
39
+ ## Analyze to show the benefits with ActorJs
40
+
41
+ [[NOTE={"guid":"bef4c7c1-2142-4105-9ab1-87c138e231d7"}]]
42
+ ### Step 1 - Web Server as SUT
43
+ Easy to test, just get the site and verify that it is ok.```seq
44
+ Nodes[browser, SUT]
45
+ browser => SUT[http]: GET /www.site.com HTTP 1.1
46
+ SUT => browser[http]: 200 Ok
47
+ ```
48
+ Here is the implementation of the *run* state of the **browser**. The Actor type is [ActorOriginating](actor-originating).
49
+
50
+ ```javascript
51
+
52
+
53
+
54
+ *run() {
55
+ this.httpConnection.send(new HttpGetSiteRequest());
56
+ let response = yield this.httpConnection.receive();
57
+ VERIFY_VALUE(200, response.getStatusCode());
58
+ }
59
+
60
+ ```
61
+
62
+ [[NOTE={"guid":"b0f1871d-8a4c-4dfe-b12d-5e6be15fb828"}]]
63
+ ### Step 2 - Web Server depending on a database as SUT
64
+ Web servers usually depends on a database. The database will at least contain:
65
+ * configuration data
66
+ * business data```seq
67
+ Nodes[browser, SUT, DB]
68
+ browser => SUT[http]: GET /www.site.com HTTP 1.1
69
+ SUT <-> DB[sql]: configuration data
70
+ SUT <-> DB[sql]: business data
71
+ SUT => browser[http]: 200 Ok
72
+ ```
73
+
74
+ The Database is most often to be seen as being a part of the SUT and therefor we have to update the configuration data and/or the business data to be able to test the SUT.
75
+
76
+ ```seq
77
+ Nodes[Condition, browser, SUT, DB]
78
+ Condition => DB[sql]: new config values
79
+ DB => Condition[sql]: previus config values
80
+ browser => SUT[http]: GET /www.site.com HTTP 1.1
81
+ SUT <-> DB[sql]: configuration data
82
+ SUT <-> DB[sql]: business data
83
+ SUT => browser[http]: 200 Ok
84
+ Condition => DB[sql]: config restore
85
+ DB => Condition[sql]:
86
+ ```
87
+
88
+ Here is the implementation of the *runPre* state of the **Condition**. The Actor type is [ActorCondition](actor-condition). The Actor must store the previous values so it can be restored in the end of the Test Case.
89
+
90
+ ```javascript
91
+
92
+
93
+
94
+
95
+
96
+ *runPre() {
97
+ this.sqlConnection.send(new SqlQueryMessage(this.newValues));
98
+ let response = yield this.sqlConnection.receive();
99
+ VERIFY_VALUE('success', response.getResult());
100
+ this.previusValues = response.getValues();
101
+ }
102
+ ```
103
+
104
+ Here is the implementation of the *runPost* state of the **Condition**. The Actor type is [ActorCondition](actor-condition). The Actor will restore the database with its previous values.
105
+
106
+ ```javascript
107
+
108
+
109
+
110
+
111
+
112
+ *runPost() {
113
+ this.sqlConnection.send(new SqlQueryMessage(this.previusValues));
114
+ let response = yield this.sqlConnection.receive();
115
+ VERIFY_VALUE('success', response.getResult());
116
+ }
117
+ ```
118
+
119
+ [[NOTE={"guid":"1a04f41c-8809-493f-b62f-a6687bc620e3"}]]
120
+ ### Step 3 - Proxy as SUT for a web Server
121
+ When testing a proxy we also need to have terminating Actors to avoid simulators.```seq
122
+ Nodes[Condition, browser, SUT, DB, Webserver]
123
+ Condition => DB[sql]: new config values
124
+ DB => Condition[sql]: previus config values
125
+ browser => SUT[http]: GET /www.site.com HTTP 1.1
126
+ SUT -> DB[sql]: data 1
127
+ SUT -> DB[sql]: data n
128
+ SUT => Webserver[http]: GET /www.site.com HTTP 1.1
129
+ Webserver => SUT[http]: 200 Ok
130
+ SUT => browser[http]: 200 Ok
131
+ Condition => DB[sql]: config restore
132
+ DB => Condition[sql]:
133
+ ```
134
+
135
+ Here is the implementation of the *run* state of the **Webserver**. The Actor type is [ActorTerminating](actor-terminating).
136
+
137
+ ```javascript
138
+
139
+
140
+
141
+
142
+
143
+ *run() {
144
+ yield this.httpConnection.accept();
145
+ let request = yield this.httpConnection.receive();
146
+ this.httpConnection.send(new HttpOkResponse(Http.OK));
147
+ }
148
+ ```
149
+
150
+ ```seq
151
+ Nodes[CONDITION, browser, SUT, DB, HSS, Ext_Service]
152
+ CONDITION => DB[sql]: config set
153
+ browser => SUT[http]: GET /www.site.com HTTP 1.1
154
+ SUT -> DB[sql]: data 1
155
+ SUT -> DB[sql]: data n
156
+ SUT => HSS[diameter]: Cx
157
+ HSS => SUT[diameter]:
158
+ SUT => Ext_Service[http]: GET /data HTTP 1.1
159
+ Ext_Service => SUT[http]: 200 Ok
160
+ SUT => browser[http]: 200 Ok
161
+ CONDITION => DB[sql]: config restore
162
+ ```
163
+
164
+ ```seq
165
+ Nodes[CONDITION, browser, SUT, DB, HSS, Ext_Service, Ext_Service_2]
166
+ CONDITION => DB[sql]: config set
167
+ browser => SUT[http]: GET /www.site.com HTTP 1.1
168
+ SUT -> DB[sql]: data 1
169
+ SUT -> DB[sql]: data n
170
+ SUT => HSS[diameter]: Cx
171
+ HSS => SUT[diameter]:
172
+ SUT => Ext_Service[http]: GET /data HTTP 1.1
173
+ Ext_Service => SUT[http]: 500 Internal Server Error
174
+ SUT => Ext_Service_2[http]: GET /data HTTP 1.1
175
+ Ext_Service_2 => SUT[http]: 200 Ok
176
+ SUT => browser[http]: 200 Ok
177
+ CONDITION => DB[sql]: config restore
178
+ ```
179
+
180
+ [[ANCHOR={"id":"e8ed4041-576c-4a7c-b319-3e1087a17d7c","visible":true}]]
181
+ [[NOTE={"guid":"9a75e7ae-fe5e-4da2-b774-9f857ec494cb"}]]
182
+ ### Common Test Tools are too limited
@@ -0,0 +1,2 @@
1
+ # NEW DOCUMENT
2
+ ## Please Edit: ***`TO BE DONE !!!`***