PageRenderTime 52ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/report.tex

https://github.com/millertime-homework/Allion-Paper
LaTeX | 248 lines | 230 code | 15 blank | 3 comment | 0 complexity | 0bb1713647f2e661f94606c1e4a8a072 MD5 | raw file
  1. \documentclass{article}
  2. % For custom margins
  3. \usepackage{anysize}
  4. \marginsize{2cm}{2cm}{2cm}{2cm}
  5. \title{Company: Allion Test Labs\\
  6. Intern: Russell Miller\\
  7. Mentor: Chad Meyer\\
  8. Mentor Phone: 509-995-4444\\
  9. Mentor E-mail: chadmeyer@us.allion.com\\
  10. Discipline: Computer Science\\
  11. Internship Level: Junior Year\\
  12. \today}
  13. \date{}
  14. \begin{document}
  15. \maketitle
  16. \pagebreak
  17. % Description of the company and interns role in the company. Identify interns
  18. % supervisor and the department and/or division where they were employed.
  19. \section*{About Allion}
  20. Allion was established in 1991. Through custom test plans and automation, Allion
  21. offers engineering services for performance and compliance testing.
  22. The specialty of the lab in Beaverton is advanced Wi-Fi testing. For performance
  23. testing, there is an anechoic chamber and other equipment that allows isolation
  24. of signal. Using attenuation simulators, several use cases can be tested
  25. in-depth.
  26. \section*{My Role at Allion}
  27. Projects at Allion coincide with contracts from third parties. Often these
  28. projects involve testing a new product from those companies. I worked on a
  29. couple of those projects, but worked on side projects as well when we were
  30. between contracts. I developed automation for the attenuation equipment and
  31. wrote full tests that used that automation. My mentor Chad was extremely
  32. helpful, always willing to teach me about wireless technology and testing.\\
  33. \\
  34. Rather than having departments Allion is split into teams per project. When I
  35. first started my internship I started out helping analyze results from the last
  36. round of testing for the Nook Color, when it was still pre-release. When that
  37. project ended I did independent work until another testing contract started
  38. later on in my internship.
  39. \section*{The Projects I Participated In}
  40. \begin{itemize}
  41. \item New product testing for Barnes \& Noble's Nook Color
  42. \item Writing a Python library for the Azimuth Adept-N
  43. \item Writing a Python library for the Azimuth Ace
  44. \item Writing automated testing which employs the Adept-N and Ace
  45. \item Super top secret new product testing for a new startup company
  46. \item Super top secret new product testing for Amazon
  47. \end{itemize}
  48. \section*{Executive Summary}
  49. On the Nook Color, I was doing an investigation of the data we gathered,
  50. attempting to provide the value-add of knowing why certain tests failed.
  51. The utility and testing libraries I wrote involved doing research on the
  52. equipment's API, gathering requirements from my mentor and engineers on site,
  53. maintaining these libraries over the course of the internship, and writing
  54. documentation for engineers to allow them to run my scripts with ease.
  55. With the secret projects where we tested new products, I was able to write the
  56. test methods to meet the needs of the test plan we had provided to the company
  57. that was developing the new product. I wrote several scripts and ran them over
  58. a large number of iterations, as the test plan called for. There was a team of
  59. engineers using the scripts I wrote, so I also had to show them how it worked.\\
  60. \\
  61. The chief export of Allion is the ability to produce the tests outlined in a
  62. test plan, which is agreed upon by the company paying for the contract. On a
  63. regular basis, we keep the customer updated on completion of the test plan, and
  64. we were able to impress our customers with timely results and added value of
  65. debugging problematic scenarios. On one of our secret projects we were given the
  66. opportunity to add bug reports to their database, and I was able to benefit
  67. not only the customer but the face of Allion by paying attention to detail and
  68. displaying intuitive knowledge of the functionality of their device.\\
  69. \\
  70. The greatest personal achievement of mine was deploying the first release of the
  71. automation scripts I wrote. They controlled the attenuation equipment one of our
  72. engineers was trained to operate. Previously he spent much of his time running
  73. tests that had a lot of interaction with a computer application that changed
  74. signal attenuation throughout a test. Because of my work, he was able to simply
  75. configure a test, start it, and look at the results when it completed three or
  76. more hours later. He was extremely grateful and I
  77. felt like I had really made a difference for the first time in my Computer
  78. Science career. This made it a joy to provide him with new features and maintain
  79. these libraries and scripts later on. He was always very understanding when bugs
  80. were discovered, and offered great feedback when I had written patches.
  81. \section*{More About the Azimuth Libraries}
  82. As mentioned above, I was able to provide automation to one of our engineers
  83. that cut down on very tedious work. The development process, however, was an
  84. interesting one. When the idea was first presented to me I was simply told ``We
  85. think this can be done in Python. Figure it out.''\\
  86. \\
  87. A PDF came with the equipment that had a ``Programmer's Guide'' with a few
  88. commands that a \emph{programmer} can issue. I knew that all I needed to do was
  89. set the attenuation, and possibly check what it's currently set at. I found the
  90. commands that did this, but I had no idea how to issue them.\\
  91. \\
  92. I discovered that this API was designed for TCL, which is just another scripting
  93. language. I had never seen or used TCL before, but I kept at it and got these
  94. commands to work. I ended up writing simple scripts that could be called from
  95. the command line. This allowed us to connect to the control PC that's attached
  96. to the Azimuth equipment and run the necessary commands. I wrote the Python
  97. libraries around this concept.\\
  98. \\
  99. The way the network infrastructure is set up at Allion, combined with the
  100. libraries already being used in testing, it worked well to import the library
  101. I had written for attenuation control and write tests that controlled
  102. attenuation via my simple API. I wrote some simple scripts that demonstrated
  103. the fact that this actually worked in a reliable way and showed it to my mentor
  104. and some engineers around the shop. I talked to them more about how this could
  105. be used in future testing, and that's how the testing libraries were introduced
  106. to me.\\
  107. \\
  108. From there I learned how we loaded tests into a queue, and how I could write a
  109. compatible test script that could be loaded and automate the attenuation
  110. controls. A lot of work was involved, because things always seem to change once
  111. all of the pieces are working together in a test. But after a lot of
  112. communication and (sometimes frustrating) debugging, I had reliable test scripts
  113. written that are still being used to this day.
  114. \section*{More About Testing a New Product}
  115. Due to the top secret nature of the project I was the test developer for, I have
  116. to explain this with care. We wrote a test plan before we ever saw this device
  117. or even knew what it was supposed to do. In fact, throughout the project we
  118. barely ever discovered what its use cases would be. However, the device ran an
  119. SSH server and had a serial connection, needed wireless testing, and was
  120. expected to be compliant on a range of wireless access point manufacturers.\\
  121. \\
  122. To start I wrote up some mock scripts that simulated how the tests would
  123. run were the device simply a computer running Linux. These tests included
  124. putting the device into a suspend state, waking the device from a
  125. suspend state, and using pings to verify that the device is in the state it
  126. should be. Once I had worked out the kinks in developing these simple scripts
  127. with a Linux computer, the only thing that needed to change was how the state
  128. changes were implemented. Using SSH to connect would be the same, as would
  129. checking the state with pings.\\
  130. \\
  131. Because these scripts were ready to go before we ever saw the product, we were
  132. able to present results within the first day of the customer coming to our shop
  133. to present it to us. This got us off on the right foot in their eye, and opened
  134. a channel of communication between me and the company representative - since I
  135. was actively working with their device and finding out how things worked in
  136. order to run these tests.\\
  137. \\
  138. One of the biggest challenges of this project was constant change of
  139. requirements. They appreciated my hard work and my detailed reports, but they
  140. continually changed priority of what was being tested. For example, our test
  141. plans seem to always focus on performance and we never covered that with this
  142. project. We spent the majority of the effort on interoperability - which is
  143. basically testing compatibility with a very wide range of AP/Router models.\\
  144. \\
  145. The most significant example of a requirements change that took place several
  146. times was with a test where we were suspending the device and attempting to wake
  147. it up after a certain amount of time had passed. This can be tricky because the
  148. device isn't doing any communication while in a suspended state. Not only that,
  149. but the company had developed their own implementation of the wakeup signal.
  150. The scripts I wrote for this project went into a version-controlled repository,
  151. and the number of revisions that have been committed is well over 200 now.
  152. Each time the device was updated or test expectations changed, communication
  153. was key in getting future tests to run smoothly. Hundreds of emails were sent,
  154. there was a lot of interaction via their bug database, and multiple conference
  155. calls took place. I worked with a fantastic team of engineers that were running
  156. my scripts and reporting bugs, and many of the issues we ran into were solved
  157. only because we did it as a team.
  158. \section*{In Conclusion}
  159. The thing I learned most about during this internship is communication. Within a
  160. team, with a supervisor, or with a customer it is extremely important to
  161. communicate well. On the team level it is vital that everyone is
  162. on the same page. We had to work in stride without stepping on each other's
  163. toes. We used things like collaboration software to stay in sync with technical
  164. info such as who is running what test, how our equipment is configured, which
  165. wireless channel we're using, and what tests still need to be done. We help
  166. each other stay up to date on information about software updates and changes to
  167. the test methods. Sometimes setting up for a test or running a test doesn't
  168. quite work, and we help each other fix it.\\
  169. \\
  170. Communication with my mentor has been extremely rewarding. When I got here I
  171. knew nothing about wireless technology or how it is tested. I have learned so
  172. much from his demonstrations, and he does a great job of illustrating his points
  173. with dry erase pens on the windows of the labs. Once I feel like I've met the
  174. requirements of a test method, I run it by him again to double check and we talk
  175. about the results afterward. Many times doing so has allowed us to improve the
  176. test method so that we can provide even better results.\\
  177. \\
  178. When given the chance to talk directly to a customer about the tests or their
  179. product, I've practiced a very diplomatic reserve. There have been features and
  180. bugs that have frustrated me greatly and I have to simply observe and report.
  181. What I really want to do is tell them they're doing it wrong, but that would
  182. obviously not be constructive.\\
  183. \\
  184. Allion's scripts and libraries are written in Python. I had a growing passion
  185. for working with Python before I started this internship, but I did not have a
  186. very broad knowledge of the language. Throughout this internship I have been
  187. constantly learning new ways of implementing tests and writing Python packages.
  188. Russell, the senior software developer at the shop, has given me some excellent
  189. instruction. His passive yet encouraging feedback is always helpful. He doesn't
  190. ever come out and tell me I'm doing something wrong, but he's introduced a lot
  191. of new concepts to me. Mimicking his style has helped me grow, and I feel
  192. confident about the deployment and documentation of my work.\\
  193. \\
  194. The primary goal I set for myself was to learn about software development on a
  195. larger scale, and to learn how a software developer interacts with fellow
  196. developers and customers. The scale of our projects wasn't very large, but I
  197. have at least worked on some development within a team. The goal that I feel I
  198. am still pursuing is to do development of a software product for a customer. The
  199. development I did here was scripts that the engineers and I were running. The
  200. meta product that was delivered to the customer was a byproduct of those
  201. scripts. While I appreciate everything I've learned here, the experiences I've
  202. had, and the people I've gotten to work with, I still feel like there is much
  203. more for me to learn.\\
  204. \\
  205. As mentioned before, there are two main benefits that I think Allion gained
  206. from my work. The libraries I wrote and automation I developed will help with
  207. many, many projects down the line. I really hope that when I'm not around the
  208. code can be maintained without too much trouble. I've attempted to write as much
  209. documentation as I could to help with that. The other benefit is the testing we've
  210. been able to do for these projects. I've shown that I can get things working in
  211. a pinch and really impress the customer. More importantly, perhaps, is the
  212. effort I've given to communicating results to the customer. With the project I
  213. spent the most work on, I really developed a relationship with the company that
  214. allows good communication between our engineers and theirs. Our contract with
  215. that company has
  216. been extended multiple times, and while that definitely has to do with our
  217. management's abilities and a lot of really good engineers, I do feel that I
  218. played a part in that as well. I really began to feel this way when the
  219. representative from their company specifically requested that I continue to
  220. work on the project past one of the extension points.
  221. \section*{Buzz Words}
  222. The following is in addition to terminology associated with Linux and
  223. networking.
  224. \begin{itemize}
  225. \item DUT - Device Under Test
  226. \item AP - Access Point
  227. \item RVR - Rate vs. Range
  228. \item OTA - Over the Air
  229. \item Cops - Continuous Operations
  230. \item ND\&S - Network Detection \& Selection
  231. \item Cell Center/Middle/Edge
  232. \end{itemize}
  233. \end{document}